Survive kernel updates on a /boot this small
Some checks failed
build image / build (push) Has been cancelled
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:
@@ -573,6 +573,27 @@ M=$PWD modules` with `obj-m += snd-soc-wsa881x.o` and `snd-soc-wsa881x-objs :=
|
||||
wsa881x.o`), installed under `/lib/modules/$(uname -r)/extra/` and picked up
|
||||
by `depmod -a`, it autoloads on the SoundWire modalias at boot and the
|
||||
`Lenovo-YOGA-C630-13Q50` card registers, headphone-jack detection included.
|
||||
|
||||
Because the module lives outside the kernel package, it has to be rebuilt for
|
||||
every kernel, and the symptom of forgetting is unhelpful: the speakers simply
|
||||
go silent after a `dnf upgrade`, with nothing in the logs tying the two
|
||||
together. `overlay/usr/local/sbin/c630-wsa881x` does the rebuild — it fetches
|
||||
`wsa881x.c` at the matching upstream tag, builds it against `kernel-devel` and
|
||||
installs it — and `overlay/etc/kernel/install.d/96-c630-wsa881x.install` calls
|
||||
it on every `kernel-install add`. That hook always exits 0: `kernel-install`
|
||||
stops at the first plugin that fails, and a missing compiler costing you the
|
||||
speakers is a far better outcome than it costing you the `devicetree` line and
|
||||
therefore the machine. It needs `gcc`, `make`, `kernel-devel` and a network,
|
||||
none of which the minimal image installs, so on a fresh image run it by hand
|
||||
once:
|
||||
|
||||
```sh
|
||||
sudo dnf install -y gcc make kernel-devel
|
||||
sudo c630-wsa881x
|
||||
```
|
||||
|
||||
None of this is necessary once Fedora sets the config; see
|
||||
[drafts/fedora-wsa881x-request.md](drafts/fedora-wsa881x-request.md).
|
||||
The UCM profile has been in alsa-ucm-conf since 2020; `alsaucm` itself is in
|
||||
`alsa-ucm-utils`, so on the minimal image:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user