Normally, when one flashes, the flash software on the host PC has directory “Linux_for_Tegra/
”. This is almost entirely the “driver package”, which is what actually performs a flash. There is a subdirectory, “Linux_for_Tegra/rootfs/
”. This contains Ubuntu plus NVIDIA drivers. When a flash uses the default image, that image comes from the “rootfs/
”. This is almost entirely what makes up the operating system (there are some edits of boot parameters and the actual kernel and device tree, but pretty much everything in “rootfs/
” is what you see in a running system).
First boot setup has not been completed (normally) in “rootfs/
”. If, from “Linux_for_Tegra/
”, one were to run this:
sudo ./tools/l4t_create_default_user.sh
…then “rootfs/
” becomes modified to include first boot setup. Any flash from that point forward adds that first boot setup so it is no longer required. You’re installing a user before flash.
The SD card models though tend to have people using some pre-canned SD card. So that content does not matter. However, the “sudo ./tools/l4t_create_default_user.sh
” has no way to distinguish between a “rootfs/
” with a bunch of files, and that of an SD card rootfs which is mounted there on the host. If you were to mount the SD card partition to overlay the “rootfs/
”, and then run that command, it means the first boot setup is completed from the host PC on the SD card without the SD card having to complete this on the actual Nano.
The trick here is that in almost every case you need to make sure you are using the same L4T release in the flash software as you have in the SD card. If you were on a booted Nano, then you could find that release with:
head -n 1 /etc/nv_tegra_release
If your SD card rootfs partition were mounted over the “rootfs/
”, then only that content would show up (the original “rootfs/
” would again become available once the SD card is not mounted there). If you had your SD card mounted there, and you are in “Linux_for_Tegra/
” of the host PC, then this would tell you the SD card’s L4T release version:
head -n 1 rootfs/etc/nv_tegra_release
(and actually you could just cd
to wherever the SD card is mounted, then cd
to the etc/
directory, and run “head -n 1 nv_tegra_release
”)
The point is to install the command line flash software (or you could install via JetPack/SDK Manager, it all adds the same content, but command line is more flexible with host PC requirements). Then find the SD card’s rootfs, and make sure it mounts over the flash software’s rootfs. Then run the command for first boot account setup, followed by unmounting (we don’t want to corrupt our new work with a bad removal of a mounted filesystem).
Do you have an SD card reader on your Linux host PC? Incidentally, this is actually one place a VM won’t be a problem (so long as it sees the SD card). Do you have flash software already installed on the Linux PC?