Rebuild boot images the Plymouth migration left stale
1784917531 gated its UKI rebuild on initramfs_async=0 being present in the Limine config, but omarchy-settings ships omarchy-defaults.conf with that parameter already in it. Any machine that installed the package and ran the migration in the same update matched the config the package had just written, skipped the rebuild, and kept booting an image baked before the config existed — without initramfs_async=0, so encrypted boots still fell back to an unthemed text LUKS prompt. Compare the booted command line against the configured one and rebuild when they disagree. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4727bad5eb
commit
2fa490dc96
@@ -0,0 +1,35 @@
|
||||
echo "Rebuild the boot image when it predates the Limine kernel command line"
|
||||
|
||||
# 1784917531 gated its rebuild on initramfs_async=0 being present in the Limine
|
||||
# config, but omarchy-settings ships omarchy-defaults.conf with that parameter
|
||||
# already in it. On a machine that installed the package and ran the migration
|
||||
# in the same update, the guard matched the config the package had just
|
||||
# written, skipped the rebuild, and left a boot image baked before the config
|
||||
# landed. Such a machine boots without any of omarchy-defaults.conf's command
|
||||
# line — including initramfs_async=0, so Plymouth still loses the LUKS prompt.
|
||||
|
||||
defaults_conf="${OMARCHY_LIMINE_DEFAULTS_CONF:-/etc/limine-entry-tool.d/omarchy-defaults.conf}"
|
||||
running_cmdline="${OMARCHY_RUNNING_CMDLINE:-/proc/cmdline}"
|
||||
rebuild_marker="${OMARCHY_LIMINE_REBUILD_MARKER:-/var/lib/omarchy/migrations/1786482992}"
|
||||
|
||||
omarchy-cmd-present limine-mkinitcpio || exit 0
|
||||
[[ -f $defaults_conf && -r $running_cmdline ]] || exit 0
|
||||
|
||||
# The running kernel keeps its old command line until reboot, so a marker
|
||||
# records the machine-wide rebuild instead: another user's migration must not
|
||||
# repeat it before then, while a missing marker still retries an interrupted
|
||||
# rebuild.
|
||||
[[ ! -e $rebuild_marker ]] || exit 0
|
||||
|
||||
booted=$(<"$running_cmdline")
|
||||
missing=()
|
||||
|
||||
for param in $(sed -n 's/^KERNEL_CMDLINE\[default\]+="\(.*\)"[[:space:]]*$/\1/p' "$defaults_conf"); do
|
||||
[[ " $booted " == *" $param "* ]] || missing+=("$param")
|
||||
done
|
||||
|
||||
(( ${#missing[@]} )) || exit 0
|
||||
|
||||
echo "The booted kernel is missing ${missing[*]}; rebuilding the boot image"
|
||||
sudo limine-mkinitcpio
|
||||
sudo install -Dm644 /dev/null "$rebuild_marker"
|
||||
Reference in New Issue
Block a user