Following the OTA image-based instructions here, the final reboot failed after Jetson goes to recovery kernel.
Host machine: Ubuntu 18.04.6
Target: Jetson AGX Orin devkit
The ota_tools_R35.4.1_aarch64.tbz2 was downloaded and installed in host
The OTA update payload package was generated via sudo -E ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-orin-devkit R35-4 command
The ota_payload_package.tar.gz was copied to Jetson /ota directory
The Jetson devkit /boot/extlinux/extlinux.conf has both INITRD /boot/initrd and root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 statements
The ota_tools_R35.4.1_aarch64.tbz2 was installed in Jetson devkit
After successfully running sudo ./nv_ota_start.sh /ota/ota_payload_package.tar.gz command from ${WORKDIR}/Linux_for_Tegra/tools/ota_tools/version_upgrade directory in Jetson, got this message: Bootloader on non-current slot(B) is to be updated once device is rebooted
Rebooted Jetson and captured console logs.
Here are the last messages on console after which Jetson becomes unresponsive:
[ 12.080206] Run /init as init process
[ 12.096371] Root device found: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3
[ 29.139596] ERROR: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3 mount fail…
[ 42.454360] vdd-12v-sys: disabling
[ 42.458109] vdd-1v8-sys: disabling
[ 42.461852] vdd-3v3-ftdi: disabling
Hi KevinFFF,
Yes, I’m trying to perform OTA update on Jetson AGX Orin devkit from R35.4.1 to R35.4.1.
No I don’t have any external device connected to devkit.
Here is the command I used to generate OTA package on my host machine and capturing the logs: ~/nvidia/nvidia_sdk/JetPack_5.1.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra$ sudo -E ROOTFS_AB=1 bash -x ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-orin-devkit R35-4 2>&1 | tee generate_ota_2.log
I enabled bash -x from command line to capture the executed commands in the log file.
Here is the log file for generating OTA package: generate_ota_2.log (885.6 KB)
Do you have any customization for rootfs or update process on the devkit?
In addition, do you enable rootfs A/B before you perform image-based OTA update?
Please share the result of the following command on your board before update.
Hi KevinFFF,
There is no customization for rootfs nor for update process.
I did not enabled rootfs A/B before performing image-based OTA update. What is the procedure to enable rootfs A/B?
Right now the devkit is stuck on mounting rootfs and I do not have a log in console, hence can not run any command.
Should I reflash the devkit via sdkmanager?
So, that’s the cause about you could not boot up after OTA update since you use an OTA package with rootfs A/B enabled for a board with rootfs A/B disabled.
What we support is using OTA package with rootfs A/B enabled for a board with rootfs A/B enabled because the partition layout is different for rootfs A/B enabled/disabled.
Please run the following command to flash you board to enable rootfs A/B.
Hi KevinFFF,
After flashing Jetson devkit with ROOTFS_AB=1 and going through OTA image-base upgrade procedure, I was able to successfully upgrade the Jetson image, and switch between slots.
Thank you for your support.
Just have a follow up question. There is a mechanism in place for cases when the partition layout has been changed between different SDKs (for example from R32.7 to R35) to support OTA image-based upgrade.
Is there a way to enable ROOTFS_AB during OTA upgrade on Jetson AGX Orin module without flashing it at least once before trying OTA upgrade?
Sorry, this use case is not supported because the OTA payload and update tool is in rootfs(APP) partition so that the offset and size of APP can’t be changed even in OTA update with partition layout change.