Nvidia A/B-Redundancy Update tool Version 2.2
Info: install bootloader to non-current slot is not supported.
Slots info:
Current version: 0.0.1
Capsule update status: 0
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0, status: normal
slot: 1, status: normal
What am I doing wrong?
Despite that I am not apptempting to update the non current slot, I am wondering how I should use it with an A/B redundancy? The idea would be to update the currently unused slot, and reboot to the updated slot after it.
From 5.0.2 to 5.0.2 or 5.0.2 to 5.1 I need to use the old method generated with build_l4t_bup.sh and apply it with
nv_update_engine --payload /bl_update_payload -i
When I try to update without -f i get the following message:
Error: unable to find kernel cmdline paramater **boot.ratchetvalues**
Fail to check rollback level
Writing to partitions failed.
OTA Blob update failed. Status: 3
/usr/sbin/nv_bootloader_payload_updater --no-dependent-partition failed.
Slot 0 update failed
Error: installing bootloader updates failed: 768
The boot.ratchetvalues commandline is actually missing in my kernel commandline. In which step of customizing my OS could I have lost it?
With -f it seems to work, but that updates to the current slot, I need it to be applied to the active slot due to A/B rootfs being updated after the bootloader.
I have a shellscript that installs the rootfs to the currently unused partition and afterwards will change the active boot slot. The nv_update_engine will update the current slot.
For the versions 5.1 the uefi capsule update will be required.
The issue was that the nv_update_engine still exists in 5.1 despite it not working anymore, as you guys locked the access to the QSPI Flash from userland. Thats why my initial try did not work.
When I am coming from 5.0.2 to 5.1 the nv_update_engine still works while in the old userland.
I have made tests and it seems that despite the updater is saying it is updating to slot 0 and failed, it is actually installing to slot 1 and doing what I need.
Not sure what the error about the boot.ratchetvalues should mean though?
So I’ve updated from 5.0.2 to 5.1 now with the build_l4t_bup.sh and nv_update_engine.
The update worked, it boots with the new bootloader now. Unfortunately nvbootctrl -t rootfs now tells me that A/B is not enabled anymore.
RootFS A/B is not enabled.
How do I need to generate the bup so that the A/B stays enabled?
Edit: That seems to be an error in the nvbootctl. Despite it telling me that A/B is not enabled I was able to switch back to my old installation with the old bootloader using “nvbootctl -t rootfs set-active-boot-slot 0”. Anyway, how to fix it?
Here is the log, it does not sound correct, even though it boots:
Have you referred to the following thread for the instruction of bootloader update with r35.2.1? Mark bootloader bootable - #7 by carolyuu
Please replace t234 with t194 for Xavier NX
The capsule update is only implemented in 5.1, 5.0.2 does not have the required efivars.
I need the tools from 5.0.2 to update to 5.1
When you update the userland to 5.1 while keeping the old bootloader it won’t work properly anymore. So the bootloader update has to be performed before the rootfs update.
Apt update is not an option as we customized the kernel and other stuff.
Anyway. It does not seem like we will have any 5.0.2 system we can not update with reflash. So we can leave it as it is. You might just want to find out what’s wrong for other customers.
Updating the bootloader from 5.1.1 to 5.1.1 did not work either. I need to do some further tests. I’ll open another topic for that though.