Fix install-breaking and live-boot bugs, verified on real hardware
All checks were successful
Mirror to GitHub / mirror (push) Successful in 3s
All checks were successful
Mirror to GitHub / mirror (push) Successful in 3s
Boot-critical (each confirmed with a real boot/install cycle, not just code review): - Live ISO's liveuser shell is zsh, but Hyprland autostart was written to .bash_profile (never runs) — moved to .zprofile, and switched to start-hyprland (Hyprland's own watchdog wrapper; raw `exec Hyprland` is no longer the recommended launch method). - copytoram (self-enables on most real hardware: non-optical boot + image < 4GiB + enough free RAM) unmounts /run/archiso/bootmnt, which unpackfs.conf and bos-copy-kernel both hardcoded as their source — broke the installer outright on real hardware, confirmed by forcing copytoram=y. Added a resolver step for unpackfs, and switched the kernel copy to /usr/lib/modules/$(uname -r)/vmlinuz (part of the live squashfs itself, unaffected by copytoram). - BIOS installs got no bootloader — post-install.sh only ever ran the UEFI grub-install path despite BOS shipping bios.syslinux. Added a BIOS branch with disk auto-detection. - @snapshots/@log/@cache were never real: iso/partition.conf's btrfsSubvolumes key isn't part of this Calamares version's partition module schema at all (same class of bug as the userShell fix below — silently ignored). Calamares only natively creates @ and @home. post-install.sh now creates the three subvolumes by hand after unpackfs, migrates existing /var/log + /var/cache content into them before mounting over, and adds the fstab entries — verified end to end on real hardware, including grub-btrfs generating bootable snapshot menu entries. The unmount step in the existing snapper create-config dance also gained retry + lazy-unmount fallback after a real chroot run hit a transient busy-mount race. - Default shell was bash instead of zsh post-install: users.conf's top-level `userShell` key isn't part of this Calamares version's users module schema either — the real key is nested (user.shell). - graphical-session.target ships RefuseManualStart=yes (systemd convention), so the earlier attempt to activate it from hyprland.lua silently failed and breadclipd (WantedBy=graphical-session.target) never started. Starts breadclipd.service directly instead. - /etc/os-release was never set (showed "Arch Linux"); live boot never had quiet/splash/plymouth wired in (raw kernel scroll the whole time) despite BOS already shipping a complete bread-logo+spinner plymouth theme for the installed system. Also: generalized build-local.sh's per-service skel baking (previously only breadd.service was hand-committed; breadbox-sync/breadmill/ breadclipd never shipped), added the four new bakery packages to BREAD_BINS, removed the redundant cliphist/fzf clipboard pipeline in favor of breadclip, mirrored fastfetch's bread-logo config into skel, and fixed a stale bos-update comment.
This commit is contained in:
parent
81f2f3545a
commit
a8f1592e75
24 changed files with 373 additions and 56 deletions
29
iso/airootfs/usr/local/bin/bos-resolve-airootfs
Normal file
29
iso/airootfs/usr/local/bin/bos-resolve-airootfs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
# Resolve the real location of the live squashfs before Calamares' unpackfs
|
||||
# module runs, and leave a stable symlink for it to unpack from.
|
||||
#
|
||||
# archiso's own initcpio hook unmounts /run/archiso/bootmnt once copytoram has
|
||||
# copied the image to a tmpfs (/run/archiso/copytoram/airootfs.sfs) — and
|
||||
# copytoram=auto self-enables on most real hardware (non-optical boot device,
|
||||
# image under 4 GiB, enough free RAM), not just when explicitly requested. A
|
||||
# Calamares unpackfs.conf source path hardcoded to /run/archiso/bootmnt/...
|
||||
# would then point at nothing. Check both locations here, in a real script,
|
||||
# and hand unpackfs.conf one fixed path that always resolves.
|
||||
set -uo pipefail
|
||||
|
||||
DEST="/run/archiso/resolved-airootfs.sfs"
|
||||
CANDIDATES=(
|
||||
"/run/archiso/copytoram/airootfs.sfs"
|
||||
"/run/archiso/bootmnt/arch/x86_64/airootfs.sfs"
|
||||
)
|
||||
|
||||
for c in "${CANDIDATES[@]}"; do
|
||||
if [ -f "$c" ]; then
|
||||
ln -sf "$c" "$DEST"
|
||||
echo "resolved live squashfs: $c -> $DEST"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
echo "ERROR: could not find the live squashfs in any known location (checked: ${CANDIDATES[*]})" >&2
|
||||
exit 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue