NX DevKit Boot Process: First Impressions

Hello @gtj,
I have managed to use update-initramfs generated initrd on Xavier AGX by adding hook to copy xusb firmware: AGX thread . It works with root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX->XXXXXXXXXXXX and for unknown reason doesn’t work with root=/dev/nvme0n1p1. I haven’t tried with root=UUID=actual_uuid APPEND yet.

As for stock initrd from JetPack 4.4 DP, it has very strange commandline parsing in init script ( at AGX thread ):
There is this script (remove .log): init.log (5.7 KB)

62: rootdev="$(sed -ne 's/.*\broot=\/dev\/\([abcdefklmnps0-9]*\)\b.*/\1/p' < /proc/cmdline)"
63: if [ "${rootdev}" == "" ]; then
64: uuid_regex='[0-9a-f]\{8\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{12\}'
65: rootdev="$(sed -ne "s/.*\broot=\(PARTUUID=${uuid_regex}\)\b.*/\1/p" < /proc/cmdline)"
66:fi

First it search for rootdevice by name “/dev/*” and if it isn’t found, for one set by PARTUUID.
On devices flashed by JetPack first root=/dev/mmcblk0p1 is prepended by cboot to command line, so rootdevice set by

APPEND ${cbootargs} root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX->XXXXXXXXXXXX quiet

will be completely ignored. On line 62 rootdev will be set to “mmcblk0p1” from first “root=…” parameter and lines 64-65 will be skipped.
root=UUID=actual_uuid form is not parsed at all.

So, to change rootfs with APPEND in extlinux.conf now we need to patch init script in stock initrd or generate new initrd.
Or use systemd service method: https://github.com/jetsonhacks/rootOnNVMe