**Confirmed successful A/B kernel upgrade on Raspberry Pi 3B+ with a
manual systemd 259 workaround**

I can confirm a successful A/B kernel upgrade on a Raspberry Pi 3 Model
B Plus running Ubuntu 26.04.1 LTS (arm64), using a manual workaround for
the reboot argument incompatibility described in this bug report.

### Test environment

- Hardware: Raspberry Pi 3 Model B Plus Rev 1.3
- OS: Ubuntu 26.04.1 LTS (resolute), arm64
- `piboot-try`: `1.1ubuntu0.1`
- `systemd`: `259.9-0ubuntu0.1`
- Previous kernel: `7.0.0-1017-raspi`
- New kernel: `7.0.0-1020-raspi` (`linux-image-raspi 7.0.0-1020.20`)
- Boot medium: SD card, 505 MB FAT boot partition

The installed `/usr/share/flash-kernel/functions-piboot` still contains
the problematic invocation at line 411:

```sh
reboot "$boot_partition tryboot"
```

### Initial state

Following the kernel upgrade:

```text
Running kernel: 7.0.0-1017-raspi
current/state: good
new/state:     unknown
old/:         absent

piboot-try-reboot.service:   masked
piboot-try-validate.service: enabled
```

The boot configuration contained:

```ini
# autoboot.txt
[all]
tryboot_a_b=1
```

```ini
# config.txt
[all]
os_prefix=current/

[tryboot]
os_prefix=new/
```

The bootloader reported:

```text
tryboot:   0
partition: 0
```

`piboot-try --test` returned exit status 0, confirming that untested
boot assets were available.

### Workaround performed

The automatic `piboot-try-reboot.service` was masked to avoid the
incompatible reboot invocation.

After backing up the boot files, the following operation was performed:

```sh
sudo sh -c '
set -e

test "$(cat /boot/firmware/current/state)" = good
test "$(cat /boot/firmware/new/state)" = unknown
test "$(systemctl is-enabled piboot-try-reboot.service)" = masked

printf "trying\n" > /boot/firmware/new/state
sync

systemctl reboot --reboot-argument="0 tryboot"
'
```

The Raspberry Pi successfully booted the new kernel, and the standard
Ubuntu `piboot-try-validate.service` completed the promotion of the new
boot assets.

### Observed result

After reconnecting via SSH:

```text
$ uname -r
7.0.0-1020-raspi
```

The journal contained:

```text
Nov 01 11:47:09 ipfs3 systemd[1]:
Starting piboot-try-validate.service ...

Nov 01 11:47:11 ipfs3 piboot-try[910]:
Switched new boot assets to current successfully

Nov 01 11:47:11 ipfs3 systemd[1]:
Finished piboot-try-validate.service ...
```

Final verification:

```text
Running kernel: 7.0.0-1020-raspi

piboot-try-reboot.service:   masked
piboot-try-validate.service: enabled

current/state: good
new/:         absent
old/state:    good

systemctl --failed:
0 failed units
```

### Conclusion

This test confirms that a complete A/B kernel upgrade, including
successful validation and promotion of boot assets, is possible on a
Raspberry Pi 3B+ under systemd 259.9 when the incompatible reboot
invocation is bypassed.

The second issue described in this report, involving failure to boot
from the `new/` slot even with an explicit tryboot request, **was not
reproduced on this Pi 3B+**. This does not rule out that issue on the
originally reported Compute Module 4 hardware.

The test does not constitute a fix for the packaged `piboot-try`
implementation. Version `1.1ubuntu0.1` still contains the incompatible
invocation, and the automatic reboot service remains masked on this
system.

I hope these results help distinguish the systemd reboot-argument
incompatibility from potentially hardware- or firmware-specific problems
with the A/B boot mechanism.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2167775

Title:
  Ubuntu 26.04 on Raspberry Pi CM4: A/B kernel updates never apply

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/piboot-try/+bug/2167775/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to