Upgrade from Jetson Linux 35.2.1 to 35.3 and AB partition swap Error

Hello guys,

I would really appreciate your help regarding the issue I am having with updating to a new minor release from 35.2 to 35.3 using the sudo apt dist-upgrade command from the documentation.

I am facing this:

WARNING: rootfs A/B is enabled, can not update using Debian OTA, quit.
dpkg: error processing archive /tmp/apt-dpkg-install-tWm26u/6-nvidia-l4t-core_35.3.1-20230319081403_arm64.deb (--unpack):
 new nvidia-l4t-core package pre-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 /tmp/apt-dpkg-install-tWm26u/6-nvidia-l4t-core_35.3.1-20230319081403_arm64.deb

This is the first time that I have been flashing the Jetson Linux 35.x. version and upgrading.
So far I have done with the 32.6. and 32.7 versions and there were no issues also with the AB update enabled. Is there something new here?

This is the command I have been using for flashing the device:

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml --external-only -S 30GiB --showlogs jetson-agx-xavier-devkit external

Also I tried to do the partition swap with this command:

sudo nvbootctrl set-active-boot-slot { partition No.}

and I get this message:

sudo nvbootctrl set-active-boot-slot 0
mount: /opt/nvidia/esp: can't find UUID=.
Error: check and mount esp partition failed.
Error: open fail errno = 2 reason = No such file or directory 
Error: write variable BootChainFwNext failed!

Also tried to disable the A/B but still get the above message.

When I do sudo mount /dev/nvme0n1p12 /opt/nvidia/esp the message disappears but the reboot does nothing, no partition swap.

When I used the command on the previous releases there were no problems.

Thank you!

Hi kalafatic99,

Are you using the devkit or custom board for Jetson AGX Xavier?

Do you make ROOTFS_AB for NVMe drive?

Could you help to run the following command now and share the result?

$sudo nvbootctrl -t rootfs dump-slots-info

How do you disable A/B partition feature?

Hello KevinFFF.

I am using the devkit.

The 32GB of internal memory on the AGX Xavier was not enough for me so I added a NVMe M.2 512GB Drive and partitioned that drive with AB.

When I run the command you wrote I get this:

mount: /opt/nvidia/esp: can't find UUID=.
Error: check and mount esp partition failed.
Error: read variable RootfsRedundancyLevel failed!
Error: invalid num_slots: return(-2)

Regarding the disableing of A/B. I maybe got something wrong. I found a command:
sudo nv_update_engine --disable-ab

I want to flash the AGX with the version 35.2 and using sudo apt dist-upgrade update it to 35.3. After that to create a Golden image of that updated version and use it for fleet update.

Thank you for the response.

Could you run this flow successfully?
Why you don’t just flash latest R35.3.1 and use it as your Golden image?

Hello Kevin FFF,

I cannot update to version 35.3. sudo apt dist-upgrade I get this error:

WARNING: rootfs A/B is enabled, can not update using Debian OTA, quit.
dpkg: error processing archive /tmp/apt-dpkg-install-tWm26u/6-nvidia-l4t-core_35.3.1-20230319081403_arm64.deb (--unpack):
 new nvidia-l4t-core package pre-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 /tmp/apt-dpkg-install-tWm26u/6-nvidia-l4t-core_35.3.1-20230319081403_arm64.deb

Also I did not create a Golden Image using the version 35 because of the above issues. That’s the next step.
I did it using the 32 version and had no problems.

For my use-case it’s a lot easier to update in terminal then to do the flashing process each time I decide to do a update + all the apps already installed.

Can you also please help with the questions above regarding the AB. I also want to be able to have a rollback solution in case something goes south.

Thank you

It seems the similar issue as another user.
We don’t support Debian update with rootfs_ab enabled.
You could refer to the following thread for the details.
Unified bootloader and rootfs A/B is enabled, disable Debian update - #6 by KevinFFF

Thank you KevinFFF for the respond.

It’s a bit strange because when I did the same thing ( updating from R32.6 to R32.7 ) I had no problems. The AGX was also flashed with A/B. Is Debian update with A/B enabled for older Jetpack versions maybe?

Is there maybe a “hack” to disable the block_deb_update()?
My idea would be to do the Debian update on the A partition, create a Golden image and deploy this same image to the B partition so that they would be 1:1. Does that make sense?

Also sudo nvbootctrl set-active-boot-slot { partition No.} why do I get an error when I try to switch between partitions? I had no problems on the older Jetpack versions.

Thank you

There should be the similar mechanism for JP4, just like another topic mentioned about block_deb_update().

Could you help to verify this with flashing the desired BSP package instead of upgrading from old release?

I don’t see the block_deb_update() in rootfs/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh or anywhere similar. Can you please give me a link to where this was mentioned for JP5?

How do you mean verify? The first thing I did after flashing the AGX with A/B was trying to swap from A to B partition. That was the first try as soon the system booted up with any app installation or anything. I got the error:

sudo nvbootctrl set-active-boot-slot 0
mount: /opt/nvidia/esp: can't find UUID=.
Error: check and mount esp partition failed.
Error: open fail errno = 2 reason = No such file or directory 
Error: write variable BootChainFwNext failed!

It’s in another script to check if rootfs_ab is enabled and it seems not the public source for JP5.

What I mean is to flash R35.3.1 directly with rootfs A/B enabled, and then use nvbootctrl to switch slot.
You could run the following command first to check current slot status.

$sudo nvbootctrl -t rootfs dump-slots-info

I ran the same command on versions R35.1 and R35.2 and now I flashed R35.3.1 on the device and got the same error. I am not sure what was your aim here?

# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64, DATE: Sun Mar 19 15:19:21 UTC 2023

by running: sudo nvbootctrl -t rootfs dump-slots-info

mount: /opt/nvidia/esp: can't find UUID=I[.
Error: check and mount esp partition failed.
Error: read variable RootfsRedundancyLevel failed!
Error: invalid num_slots: return(-2)

What am I doing wrong here?

I can see that two partitions were created but still cannot switch. Using the switch command I get the same error.

Thank you.

@KevinFFF

Can you please help me with the issue? I am not quite sure what I’m doing wrong here? Is the flashing process to the external SSD different then when doing the same thing one the older software versions like R32?
Asking becuase of this mount: /opt/nvidia/esp: can't find UUID=I[.

Thank you

What flash command did you use for flash the board with Rootfs_A/B enabled?

How do you check this? with lsblk command?

Hello,

I used this command for flashing the device. The same command I used for R32.
sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml --external-only -S 30GiB --showlogs jetson-agx-xavier-devkit external

I created arbitrary 2x 30GB partitions for A and B.

I used the lsblk command aslo when i go to the “disks” I can see two partitions with 30GB.

Do you mean that the following command would not work on your board after you run the above command to flash the board?

$sudo nvbootctrl -t rootfs dump-slots-info

After I run the flashing process for the R35…takes around 20mins to finish. The first thing after the system goes up I run that command and each time the same error. On R32 not. Goes fine.

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.
Thanks

Could you try using the following command to flash the board and provide the flash log for further check?

$sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml --external-only -S 30GiB --showlogs jetson-agx-xavier-devkit nvme0n1p1

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.