Survive kernel updates on a /boot this small
Some checks failed
build image / build (push) Has been cancelled

A dnf upgrade to 7.1.8 installed the kernel rpm cleanly, then ran /boot out
of space. dracut wrote no initramfs, and because kernel-install stops at the
first failing plugin, 95-c630-devicetree never ran either — leaving a boot
entry with neither an initrd nor a devicetree line, which on this machine can
never boot. dnf reported success and nothing retried.

A kernel costs ~336 MiB here: a 210 MiB hostonly=no initramfs, a 98 MiB
dtb-<kver> directory carrying every board's device tree, plus vmlinuz and
System.map. Three of those cannot fit 1 GiB, so /boot goes to 2 GiB and
installonly_limit drops to 2.

Also fixes the quieter half of the same trap. snd-soc-wsa881x lives outside
the kernel package, so the speakers go silent after any kernel update with
nothing in the logs to explain it. c630-wsa881x rebuilds it and
96-c630-wsa881x.install calls it on each kernel-install add — always exiting
0, since a plugin failure is precisely what caused the damage above.

grub.cfg gains the next_entry one-shot block that has been carried by hand all
along, so testing a kernel costs a power cycle rather than a rescue.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XgGF5wfxLDAybVnNz6eNQ
This commit is contained in:
2026-08-14 16:17:52 +03:00
parent b5c5218b81
commit 477d43aacd
7 changed files with 231 additions and 1 deletions

View File

@@ -34,7 +34,13 @@
# --- image geometry (MiB) -----------------------------------------------
: "${ESP_SIZE_MIB:=512}"
: "${BOOT_SIZE_MIB:=1024}"
# /boot has to hold whole kernels, and this machine's are fat: the initramfs is
# built hostonly=no (~210 MiB) and kernel-core's dtb directory carries every
# board's device tree (~98 MiB), so an installed kernel costs ~336 MiB. 1024
# fits only two with nothing to spare, and running out mid-update leaves an
# unbootable entry — see overlay/etc/dnf/libdnf5.conf.d/50-c630-installonly.conf.
: "${BOOT_SIZE_MIB:=2048}"
# Total image size. The root partition takes whatever is left, and grows to
# fill the target medium on first boot.