- With NVMe boot:
L4TLauncher: Attempting Direct Boot
L4T boot options
0: NVME primary kernel
1: primary kernel
- With USB boot:
L4TLauncher: Attempting Direct Boot
L4T boot options
0: USB kernel
1: primary kernel
- Change boot sequence: success
But like I say, both boot option mount NVMe for rootfs.
ubuntu@tegra-ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 16M 1 loop
sda 8:0 1 59.5G 0 disk
├─sda1 8:1 1 55G 0 part /media/ubuntu/7d793bf7-affe-43a3-9399-683
├─sda2 8:2 1 64M 0 part
├─sda3 8:3 1 448K 0 part
├─sda4 8:4 1 32M 0 part
├─sda5 8:5 1 64M 0 part
├─sda6 8:6 1 448K 0 part
├─sda7 8:7 1 32M 0 part
├─sda8 8:8 1 80M 0 part
├─sda9 8:9 1 512K 0 part
├─sda10 8:10 1 300M 0 part
├─sda11 8:11 1 64M 0 part
├─sda12 8:12 1 80M 0 part
├─sda13 8:13 1 512K 0 part
└─sda14 8:14 1 64M 0 part
zram0 251:0 0 275.9M 0 disk [SWAP]
zram1 251:1 0 275.9M 0 disk [SWAP]
zram2 251:2 0 275.9M 0 disk [SWAP]
zram3 251:3 0 275.9M 0 disk [SWAP]
zram4 251:4 0 275.9M 0 disk [SWAP]
zram5 251:5 0 275.9M 0 disk [SWAP]
nvme0n1 259:0 0 119.2G 0 disk
├─nvme0n1p1 259:1 0 118.5G 0 part /
├─nvme0n1p2 259:2 0 64M 0 part
├─nvme0n1p3 259:3 0 448K 0 part
├─nvme0n1p4 259:4 0 32M 0 part
├─nvme0n1p5 259:5 0 64M 0 part
├─nvme0n1p6 259:6 0 448K 0 part
├─nvme0n1p7 259:7 0 32M 0 part
├─nvme0n1p8 259:8 0 80M 0 part
├─nvme0n1p9 259:9 0 512K 0 part
├─nvme0n1p10 259:10 0 300M 0 part
├─nvme0n1p11 259:11 0 64M 0 part
├─nvme0n1p12 259:12 0 80M 0 part
├─nvme0n1p13 259:13 0 512K 0 part
└─nvme0n1p14 259:14 0 64M 0 part
=> Yes, when I modify something that would potentially corrupt the rootfs.
(can’t reach the Login Prompt or keep rebooting.)
I have no choice but re-flash all APP partition, or remove NVMe to use different rootfs.
Both take a lot of time.
I found the way to modify the rootfs target /boot/extlinux/extlinux.conf
.
- root=PARTUUID=ad43ec6f-6d79-4df0-b915-1c936b0e33ef
+ root=/dev/sda1
And could change it in demo image by modify flash.sh
elif [ "${target_rootdev}" == "internal" ] || \
[ "${target_rootdev}" == "external" ] || \
[[ "${rootfs_ab}" == 1 ]]; then
# For 'internal' and 'external' target root devices,
# or enabled ROOTFS_AB=1, always use the UUID stored in the file
# ${rootfsuuidfile} or ${rootfsuuidfile}_b if present.
# If this file is not present, then try to generate one.
_tmp_uuid="";
if [ "${target_rootdev}" == "external" ] || \
[ "${external_device}" -eq 1 ]; then
rootuuid_restore "_ext"
_tmp_uuid="${rootfsuuid_ext}";
else
rootuuid_restore ""
_tmp_uuid="${rootfsuuid}";
fi
if [ ${disk_enc_enable} -eq 1 ]; then
# The encrypted fs UUID of the rootdev.
if [ "${external_device}" -eq 1 ]; then
rootuuid_restore "_ext_enc"
_tmp_uuid="${rootfsuuid_ext_enc}";
bootpartuuid_restore "_ext"
rootfsuuid_enc="${rootfsuuid_ext_enc}"
rootfsuuid_b_enc="${rootfsuuid_b_ext_enc}"
# These variables are set in disk_encryption_helper.func
bootpartuuid="${bootpartuuid_ext}"
# These variables are set in disk_encryption_helper.func
bootpartuuid_b="${bootpartuuid_b_ext}"
else
rootuuid_restore "_enc";
_tmp_uuid="${rootfsuuid_enc}";
bootpartuuid_restore;
fi
cmdline+="root=UUID=${_tmp_uuid} rw rootwait rootfstype=ext4 "
else
cmdline+="root=PARTUUID=${_tmp_uuid} rw rootwait rootfstype=ext4 "
fi;
else
cmdline+="root=/dev/${target_rootdev} rw rootwait rootfstype=ext4 "
fi;