v0.5.20: revert plymouth removal — back to Fedora defaults for LUKS

v0.5.10-v0.5.19 progressively ripped plymouth out (kernel cmdline,
masks, dracut omit, package -plymouth, dracut regen) trying to get
text-mode LUKS prompt. Each layer surfaced a new dependency:

- plymouth.enable=0 didn't disable plymouth-start.service
- /dev/null mask survived but plymouth ran from initramfs anyway
- omit_dracutmodules in chroot didn't take (anaconda regen overrode)
- package removal worked but dropped LUKS prompt machinery entirely
- crypt+systemd-cryptsetup re-add via dracut regen-all also didn't

Each fix added complexity. Net: 6 commits of plymouth fighting,
boot still stuck at LUKS prompt.

Strategic revert: re-add plymouth, restore Fedora defaults. plymouth
is the standard LUKS-prompt path on Fedora — works out of box. v0.6
will swap fedora-logos + plymouth theme for veilor-themed splash.

This commit:
- Adds `plymouth` back to %packages
- Removes -plymouth/-plymouth-plugin-label/-plymouth-system-theme
- Removes plymouth.enable=0/rd.plymouth=0/logo.nologo/console=tty0
  from kernel cmdline
- Removes /etc/dracut.conf.d/99-veilor-no-plymouth.conf write
- Removes dracut --regenerate-all call
- Removes /dev/null symlink masks for plymouth-* units
- Keeps GRUB_DISTRIBUTOR=veilor-os branding
- Drops GRUB_TERMINAL_OUTPUT=console + GRUB_THEME edits

Result: Fedora stock LUKS path. plymouth shows fedora splash + LUKS
prompt → user types passphrase → boot continues.
This commit is contained in:
veilor-org 2026-05-03 21:52:10 +01:00
parent 15311f56e9
commit 26d6ff277b

View file

@ -377,7 +377,7 @@ __SSHKEY_DIRECTIVE__
# Full hardening cmdline (installed system, not live): # Full hardening cmdline (installed system, not live):
# --location=none: anaconda auto-places bootloader (UEFI grub2-efi or BIOS). # --location=none: anaconda auto-places bootloader (UEFI grub2-efi or BIOS).
bootloader --append="lockdown=integrity slab_nomerge init_on_alloc=1 init_on_free=1 randomize_kstack_offset=on vsyscall=none plymouth.enable=0 rd.plymouth=0 logo.nologo console=tty0" bootloader --append="lockdown=integrity slab_nomerge init_on_alloc=1 init_on_free=1 randomize_kstack_offset=on vsyscall=none"
# Disk: zero, LUKS2 (argon2id), btrfs subvolumes (no LVM intermediary). # Disk: zero, LUKS2 (argon2id), btrfs subvolumes (no LVM intermediary).
# Native btrfs-on-LUKS matches Fedora KDE Spin defaults; LVM+btrfs combo # Native btrfs-on-LUKS matches Fedora KDE Spin defaults; LVM+btrfs combo
@ -436,9 +436,7 @@ policycoreutils-python-utils
tuned tuned
chrony chrony
firewalld firewalld
# plymouth: removed in v0.5.13. Splash unreliable in QEMU; LUKS prompt plymouth
# falls back to systemd-tty-ask-password-agent on tty1 (text). Cleaner
# boot, smaller initramfs, fewer moving parts.
# admin essentials # admin essentials
git git
@ -466,9 +464,6 @@ zram-generator
-kde-connect -kde-connect
-open-vm-tools-desktop -open-vm-tools-desktop
-mlocate -mlocate
-plymouth
-plymouth-plugin-label
-plymouth-system-theme
%end %end
@ -551,49 +546,12 @@ bash $REPO/scripts/kde-theme-apply.sh
# on tty1 — text "Please enter passphrase for disk... :" — works in # on tty1 — text "Please enter passphrase for disk... :" — works in
# QEMU sendkey AND on real hardware. # QEMU sendkey AND on real hardware.
# Layer 1: initramfs # GRUB branding: replace fedora distributor with veilor-os in menu titles.
mkdir -p /etc/dracut.conf.d # Theme + splash kept default (plymouth handles boot UI). v0.6 will swap
cat > /etc/dracut.conf.d/99-veilor-no-plymouth.conf << 'EOF' # fedora-logos with veilor-logos for full visual rebrand.
omit_dracutmodules+=" plymouth "
# Ensure systemd-cryptsetup module + systemd-ask-password agent are
# included so LUKS prompt appears on tty1 (text mode) when plymouth
# is omitted. Without these, dracut loops on devexists waiting for
# an unlock that never happens.
add_dracutmodules+=" crypt systemd-cryptsetup "
install_items+=" /usr/bin/systemd-tty-ask-password-agent "
EOF
# Regenerate initramfs for ALL installed kernels with our dracut config.
# `--regenerate-all` walks /lib/modules itself; safer than bash glob in
# chroot where shell may be dash + nullglob unset → glob expands literally
# → dracut --kver "/lib/modules/*/" fails silently.
dracut --force --regenerate-all 2>&1 | tail -5 || true
# Layer 2: real-root masks
mkdir -p /etc/systemd/system
for unit in \
plymouth-start.service \
plymouth-quit.service \
plymouth-quit-wait.service \
plymouth-read-write.service \
plymouth-switch-root.service \
systemd-ask-password-plymouth.path \
systemd-ask-password-plymouth.service \
; do
ln -sf /dev/null /etc/systemd/system/$unit
done
# GRUB branding: drop fedora menu titles + theme + graphical splash.
# Pure text-mode "hackery" boot per veilor aesthetic. Logo/theme work
# revisits in v0.6 via plymouth + veilor-black theme.
sed -i \ sed -i \
-e 's|^GRUB_DISTRIBUTOR=.*|GRUB_DISTRIBUTOR="veilor-os"|' \ -e 's|^GRUB_DISTRIBUTOR=.*|GRUB_DISTRIBUTOR="veilor-os"|' \
-e 's|^GRUB_THEME=.*|GRUB_THEME=|' \
-e 's|^GRUB_TERMINAL_OUTPUT=.*|GRUB_TERMINAL_OUTPUT="console"|' \
-e '/^GRUB_BACKGROUND=/d' \
/etc/default/grub 2>/dev/null || true /etc/default/grub 2>/dev/null || true
# Append GRUB_TERMINAL_OUTPUT if not present
grep -q '^GRUB_TERMINAL_OUTPUT=' /etc/default/grub 2>/dev/null || \
echo 'GRUB_TERMINAL_OUTPUT="console"' >> /etc/default/grub
# Regen grub.cfg with new branding (anaconda already wrote one; replace). # Regen grub.cfg with new branding (anaconda already wrote one; replace).
grub2-mkconfig -o /boot/grub2/grub.cfg 2>/dev/null || true grub2-mkconfig -o /boot/grub2/grub.cfg 2>/dev/null || true
[ -f /boot/efi/EFI/fedora/grub.cfg ] && \ [ -f /boot/efi/EFI/fedora/grub.cfg ] && \