iso/calamares: run grub-install + update-grub after bootloader, and fix eggs' own boot-fix from silently going stale - #26
Open
cyryllo wants to merge 1 commit into
Conversation
…Sistemi#12, MTSistemi#20) The live-build (iso/) Calamares config stopped at the bootloader module, so neither the removable EFI fallback grub.cfg stub (MTSistemi#20, hits ext4 and btrfs alike) nor the btrfs kernel-extent corruption (MTSistemi#12) ever got fixed on an install produced from iso/ — the fix only existed as a standalone helper (scripts/fix-eggs-calamares-boot.py) targeting the separate eggs/penguins-eggs build pipeline, and that script itself was never invoked by any build or CI. - Add shellprocess@boot_reconfigure.conf: re-runs grub-install for both the normal NVRAM entry and --removable, then update-grub, and calls skillfish-fix-boot-extents first. - Ship skillfish-fix-boot-extents in iso/config/includes.chroot (previously only present under system/, which iso/ does not sync from). - Wire shellprocess@boot_reconfigure into settings.conf, right after bootloader. - scripts/build-iso.sh: run fix-eggs-calamares-boot.py before every eggs produce and abort the build if its own verify() step fails, so the eggs pipeline can't silently ship the same broken GRUB config again. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's broken
The
iso/live-build Calamares sequence stops atbootloader:Nothing re-runs
grub-install/update-grubafterwards, and nothing repairsthe kernel files
unpackfswrites. Two already-diagnosed bugs follow directlyfrom that gap:
exitboots normally; needs manual grub-install + update-grub) #20 (hits ext4 and btrfs alike) — withinstallEFIFallback: true,Calamares copies
shim/grubx64into the removable EFI path but not thegrub.cfgstub that belongs next to them. GRUB started from that path hasno working prefix and drops to
grub rescue>on first boot.unpackfswrites are missing theeofflag on their last extent (declared size isn't covered by the extentmap). GRUB reads the extent tree and stops there ("premature end of file");
Linux itself reads the same file fine, which is why it only shows at boot.
The fix for both already exists in this repo as
scripts/fix-eggs-calamares-boot.pyandsystem/usr/local/bin/skillfish-fix-boot-extents— but:
under
/etc/penguins-eggs.d/distros/*/calamares/modulesand the live/etc/calamares/moduleson the build machine). It never touchesiso/config/includes.chroot/etc/calamares/..., so an ISO built thedocumented way (
docs/BUILD.md,iso/build.sh, plain live-build) shipswith neither fix.
skillfish-fix-boot-extentslives undersystem/, whichiso/does notsync from — it was never actually shipped in a live-build ISO.
fix-eggs-calamares-boot.pyitself isn't invoked by anything — notscripts/build-iso.sh, not CI. It has to be remembered and run by handbefore every
eggs produce, and apenguins-eggspackage upgrade cansilently overwrite the very templates it patches (as already happened once
to
customize-partitions.js/show.qml, per the comments in that file).What this PR does
iso/config/includes.chroot/etc/calamares/modules/shellprocess@boot_reconfigure.conf:after
bootloader, runskillfish-fix-boot-extents, thengrub-installtwice (normal NVRAM entry +
--removable), thenupdate-grub. Contentmirrors the already-verified
RECONF_BODYinfix-eggs-calamares-boot.py.skillfish-fix-boot-extentsunderiso/config/includes.chroot/usr/local/bin/(copied from
system/,755) so it actually exists on a live-build install.shellprocess@boot_reconfigureintosettings.conf'sexecsequence,right after
bootloaderand beforeumount.scripts/build-iso.sh: runfix-eggs-calamares-boot.pybefore everyeggs produceand abort the build if its ownverify()fails, insteadof relying on someone remembering to run it by hand. This closes gap deps(website): bump astro from 5.18.2 to 6.4.4 in /website in the astro group across 1 directory #3
above for the eggs pipeline without touching the pipeline's logic itself.
How I tested this
I have not built or booted an ISO from
iso/with this change — no BC-250hardware or VM available in this environment. What I did verify:
bash -n scripts/build-iso.sh— syntax OK.shellprocess@boot_reconfigure.confcontent is byte-for-byte thesame script body already exercised and confirmed working in a VM per the
comments in
scripts/fix-eggs-calamares-boot.py("verificato in VM il10/08/2026") — I only relocated it to the module Calamares actually loads
for the
iso/pipeline, plus adjusted the sequence/settings wiring.skillfish-fix-boot-extentsis copied unmodified fromsystem/.This needs a real install test before merging — both an ext4 install and
a btrfs install, checking that the system boots both from the NVRAM entry and
from the removable EFI fallback path. I'm not in a position to do that BC-250
hardware test myself; flagging it explicitly rather than claiming it's
verified.
Fixes #12, Fixes #20 (pending the hardware test above).