Has anyone worked with plymouth splash animations with Qubes OS?

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.

Final post by IDO

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.

1 Like

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.

1 Like

@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? :slight_smile:

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).

1 Like

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)?

1 Like

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.

1 Like

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

4 Likes

A little bit off-topic but how can I replace the uefi boot art? The original plymouth is ok for me but that uefi art really not my flavor.

Well, dom0 in Qubes essentially is Fedora, so it should be identical :slight_smile:

You’ll need to alter your BIOS for that. Plymouth won’t be able to help you with that, unfortunately.

Electricity goes through your machine → BIOS (MBR/UEFI) → GRUB → Xen → dom0 kernel & initramfs → systemd → plymouth → a bunch of other stuff → X display manager → XFCE greeter

That’s the general boot sequence (paraphrasing for simplification) :slight_smile:

1 Like

You probably can, but check the documentation for motherboard and/or firmware.

On ThinkPads, you need to download the latest firmware and place an image file in the update directory called LOGO1.BMP/JPG/PNG and the firmware update tool write the image to flash. Not all types of color encoding and compression are supported, and there are limitations in image size and file size.

@alzer89 is probably correct on this. Much depends on how plymouth is integrated into the qubes os .ISO image. Based on what @renehoj has said, a basic installation feature such as using xorg vs wayland, can differ between distributions.

The plymouth team extended the program to allow incorporating the ACPI table that enables communication to the UEFI for redrawing the firmware boot screen. This allows plymouth to “hijack” the firmware power-on screen.

Whether you could take advantage of this feature likely depends on how plymouth is installed on your system.


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.

Well, you guys are correct, too. I just wanted to clarify to save you guys some time. @Jim and @renehoj, I’m absolutely loving the boot splash screens you guys are coming up with, and I would love to be able to help you get them into Qubes OS as quickly as possible (for those who wish to use them) :slight_smile:

Oh I wish that plymouth could do this… :smile:

It’s the other way around. The plymouth team were trying to mimic what a Windows OEM install looks like:

  1. BIOS loads, with a boot splash (usually a manufactuer’s logo)
  2. The bootloader then grabs the splash from the BIOS binary, and displays it in the same place as it was in the BIOS

The BIOS technically never stops executing the entire time the machine is powered on. It’s always there, and all the other software (bootloader, kernel, userspace) are “stacked” on top of it.

That’s actually why people call it a software stack :wink:

…but everyone in this thread already knew this. I’m just putting it for anyone else who stumbles across this thread :smile:

  1. The progress radial is shown underneath the boot splash, and the OS boots.

Like this:


If the BIOS doesn’t have a boot splash image that it can understand, Windows will just show the Windows logo:


The current ISOs of Fedora and Ubuntu do this if the machine has a boot splash in the BIOS.

Qubes OS technically could do this too, if you wanted to configure it that way:


Well, there’s only really one place you can install plymouth (for now) :stuck_out_tongue:

No software can change, override, or kill any software further down its stack (unless the software further down the stack allows it to, of course).

This is why Linux kernel panics actually freeze/hang the machine. They wouldn’t be so serious if systemd could just restart the kernel :stuck_out_tongue_winking_eye:

So, because of where plymouth is in the boot stack, it cannot change anything the BIOS has already done, because the BIOS executes before plymouth.


So your options to get a custom bootsplash are:

OPTION 1: Compile a custom BIOS with your boot splash in it and flash it to your motherboard

You actually replace the boot splash image in the actual BIOS with an image/animation of your choice (if you’re lucky enough to have a machine that the Coreboot team have figured out the inner workings of :wink:).

ADVANTAGES: This will mean that you get the same boot splash image from the moment you power the machine on.

DISADVANTAGES: You will brick your motherboard if you don’t know what you’re doing :wink:

Big companies actually do this on their work machines. They’ll replace the OEM logo with their company logo in the BIOS, which is actually a pretty baller thing to do :sunglasses:

OPTION 2: Configure plymouthd to show a custom splash image as soon as it loads

Basically, this allows you to show a custom boot splash image/animation as soon as plymouthd is started, which is usually immediately after the init system (OpenRC, sysvinit, systemd, etc.) is started.

This is currently what the stock Qubes OS install does.

ADVANTAGES: It means you don’t have to mess with the BIOS binary on the chips soldered to the motherboard.

DISADVANTAGES: It means that you’ll see TWO boot splash images. The one in the BIOS, and the custom one you told plymouthd to show…

I’m trying to rework the boot animation using the same method with a sprite and the refresh function.

Using the two-step plugin works on my desktop PC, the animation is smooth with no distortion both during boot and shutdown. It’s only on my laptop that can’t render it perfectly.

I wasn’t able to change the luks password prompt text, and I don’t think you can add a script file when using two-step. It would also be better not having to install any plugin at all, and just use plymouth as shipped with the standard installation.

It’s possible to rotate the sprite, which could be a solution for systems that don’t have enough resources to do frame based animation. I was thinking about making a nice qube vortex images, that could be used as a single image rotating sprite.

1 Like

That’s very interesting. In terms of the “plugins”, there’s no real way around that, they’re written in C and an integral part of the plymouth source files. Charles Brej added the plymouth configuration file feature (theme_name.plymouth) so you could set call-value combinations for the plugin and avoid hard core scripting. For fedora, these types of files are located in the /usr/share/plymouth/themes directory (I’m not sure where in qubes dom0 / adminVM).

Are using the “script” plugin to write your image-sprite animation? Along with the two-step plugin, the script plubin is one of the most popular plugins used. The script plugin may already be installed on your system if you have the “breeze” theme installed.

The script plugin documentation is currently under construction, and is very rough. Currently, it consolidating published articles and creating tables for the raw functions from source files.

However, you may be able to find useful information for your efforts in the Create Plymouth Themes section. The specific link for the Charles Brej 4 part tutorial is here. (Note: if the page doesn’t load, hit refresh).

I’m looking forward to seeing your animation.

2 Likes