Hi there,
My aim is to be able to be able to remotely update the rootfs which I believe is possible from the documentation:
https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/SoftwarePackagesAndTheUpdateMechanism.html#updating-jetson-linux-with-image-based-over-the-air-update
Specifically the section:
The OTA tool package can be used to create OTA payload package for … Updating the rootfs only
MyEquipment:
- Jetson NX carrier board
- Jetpack 5.0.2
- Required to boot from an external NVMe SSD
- Host computer Ubuntu 20.04
I followed workflow 4 in README_initrd_flash.txt to derive the following, to initially flash my NX:
sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1 \
-c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml \
-S 8GiB --showlogs \
jetson-xavier-nx-devkit-emmc external
I booted it up and went through the initial setup, so at this point I believe I have a jetson that would be capable of receiving OTA.
Now if we move to my build server I built a new rootfs image, which would be the payload to send OTA. So I tried this:
sudo ROOTFS_AB=1 BOARDID=3668 FAB=100 BOARDSKU=0001 ./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1 \
-S 8GiB \
-c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml \
--no-flash \
jetson-xavier-nx-devkit-emmc \
external
This completed successfully, but it’s here that I start to get stuck.
I tried running the following, assuming that the rootfs image was bootloader/system.img
sudo -E ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh -sr -f bootloader/system.img jetson-xavier-nx-devkit-emmc R32-7
Which gave the output:
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1;signed_img_dir=images-R35-ToT"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32i;rootdev=mmcblk0p1;signed_img_dir=images-R32i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32x-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R32x-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R35A-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R35A-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1;signed_img_dir=images-R35-ToT"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32i;rootdev=mmcblk0p1;signed_img_dir=images-R32i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32x-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R32x-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R35A-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R35A-R35i"
mount: /home/sr/jetson_setup/vc_mipi_nvidia/build/XavierNXSD_35.1.0/Linux_for_Tegra/R32x_R35-ToT_OTA/sysimg_tmp: wrong fs type, bad option, bad superblock on /dev/loop8, missing codepage or helper program, or other error.
Failed to mount /home/sr/jetson_setup/vc_mipi_nvidia/build/XavierNXSD_35.1.0/Linux_for_Tegra/bootloader/system.img.raw
but the error at the end suggests that I have the wrong file system type. Could you advise please on how to proceed?