I couldn’t answer, although it is just Ubuntu 18.04. It is distributed as the sample root filesystem, which is 100% non-NVIDIA product. Then, prior to using the flash software, the “
apply_binaries.sh” script is run with
sudo. What that does is add some first boot setup scripts and the NVIDIA hardware drivers. None of the “optional” packages, e.g., CUDA, are added. This lives in the host PC’s “
Linux_for_Tegra/rootfs/” directory, and is almost an exact match to the image which gets flashed.
The part which is not 100% is that when flash starts arguments to the flash software (on command line something like “
sudo ./flash.sh jetson-nano-devkit mmcblk1p1”) make edits to some of the “
rootfs/boot/” content. For example, it knows a dev kit uses a certain kernel and device tree, and adjustments to name that in the boot content is given.
I’ll suggest that NVIDIA might be able to provide more information on the sample rootfs, but that probably you have to understand the “
apply_binaries.sh” script first since it is the key to any Linux distribution actually working with hardware support (everything else is just ordinary Linux and GNU licensing). The hardware driver “magic” is in “
This is far from what you need, but if you were to directly unpack just the sample rootfs as root (it is available, just follow the L4T URL for your release), unpack with
sudo, and make a list of files and permissions (that’s a rather large database, but is simple to do with the “
find” command, and perhaps also “
xargs” if listing more than file name…I’ll make suggestions on commands if interested). Then create a log of running “
sudo ./apply_binaries.sh”, Finally, make another list of the files and permissions, and then a diff with the original list.
The reason I suggest like this is that some of the content is in the form of Ubuntu packages, and other content is not in a package. One has to separate out the scripted content from the package content in some cases. I haven’t looked at Yocto in a really long time, and was never proficient with it, but trying to make a recipe based on Ubuntu sounds painful. The key parts though (the ones which will make or break) would center on the NVIDIA content, and the content’s environment. Some of that is obvious, but in particular the Xorg X11 server must have that ABI for the GPU driver to load into it, and the same kernel with the same configuration would be required (or a configuration which adds features). Boot content from outside of the rootfs won’t matter, it’d just be the same content. Everything “Yocto” could be as you expect if that other content is considered.
One final thought: You’d also want to log one flash on command line to see which kernel and boot content is being picked at the last second. Example:
sudo ./flash.sh jetson-nano-devkit mmcblk1p1 2>&1 | tee log_flash.txt
Keep in mind that my example is for an SD-card model dev kit. An eMMC model would flash
mmcblk0p1 instead of
mmcblk1p1, and target would differ, e.g.,
I’ll let NVIDIA comment on actual construction of the “pure” Sample RootFS (it is an interesting question).