confused with descriptions in documentation

in page 61 in Tegra_Linux_Driver_Package_Development_Guide.pdf there is a section
"
Flashing U-Boot Full L4T Image
To flash U-Boot and select the script to mount the root filesystem from internal eMMC
• Select a boot configuration file that causes the kernel to mount the root filesystem from internal eMMC:
$ sudo ./flash.sh mmcblk0p1
"
But doesn’t above command flash filesystem too ? what is the meaning of “u-boot full l4t image”

Than, in page 62:
"Flashing U-Boot Only
To flash the full L4T image to the reference platform see Flashing U-Boot Full L4T Image above. To flash a new
version of U-Boot, perform the following:
To flash the new U-Boot
• Execute the following command on Jetson TX1:
sudo ./flash.sh –k EBT <platform> mmcblk0p1 • Execute the following command on Jetson TX2: [b] sudo ./flash.sh -k kernel mmcblk0p1[/b]
"

But doesn’t above command save the kernel, and not only u-boot as the title of section shows ?

Thanks,
ran

Hi ranchu,

Could you explain what did you mean “save the kernel”? There commands would update the image and u-boot on your device.

The command here could be more precise if we use terms as “Flashing Full L4T Image including U-boot”.

Hello,

Got it!
I think you better change the teminology as you suggested in next version of this documents.
It’s a bit confusing.

Thank you,
ran

I got another confusion with the following text:
"
Copying the Root Filesystem
For external media, you must copy the root filesystem to the device after running the flash.sh command. Then
you aach the device to the target system. This is required because the flash.sh script adds the required files to
the root filesystem directory on the host when it runs."

Is it that only USB is “external media” (while both emmc and SD card are treated as internal storage) ?
Doesn’t flash.sh copy the filesystem from host to target ?
Why sd card is not external, does it require cp command in addition to flash.sh

Thanks,
ran

Short answer: Flash has no information on your SD card and leaves it up to you to add that content on the card. If brave, then read on (or if you want to understand why changes to extlinux.conf don’t always do what you expect).

A lot has changed between boot configuration of earlier releases and later releases, so this is just a general comment and might need changes for a specific release.

When U-Boot loads it searches for a partition with extlinux.conf in the proper place (macros can imply a search order and fallback to the partition of the first extlinux.conf it finds). If you flash and name mmcblk0p1 (eMMC partition 1), then the configuration added by flash goes there. If you flash and specify mmcblk1p1 (SD card partition 1), then the bootloader will expect an SD card to have extlinux.conf in the proper place (notice that I did not say “added there”…just “expect”). The location of extlinux.conf does not determine where the rootfs is found, but it does contain the pointer to the location (there will be content such as “root=/dev/mmcblk0p1”). Naming eMMC in the command line flash tells where extlinux.conf will be added…naming SD card in the command line tells where you will need to add extlinux.conf.

Because of changes from older releases to newer releases in how boot is treated extlinux.conf may not contain all of the functionality it previously had, but it does still search for extlinux.conf (it’s just that part of extlinux.conf content may now be ignored and the device tree “chosen” key content would replace part of the extlinux.conf content). Flashing only adds content to the eMMC. Should that content point to the SD card, then boot redirects to SD upon reading extlinux.conf. If during flash you name the SD card instead, then not even the boot content gets written to SD, that is entirely up to you (there will be content changes to the device tree on newer releases naming the SD card).

You should plan on adding the root file system to the SD card yourself. SD is removable media, and thus is external, not internal. Depending on boot options during flash the “/boot” of SD might not need to exist (and probably shouldn’t exist if you put configuration on eMMC even though rootfs goes on SD).

In earlier releases U-Boot would pass along kernel arguments to the Linux kernel via the APPEND key/value pair in extlinux.conf. To some extent this is still true, but if you were to compare the defaults in extlinux.conf of older releases versus newer releases you will find newer releases have a much shorter APPEND key/value pair. What you don’t see is now in the device tree in the “chosen” entry. The reason for this is that newer boot methods require passing some of this information on to earlier boot stages, e.g., CBOOT (and CBOOT or earlier will have no ability to read the ext4 file system). U-Boot does see these entries, but it is because CBOOT passes it on to U-Boot in the same way U-Boot passes arguments on to Linux. However, CBOOT may edit some of those values before passing them on.

If you modify your APPEND content of extlinux.conf and it doesn’t do what you expect, then consider you might need to instead do a device tree edit.

If CBOOT understood ext4 I’d be quite happy.

Thank you for the detailed answer.
It is very much appreciated!