Dear Community,
Below are the steps that I was using for flashing to NVMe drive mounted to the carrier board of Jetson Xavier NX :
- Apply patches and cross-build the customized kernel :
I followed the instructions in the Developer Guide to apply my modification to official kernel and successfully built the Image, tegra194-p3668-0001-p3509-0000.dtb and nvgpu.ko for my custom carrier board.
Note : I haven’t known yet how to update the loadable kernel modules with Jetpack-5.0.2 so I configured them as built-in modules so that they were included in the new Image.
- Update the target BSP :
$ cp kernel_out/arch/arm64/boot/Image /workspace/Platforms/Nvidia-Jetson/Software/SDK_downloads/JetPack_5.0.2_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/kernel/
$ cp kernel_out/arch/arm64/boot/dts/nvidia/tegra194-p3668-0001-p3509-0000.dtb /workspace/Platforms/Nvidia-Jetson/Software/SDK_downloads/JetPack_5.0.2_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/kernel/dtb/
$ sudo cp kernel_out/drivers/gpu/nvgpu/nvgpu.ko /workspace/Platforms/Nvidia-Jetson/Software/SDK_downloads/JetPack_5.0.2_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/rootfs/usr/lib/modules/5.10.104-tegra/kernel/drivers/gpu/nvgpu/
- Create new system binaries :
$ cd /workspace/Platforms/Nvidia-Jetson/Software/SDK_downloads/JetPack_5.0.2_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra
$ sudo run apply_binaries.sh
- Generate new system image and flash to target board :
a. eMMC :
$ sudo ./flash.sh --no-flash jetson-xavier-nx-devkit-emmc mmcblk0p1
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1
The flashing to eMMC was successful, the board rebooted and I selected to boot from eMMC → I could see that custom drivers loaded.
b. NVMe :
$ sudo ./flash.sh --no-flash jetson-xavier-nx-devkit-emmc nvme0n1p1
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc nvme0n1p1
The flashing said successful, the board rebooted and I selected to boot from NVMe but the older custom system in NVMe still persisted (with older username and password). Of course no custom driver loaded.
I then used the following convenient script : $ sudo ./nvsdkmanager_flash.sh --storage nvme0n1p1, it also finished successfully, the board rebooted and I selected to boot from NVMe (there’s no eMMC anymore, which is the difference compared to using flash.sh command) → The system was updated but with default BSP and required intial setup for Ubuntu as well.
(No eMMC option in the Boot Manager Menu)
Could you help to point out what was the missing steps, please ?
Best Regards,
Khang