Why do I need to have a rootfs when flashing to boot from microSD?

I’m flashing a Jetson using sudo ./flash.sh jetson-xavier mmcblk1p1, yet the default rootfs ./Linux_for_Tegra/rootfs has to have a kernel image etc, although the image I’m flashing on the microSD card beforehand has a complete file system with the correct kernel image and so on… so from my understanding it seems that I have to provide something that’s not being used after all, or am I missing something?

Hi,

Sorry, not sure what you are trying to ask. What is “something that’s not being used after all” ?

I have a rootfs which I flashed to microSD card, it has everything it needs (from Linux_for_Tegra/rootfs), then I tell the Jetson it should boot from that microSD card (mmcblk1p1), but to flash the Jetson with flash.sh I have to have a kernel image in Linux_for_Tegra/rootfs/boot plus some other files (extlinux.conf probably, don’t remember), but these files are already on mmcblk1p1 (/boot/Image, …).

After I finished flashing and booting from mmcblk1p1, I can mount mmcblk1p0 (internal flash) to e.g./mnt/internal_flash and see the boot directory, I can delete it and the Jetson can still boot. So, during flashing, why does Linux_for_Tegra/rootfs/boot/Image etc. have to be present…? Linux_for_Tegra/rootfs/boot/Image and sdcard:/boot/Image are the same file.

Hi,

Jetson AGX by default can only mount rootfs from sd. Not able to boot from sd. Boot from sd means it loads kernel from sd.

If you dump out the serial console log, you will understand what I said here.

no not really, I don’t understand why the kernel image has to be there twice

  1. host:./Linux_for_Tegra/rootfs/boot/Image
  2. sdcard:/boot/Image

when I do sudo ./flash.sh jetson-xavier mmcblk0p1 (mmcblk0p1) then everything from ./Linux_for_Tegra/rootfs/ gets flashed to the internal flash on the Jetson and I can run it without an SD card, but when I do sudo ./flash.sh jetson-xavier mmcblk1p1 (mmcblk1p1), then I have to manually copy ./Linux_for_Tegra/rootfs/ to the SD card (mmcblk1p1) and ./Linux_for_Tegra/rootfs/boot/ gets copied to internal flash (mmcblk0p1), but I then can delete the boot directory from internal flash and the Jetson is still working

point 4 in below post.

If you are talking about why the /boot/Image on emmc could be deleted, that is because we have a backup location/partition to load kernel image.

Again, dumping the serial console log can show that.

I know what Point 4 is telling me and I understand it.

If you are talking about why the /boot/Image on emmc could be deleted, that is because we have a backup location/partition to load kernel image.

that is only part of what I’m asking. What I’m really asking is in the title.
I’m manually copying the complete rootfs to my external SD card, yet when I flash the Jetson, flash.sh will fail if there is no Image in Linux_for_Tegra/rootfs/boot, although I manually copied it to the SD card.

If you’re saying .Linux_for_Tegra/rootfs/boot/Image has to be present to use for the backup location/partition then that is probably the answer to my question

Hi,

Your question is already answered by point 4. Flash.sh is not able to know there is a file existing in your sdcard. All the thing it tries to do is flash the system image to mmcbkl0p1.

And flash process requires rootfs to have necessary data. That is why it failed.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.