Plymouth troubles

This is not about the car, but about the boot process that is running on most Linux systems these days. It either shows you a splash or not and also gives you a prompt if you need to give a password to unlock the encrypted disk. I wanted to style it too, with the help of Catppuccin.

Followed the instructions

After carefully following the instructions (I was also trying to style GDM and that failed horribly but that is another story) and then rebooting. It failed to show me the new cool prompt. It showed me the fallback, or what I assumed was the fallback.

I added plymouth.debug as a kernel parameter to get more information. Sadly the only information I got was that it could not find a file, but not which file!! Sadly to my chagrin it is very difficult to debug this outside of the boot loop.

The flow

You start a terminal on Ctrl+Alt+F3, you type in sudo plymouthd --debug. Then type in sudo plymouth --show-splash.

Hit Ctrl+Alt+F3 again, then sudo plymouth --quit.

That is the flow. I kept getting the same information.

Then I thought instead of just running plymouthd, let us get an strace on it. Then I can view the system calls and in there it will show me what file it is trying to open.

The trace begins

I run it the same way as I showed before but with strace -o /var/log/plymouth-strace.txt added to the plymouthd call, added with a --no-daemon suffix. Then I used Ctrl+Alt+F2 to be the one where I send sudo plymouth --show-splash and --quit commands from.

Then I looked in the logs of the strace output, and saw it tried to open cursor.png. I went to the source code of plymouth and could not really find a reference there. Then I remembered I could get the actual source code of the package with apt-get source plymouth. So I did that.

Looking at the source

When I did a quick search in the source code I saw, to my horror, it will always look for and try to open cursor.png regardless of settings. This is courtesy of Pop_OS!. So I copied in a cursor.png and set the animation to none anyway. Then it all worked...