v0.5.13: omit plymouth from dracut + regen initramfs
v0.5.12 added /dev/null symlinks for plymouth services on real root. Boot test confirmed plymouth STILL starts: it lives in initramfs (dracut module 90plymouth) which has its own bundled service files, unaffected by /etc/systemd/system/ masks on the installed btrfs. Two-layer fix: 1. /etc/dracut.conf.d/99-veilor-no-plymouth.conf: omit_dracutmodules+=" plymouth " Then `dracut -f --kver $kver` to regenerate initramfs sans plymouth. 2. Keep /dev/null symlinks for post-pivot real-root masking. Result: LUKS prompt rendered as text by systemd-tty-ask-password-agent on tty1 — sendkey-friendly, hardware-realistic.
This commit is contained in:
parent
e90d6ef662
commit
1a0cf689a8
1 changed files with 28 additions and 8 deletions
|
|
@ -501,14 +501,34 @@ bash $REPO/scripts/selinux/build-policy.sh || echo "[WARN] SELinux build failed;
|
||||||
# Apply KDE theme + DuckSans + os-release branding
|
# Apply KDE theme + DuckSans + os-release branding
|
||||||
bash $REPO/scripts/kde-theme-apply.sh
|
bash $REPO/scripts/kde-theme-apply.sh
|
||||||
|
|
||||||
# Mask plymouth services. Plymouth boot splash is unreliable in QEMU
|
# Disable plymouth at TWO layers:
|
||||||
# (race between plymouth-start and systemd-ask-password-plymouth.path
|
#
|
||||||
# leaves LUKS prompt invisible → boot hangs in dracut-initqueue).
|
# 1. Initramfs (the boot stage where LUKS unlock happens). Plymouth is
|
||||||
# `systemctl mask` requires systemd running, which isn't true in
|
# a dracut module; masking units in /etc/systemd/ has zero effect
|
||||||
# anaconda chroot %post — write the /dev/null symlinks directly instead.
|
# here because dracut bundles its own copies into initramfs/.
|
||||||
# Targets the path-activated ask-password unit too (the .path is what
|
# Solution: omit_dracutmodules in dracut.conf.d, then regenerate
|
||||||
# plymouth-start gets pulled in by). systemd-tty-ask-password-agent
|
# initramfs so the new config takes effect.
|
||||||
# handles LUKS prompt as fallback on tty1.
|
#
|
||||||
|
# 2. Real root (post-pivot, before SDDM). /dev/null symlinks mask all
|
||||||
|
# plymouth services + the path-activated ask-password unit so they
|
||||||
|
# never start when systemd is up.
|
||||||
|
#
|
||||||
|
# After both, LUKS prompt falls back to systemd-tty-ask-password-agent
|
||||||
|
# on tty1 — text "Please enter passphrase for disk... :" — works in
|
||||||
|
# QEMU sendkey AND on real hardware.
|
||||||
|
|
||||||
|
# Layer 1: initramfs
|
||||||
|
mkdir -p /etc/dracut.conf.d
|
||||||
|
cat > /etc/dracut.conf.d/99-veilor-no-plymouth.conf << 'EOF'
|
||||||
|
omit_dracutmodules+=" plymouth "
|
||||||
|
EOF
|
||||||
|
# Regenerate initramfs for the installed kernel(s).
|
||||||
|
for kver in /lib/modules/*/; do
|
||||||
|
kver=$(basename "$kver")
|
||||||
|
dracut --force --kver "$kver" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
|
||||||
|
# Layer 2: real-root masks
|
||||||
mkdir -p /etc/systemd/system
|
mkdir -p /etc/systemd/system
|
||||||
for unit in \
|
for unit in \
|
||||||
plymouth-start.service \
|
plymouth-start.service \
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue