I’ve been experimenting with creating plymouth boot animations for fedora. Has anyone here worked with plymouth and Qubes OS?
thx.
I’ve been experimenting with creating plymouth boot animations for fedora. Has anyone here worked with plymouth and Qubes OS?
thx.
Yes, it’s not as easy as other systems where you can just replace the spinning animation.
The progress bar isn’t just a series of images you can replace, and you are probably also going to want to keep the password prompt.
The plymouth files are in dom0 where you expect to find them.
Thanks for the reply. I started down the plymouth rabbit hole last spring after seeing it mentioned on the How to Contribute page under create artwork.
Long story short, I had worked up a “pulsing Qubes” animation but implementting it in plymouth was a challenge as documentation is pretty sparse about the web. I’ve been taking notes along the way, but all of what I’ve done has been in fedora.
A couple of questions, if you have the time.
Xen Hypervisor & fedora: I don’t fully understand the relationship between Xen and fedora. From the model, it looks like fedora runs within the AdminVM and GuiVM. Does fedora essentially work as the “base” operating system for Qubes?
Terminal Commands: I don’t see qubes as having a discrete plymouth download at pkgs.org, so it almost appears as though plymouth is installed along with fedora in the AdminVM and GuiVM. Do you know if the commands (e.g., plymouth-set-default-theme) work the same for Qubes and fedora?
thx.
Jim
There is no relation between fedora and xen, dom0 runs fedora it’s just the OS the devs decided to use for dom0, but it could have been a difference Linux distro.
I don’t know which package is used to install plymouth, but the files are in /usr/share/plymouth and the script used is themes/qubes-dark/qubes-dark.script
I’ve done custom boot animations for Ubuntu, and it was trivial to take an animated gif and extract each frame into a new image and use that series to replace the standard spinning animation. I assume you would be able to do something similar in Qubes, but you would need to make it work with most of the functionality in the current script.
I just tested if you can use the spinner theme, and it works if you install plymouth-plugin-two-step in dom0
I reskinned the spinner theme with the qubes logo, and the LUKS password prompt works, it would be easy to make a new custom qubes-styled spinner animation.
The downside is that the progress bar is missing, on slower systems you probably want the visual indication of how far you are in the boot process.
Another issue is that even the small images used to make the standard spinner are getting distorted by the loading process, I think it might be the CPU load that is impacting the rendering of the images. This might be an even bigger issue if a larger image is used, the rendering probably would get worse, and a large might also make it a lot easier to see the errors in the rendering.
Nice work. What the two-step plugin already in place with the qubes installation or did you have to install that after installing qubes?
I’ve been playing with spinfinty (two-step) and useing the script plugin (see link).
To get around some of the issues with file size, I dramatically decreased file size by using indexed colors (256) using gimp.
sudo qubes-dom0-update plymouth-plugin-two-step
You need to run that command in dom0 to install the plugin.
I don’t think it will work on all laptops, I think what I’m experiencing with broken images is related to this issue
My guess it that the qubes being automatically started during the boot process take up so many resources that the images can’t get render correctly. The spinner stops for a short time and when it continues the next few frames are broken. I tried enabling smt, and some i915 parameters, but nothing seems to improve the issue.
Past the disk password screen, when you get into Xorg, add an Intel device section to your Xorg config, and set i915.force_probe=* (or set it to =XXXX where XXXX is the ID you get from the relevant dmesg output) in your kernel cmdline in the grub config. These two configuration changes resolved the pixelation, video lag, and slowness for me and got hardware rendering working with igfx.
Plymouth, unfortunately, has its own framebuffer/video config. Haven’t bothered to fix that locally yet.
Above should work for kernel-latest and possibly even 5.15+ in Qubes R4.1.1
This is a configuration issue with Qubes and not an Intel graphics issue as far as I can see.
That does look like a basic installation issue that is unique to qubes (vs fedora). Do you know if you’re running xorg or wayland?
As you mentioned, likely the issue occurs early in the boot process. I’ve been doing some documentation work for the freedesktop.org/plymouth team. The developers are really busy, probably fedora rollout related work, but I’ll check with them when their time opens up.
thx for the info the plugins. When you install fedora, a few default plugin/theme combinations are installed. This doesn’t appear to be the case for the qubes configuration as you had to install the two-step plugin.
Update 2022.10.25: I’m not certain that the plymouth can use Wayland spec for the display server. All instances of plymouth may use X11/xorg.
It’s xorg, I don’t think qubes has support for wayland yet.
I try and see if force_probe makes a difference.
thx. one thought I had is that plymouth is also a boot logger. you may be able to find the specific errors there.
quick question on Dom0. Is that the same as the AdminVM?
Yes, dom0 is the AdminVM, in Qube Manager you can see the dom0 template is called AdminVM.
@renehoj & @Jim , fantastic work. I would happily have any of those as my splash screen!
Would anyone be interested in a plymouth-screens package of sorts in the qubes-contrib repo?
I’ll happily create a repo for these if nobody hasn’t already done so (and contribute my own splash screens once I get around to it).
I will make a theme with a bigger boot animation when I get home from work, then you can test how it looks on your system, maybe it’s only my laptop that can’t do smooth animations.
Sorry but what is plymouth splash? The green-ish blue one(which is the screen loaded 5 sec before booting) or the grey one (Booting screen includes enter box of LUKS key)?
I think that would be cool. That way, anyone interested in qubes specific plymouth animations would know where to look.
I’m not sure how it works with qubes exactly, so maybe @renehoj could speak to that. For fedora, its an animation sequence that starts early in the boot process and ends when the password field is displayed. The plymouth “splash animation” hides all the text status messages in the background.
Where exactly plymouth starts in the boot process depends on how the installation intereacts with the bios or uefi. For example, for systems with efi/uefi it can use the efi frame buffer very early in the booting sequence.
Plymouth is also a boot logger, so it can document error messages for the boot sequence.
The luks encryption password prompt is plymouth, anything before that is probably the uefi boot art.
Here is the theme I’ve used
I have changed the animation to a larger image, and the distortion of the image is very visible.
Distorted
Normal