All checks were successful
build image / build (push) Successful in 39m19s
Simulating an upgrade — running kernel-core's %posttrans command by hand — turned up two faults that had nothing to do with the full /boot, and would have broken every future kernel install on their own. 95-c630-devicetree trusted $KERNEL_INSTALL_BOOT_ROOT. `kernel-install inspect` reports "Layout: other, Boot Root: /boot/efi" here, because the ESP is all it recognises, while Fedora's 20-grub.install writes BLS entries to /boot/loader/entries regardless. So the hook looked for the device tree on the ESP, did not find it, and skipped the patch — leaving an entry with no devicetree line, which on this machine cannot boot. Paths in a BLS entry are relative to the filesystem holding the entry, so the only correct boot root is the one carrying both loader/entries and dtb-<kver>. Search for that instead. dracut-config-rescue sets dracut_rescue_image=yes, so each install also built a second ~210 MiB initramfs, which is what refilled /boot straight after it was cleared. That image cannot boot this machine either: the rescue entry is <machine-id>-0-rescue.conf, carrying no kernel version, so the devicetree hook never matches it. Turned off. Verified by rerunning the simulation: both kernels now have a devicetree line and a present initrd, no rescue image is generated, snd-soc-wsa881x is rebuilt automatically, and /boot holds at 72%. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XgGF5wfxLDAybVnNz6eNQ
59 lines
3.1 KiB
Plaintext
59 lines
3.1 KiB
Plaintext
# The image is built on a machine that is nothing like a C630, so the initramfs
|
|
# must be generic — a host-only initramfs would contain the builder's drivers.
|
|
hostonly="no"
|
|
hostonly_cmdline="no"
|
|
|
|
# UFS is the C630's only internal storage and the rootfs lives on it, so the
|
|
# controller and PHY drivers have to be in the initramfs, not modules loaded
|
|
# later from a filesystem we cannot yet read.
|
|
add_drivers+=" ufshcd-core ufshcd-pltfrm ufs-qcom phy-qcom-qmp-ufs "
|
|
|
|
# Needed before the display comes up, and cheap to include.
|
|
add_drivers+=" nvmem_qfprom qcom_scm rtc-pm8xxx "
|
|
|
|
# msm_dpu probes about six seconds in — while the initramfs is still the root
|
|
# filesystem, so anything under /usr/lib/firmware on the real root is not yet
|
|
# reachable. It asks for the Adreno 630 firmware, does not find it, and does not
|
|
# come back to try again:
|
|
#
|
|
# msm_dpu ae01000.display-controller: Direct firmware load for
|
|
# qcom/a630_sqe.fw failed with error -2
|
|
#
|
|
# The files are installed — they are simply not visible that early. A few tens
|
|
# of kilobytes in the initramfs fixes it. The model-signed zap shader is a
|
|
# separate problem; see docs/firmware.md.
|
|
install_items+=" /usr/lib/firmware/qcom/a630_sqe.fw.xz /usr/lib/firmware/qcom/a630_gmu.bin.xz /usr/lib/firmware/qcom/sdm845/a630_zap.mbn.xz "
|
|
|
|
# The DSPs lose the same race, and cannot be fixed the same way. qcom_q6v5_pas
|
|
# auto-boots the ADSP, CDSP and SLPI the moment it probes; if that happens in
|
|
# the initramfs the per-model firmware on the real root is not there yet:
|
|
#
|
|
# remoteproc remoteproc0: Direct firmware load for
|
|
# qcom/sdm850/LENOVO/81JL/qcadsp850.mbn failed with error -2
|
|
#
|
|
# and, as with the GPU, nothing retries. The ADSP hosts the whole audio path,
|
|
# so the result is a machine with no sound card at all — the sound driver sits
|
|
# in deferred probe reporting "error getting cpu dai name", which says nothing
|
|
# about firmware and sends you looking in the wrong place.
|
|
#
|
|
# Putting these blobs in the initramfs is not an option: they are ~20 MiB, and
|
|
# unlike the Adreno firmware they are not in any package — they are extracted
|
|
# from Windows by c630-firmware, so at build time they may not exist. Keeping
|
|
# the driver out of the initramfs instead means it loads after the switch to
|
|
# the real root, where the firmware is plainly visible. Nothing needs a DSP to
|
|
# get that far.
|
|
#
|
|
# The modem driver goes too. It is not needed early either, and leaving it out
|
|
# keeps it from crash-looping (see docs/firmware.md) before the rmtfs drop-in
|
|
# that tames it has had a chance to start.
|
|
omit_drivers+=" qcom_q6v5_pas qcom_q6v5_mss "
|
|
|
|
# No rescue image. dracut-config-rescue sets dracut_rescue_image=yes, so every
|
|
# kernel install builds a second ~210 MiB initramfs — on a /boot this size that
|
|
# is most of the partition, and it is what refills it after a cleanup. The
|
|
# image it produces cannot boot this machine anyway: the rescue entry is
|
|
# written as <machine-id>-0-rescue.conf, which does not carry the kernel
|
|
# version, so 95-c630-devicetree never matches it and it gets no devicetree
|
|
# line. A 210 MiB entry that is guaranteed not to boot is worse than no entry.
|
|
dracut_rescue_image="no"
|