Overlap Docker and Plymouth services boot

I believe there is a misunderstanding. The service in /usr/lib is the original service that came with the image. When you run sudo systemctl edit --full plymouth-quit.service this creates an override file in /etc/systemd. This override file takes precedence over the original file. But it does not edit or remove the actual original service.

You can see which file systemd considers by running systemctl cat <service-name>. Also I can confirm modifying this service has an effect on when the splash screen exits. Adding docker-compose.service to After does seem to better align the exiting of the splash screen with the start of my graphical container more closely. That said After only waits for the listed services to finish starting. I don’t think it actually waits for said services to be done. So if your container naturally takes a long time to start/show something then that’s another thing.

If you want something more extreme to test your changes you can do something like this:

torizon@verdin-imx8mp-06849059:~$ systemctl cat plymouth-quit
# /etc/systemd/system/plymouth-quit.service
[Unit]
Description=Terminate Plymouth Boot Screen
After=rc-local.service plymouth-start.service systemd-user-sessions.service docker.service

[Service]
ExecStartPre=-/usr/bin/sleep 60
ExecStart=-/usr/bin/plymouth quit --retain-splash
Type=oneshot
RemainAfterExit=yes
TimeoutSec=70

By adding a sleep like this I was able to observe the splash screen stay up for much longer. My graphical container even started and the splash screen was still running in the background. As a side-note if you do something like this make sure your timeout is longer than your sleep. Otherwise the service will timeout and the splash screen will never exit and the login prompt on serial debug will never come up. Though you can still SSH in and fix the service.

Best Regards,
Jeremias

1 Like