2

I have configured Plymouth with Gnome on Arch Linux and can boot without problem (as in I enter my encryption key, get to the login screen, and can successfully log in). Unfortunately, plymouth-quit-wait.service never finishes:

~ systemctl status plymouth-quit-wait

● plymouth-quit-wait.service - Hold until boot process finishes up
     Loaded: loaded (/usr/lib/systemd/system/plymouth-quit-wait.service; static)
     Active: activating (start) since Wed 2020-08-19 11:37:12 CEST; 4min 31s ago
   Main PID: 603 (plymouth)
      Tasks: 1 (limit: 38119)
     Memory: 312.0K
     CGroup: /system.slice/plymouth-quit-wait.service
             └─603 /usr/bin/plymouth --wait

Aug 19 11:37:12 hostname systemd[1]: Starting Hold until boot process finishes

I don't understand the reason for this, as everything works fine. Where could I look for troubleshooting?

Felix Schütz
  • 123
  • 1
  • 4
  • If you run `systemctl status` with no further parameters, what do the first 4 or so lines say? If the start-up is truly finished, there should be `State: running` and `Jobs: 0 queued`. Also, `plymouth --wait` is waiting for the `plymouthd` process to exit - has that actually happened? – telcoM Aug 19 '20 at 11:34
  • `State: starting. Jobs: 3 queued. Failed: 0 units`. `systemctl list-jobs` lists `multi-user.target` and `graphical.target` as waiting and `plymouth-quit-wait.service` as running. The `plymouthd` process is still running. Can I somehow look at its output? – Felix Schütz Aug 19 '20 at 12:19

1 Answers1

2

From the comments, the problem seems to be that plymouthd is still running, and plymouth-quit-wait.service is waiting for it to exit.

Because plymouthd needs to start in initramfs and keep running at least until the GUI server (whether X11 or Wayland) starts, at least on Debian its service names are a bit unusual:

  • /lib/systemd/system/plymouth-start.service actually starts plymouthd as a forking one-shot service, and tells it to start showing a boot splash screen.
  • if necessary, systemd-ask-password-plymouth.service tells it to ask for things like disk encryption passphrases
  • plymouth.service is a symbolic link to plymouth-quit.service, which is another oneshot service that runs plymouth quit that is supposed to tell plymouthd to exit.

Arch's setup may be somewhat different, but I gather that either some service is not running plymouth quit when it should, or plymouthd is not getting the message that it should exit.

You might try running plymouth quit manually as root - if that causes plymouthd to exit and systemctl status to transition to State: running, then the problem is about plymouth quit not getting executed automatically. If the state does not change, then try killing the plymouthd process, as it seems to be hung somehow.

Are you, by chance, using the proprietary NVIDIA GPU driver? If I recall correctly, there is/used to be an issue that it sets the display framebuffer configuration in such a way that plymouthd fails to work correctly with it. If so, then you might want to try a text-based plymouth boot theme, or disable the boot splash altogether.

telcoM
  • 87,318
  • 3
  • 112
  • 232
  • Running `plymouth quit` as root works fine - it puts me back to the login screen. As you said, `systemctl status` prints `State: running` afterward. I only have an integrated Intel GPU, no NVIDIA GPU driver. Thanks for the help! – Felix Schütz Aug 19 '20 at 20:19