fbsplash::FAQ

Does fbsplash use the framebuffer? Does bootsplash?

Yes, fbsplash uses the framebuffer, as does bootsplash. The framebuffer is a kernel-provided interface to video boards. Unlike X servers, it doesn't require any special drivers (other than those which come with the kernel) or resources (such as additional memory).

Does fbsplash work with <xxx>fb driver?

Fbsplash should work with all drivers that provide 15/16/24/32-bpp DIRECTCOLOR or PSEUDOCOLOR or 8 bpp modes. If your driver does that, and fbsplash doesn't work, please report it as a bug.

I want to help, what should I do?

Submit bug-reports (either send them to me or post on the Gentoo Bugzilla), create new themes (and send them to me :)), tell me about your ideas for fbsplash (what would you like to see while your system boots?) or submit some code (Have you written a cool new utility for something splash-related? Let me know, we could always add some good programs to splashutils). All constructive comments are also appreciated.

What's all that initramfs stuff? Do I have to recompile the kernel every time I want to change the theme?

Initramfs is, as described in the kernel documentation, 'a chunk of code that unpacks the compressed cpio image midway through the kernel boot process.' The files contained within that image are then used to populate the root filesystem. Initramfs is a part of a bigger concept called 'early-userspace'. It's described in detail in <kernel-sources>/Documentation/early-userspace/. The general idea is "if it can be kept out of the kernel, let it stay that way".

For example, the JPEG and PNG decompression functions that splashutils use do not need to be in the kernel. Tasks such as decompressing images are best handled by userspace libraries. The thing is, we want splashutils to display the silent picture right after the framebuffer subsystem is initialized (and not after the kernel is fully loaded) and at that point the filesystems stored on harddisks, CD-ROMs and the like are not yet mounted. So how do we load our pictures? That's where initramfs comes in. By creating an image file with the pictures, config files and the userspace helper and compiling it into the kernel/loading it dynamically at boot time we're giving the kernel access to the data it needs. The result is a nice splash image you see when you boot in silent mode.

As you might have noticed, I mentioned two different ways of using the initramfs image. The first one it to compile the image directly into the kernel. To do that, you have to copy your initramfs image to <kernel-sources>/usr/initramfs_data.cpio.gz and then rebuild your kernel's bzImage. The second way of dealing with the initramfs is using the image file as an initrd. Just set the initrd= parameter in your bootloader to point to the initramfs image. It will be loaded by the bootloader and then used by the kernel to populate it's initial root filesystem. If you choose the second way, you don't have to recreate the bzImage whenever you want to change the used theme. The only thing you need to do, is to change the initrd.

I want to get a clean graphical boot into X, without ever displaying the verbose console. Is that possible?

It is possible, but tricky. First of all, you have to realize that there's currently no way to start a X server in the background and then just switch to it at some point of the boot process. What this means is that in practice you'll see a black screen for a second or less, while the X server is starting.

If that is not a problem for you and all you really want is to avoid displaying the init messages, here is what to do on Gentoo systems. Open /etc/init.d/xdm in your favourite text editor, find a line that reads /sbin/telinit a &>/dev/null and replace it with /etc/X11/startDM.sh.

That's it. After the initscript modification xdm will start at some point during the boot process. Note that it won't wait for the boot to finish (ie. the progress bar to go to 100%)! It's up to you to find a timing that is suitable for your system. You can edit the depend() section of the initscript, adding things like after splash or before local to specify when exactly xdm should be started.