Polished single-user booting or heavy lifting with Plymouth

New PC installation with EndeavourOS.

Motivation: I’m trying to make boot reasonably as fast as possible, but also for it to look polished and clean (unless you press Space and Esc at the right times for troubleshooting). Defining clean as little verbose and flicking as possible unless asked by user.

Pre-progress/context:

  1. I set systemd-boot timeout to 0, and boot default to @saved.
  2. swapfile instead of partition, so i dont have to type LUKS password twice.
  3. Tried disabling texts showing up while booting. (most are gone now, but sometimes pops up when e.g. while shutting down).
  4. Succesfully using plymouth to type LUKS password.

Using: Default calamares installation with whole disk given and btrfs+swapfile+encrypt+systemd-boot. After that: dracut, dracut-numlock, plymouth, crypt, LUKS, btrfs, nvidia-dkms (used nvidia-inst), plasma, autologin. Windows on another SSD.

Problems: I want plymouth to look the same after typing password all the way until plasma fully booted up and autologined. But there are few flickers after entering password:

  1. plymouth password textbox window shows 4K resolution, but after entered and drive unlocked, screen sometimes goes to much lower resolution, probably like 800x600 and then it goes back. Happens while shutting down too.
  2. plymouth quits too early. Adding sleep seconds to plymouth-quit.service didn’t work. Tried to mask plymouth-quit.service and add plasma autostart-loginscript (not systemd, but within plasma autostart) which would execute /usr/bin/plymouth quit. But it seems like plymouth is quited long before that, even with plymouth-quit.service masked.

Any ideas?

PS. Probably will release separate results post, how to do post-installation step-by-step to make OS that way; linking to this thread. Making notes now along the way.

Also Fedora40 has the most polished boot out-of-the-box right now IMO, but not the AUR.

@saved will break everytime there is a kernel update. Instead set the default kernel you want to use as described in the EOS wiki.

What changes did you make, specifically?

2 Likes

Currently done changes to default installation:

Manually created mkdir -P /usr/lib/dracut/modules.d/50numlock and added script from this repo:

and

# chmod 755 /usr/lib/dracut/modules.d/50numlock/module-setup.sh
# chmod 755 /usr/lib/dracut/modules.d/50numlock/numlock.sh
# dracut-rebuild

Contents of /etc/kernel/cmdline (actually one line; I split it here for convenience only):

quiet
splash
loglevel=3
systemd.show_status=auto
rd.udev.log_level=3
vt.global_cursor_default=0
nvidia-drm.modeset=1
nvme_load=YES
nowatchdog
rw
rootflags=subvol=/@
rd.luks.uuid=be76895b-b4ed-4cb7-b5e1-987f3022c404
root=/dev/mapper/luks-be76895b-b4ed-4cb7-b5e1-987f3022c404
nvidia_drm.modeset=1

Plymouth theme install and set:

$ yay -S plymouth-theme-bgrt-better-luks
# plymouth-set-default-theme bgrt-better-luks

Modified dracut configs:

$ ls -a /etc/dracut.conf.d
calamares-luks.conf  eos-defaults.conf  plymouth-crypt-unlocking.conf  resume-from-hibernate.conf
$ cat /etc/dracut.conf.d/calamares-luks.conf 
# Configuration file automatically written by the Calamares system installer
# (This file is written once at install time and should be safe to edit.)
# Enables support for LUKS full disk encryption with single sign on from GRUB.

# force installing /etc/crypttab even if hostonly="no"

#install_items+=" /etc/crypttab "
$ cat /etc/dracut.conf.d/eos-defaults.conf 
omit_dracutmodules+=" network cifs nfs nbd brltty "
compress="zstd"
$ cat /etc/dracut.conf.d/plymouth-crypt-unlocking.conf 
add_dracutmodules+=" plymouth crypt "
$ cat /etc/dracut.conf.d/resume-from-hibernate.conf 
add_dracutmodules+=" resume "

and runned dracut-rebuild of course.


Plymouth-quit masking:

sudo systemctl mask plymouth-quit.service


Sauce list:
https://discovery.endeavouros.com/installation/dracut/2022/12/
https://discovery.endeavouros.com/encrypted-installation/encrypted-installation/2021/03/

https://wiki.archlinux.org/title/Plymouth
https://wiki.archlinux.org/title/Systemd#Drop-in_files
https://wiki.archlinux.org/title/Dracut
https://wiki.archlinux.org/title/Silent_boot
https://wiki.archlinux.org/title/Systemd-boot
https://www.reddit.com/r/archlinux/comments/16uzy40/fulldisk_encryption_and_plymouth/

https://wiki.archlinux.org/title/Activating_numlock_on_bootup#SDDM

https://discovery.endeavouros.com/nvidia/new-nvidia-driver-installer-nvidia-inst/2022/03/

Just a heads up that the next version of dracut will include a module for this.

3 Likes