Unpack the initramfs synchronously so Plymouth survives early boot

Kernel 7.1 unpacks the initramfs asynchronously, which races /init: the
early /proc, /sys, /dev, and /run mounts fail with EPERM while unpacking
settles, so plymouthd exits when it can't read /proc/cmdline and encrypted
boots fall back to an unthemed text LUKS prompt. Boot still completes only
because the kernel passes key=value cmdline params to init as environment
variables and devtmpfs is automounted.

Force synchronous unpacking via initramfs_async=0 until the race is fixed
upstream: in the packaged defaults for fresh installs, and via migration
for existing systems.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-07-24 11:30:55 -07:00
co-authored by Claude Fable 5
parent b31036f604
commit 3f72553110
2 changed files with 24 additions and 0 deletions
@@ -2,6 +2,13 @@ TARGET_OS_NAME="Omarchy"
KERNEL_CMDLINE[default]+=" quiet splash loglevel=0 systemd.show_status=false rd.udev.log_level=0 vt.global_cursor_default=0"
# Kernel 7.1 unpacks the initramfs asynchronously, which races /init: the
# early /proc, /sys, /dev, and /run mounts fail while unpacking settles, so
# plymouthd exits when it can't read /proc/cmdline and encrypted boots fall
# back to an unthemed text LUKS prompt. Unpack synchronously until the race
# is fixed upstream.
KERNEL_CMDLINE[default]+=" initramfs_async=0"
CUSTOM_UKI_NAME="omarchy"
ENABLE_LIMINE_FALLBACK=yes
+17
View File
@@ -0,0 +1,17 @@
echo "Unpack the initramfs synchronously so Plymouth survives early boot"
# Kernel 7.1 unpacks the initramfs asynchronously, which races /init: the
# early /proc, /sys, /dev, and /run mounts fail while unpacking settles, so
# plymouthd exits when it can't read /proc/cmdline and encrypted boots fall
# back to an unthemed text LUKS prompt. Force synchronous unpacking until the
# race is fixed upstream. The packaged omarchy-defaults.conf now carries the
# same parameter for fresh installs.
if omarchy-cmd-present limine-mkinitcpio &&
[[ -f /etc/limine-entry-tool.d/omarchy-defaults.conf ]] &&
! grep -rqs "initramfs_async" /etc/limine-entry-tool.d/ /etc/default/limine; then
echo 'KERNEL_CMDLINE[default]+=" initramfs_async=0"' |
sudo tee -a /etc/limine-entry-tool.d/omarchy-defaults.conf >/dev/null
sudo limine-mkinitcpio
fi