fbsplash is a Gentoo implementation of a bootsplash screen to provide some eye candy during boot up, shut down or while working on a terminal without X. It is currently available in portage as media-gfx/splashutils. A more modern alternative that also offers systemd support, but no eye-candy on the terminal is Plymouth.
- 1 Installation
- 2 Usage
- 2.1 Themes
- 2.2 Creating and updating an initramfs image
- 2.3 Bootloader
- 3 Screenshot
- 4 Troubleshooting
You can install media-gfx/splashutils with the following command:
emerge --ask splashutils
To also install the Gentoo themes which are also used on the Live CD/DVD:
emerge --ask media-gfx/splash-themes-gentoo
And more themes with:
emerge --ask media-gfx/bootsplash-themes
The build might fail, because many libraries need to have static libraries to be available at boot time, here is a list of USE flags which could be put into /etc/portage/package.use (03/07/2012):
# for boot-splash media-libs/freetype static-libs media-libs/libpng static-libs media-libs/lcms static-libs virtual/jpeg static-libs media-libs/libjpeg static-libs media-libs/libjpeg-turbo static-libs media-libs/libmng static-libs sys-libs/zlib static-libs app-arch/bzip2 static-libs
Remember to update the packages after changing the USE flags:
emerge --ask --changed-use --deep @world
USE flags for media-gfx/splashutils Framebuffer splash utilities
||Support for the fbcondecor kernel patch.||local|
||Add support for sys-libs/gpm (Console-based mouse driver)||global|
||Activate default security enhancements for toolchain (gcc, glibc, binutils)||global|
||Add support for libpng (PNG images)||global|
||Add support for FreeType and/or FreeType2 fonts||global|
To use a splash image the kernel needs to support initramfs and it must also support framebuffer console decorations.
Normally, gentoo-sources have already been patched to support framebuffer console decorations. If you have picked a different kernel, you might have to patch it first using genpatches. Some other kernels like tuxonice-sources have already been patched and are ready to use, though. Enable framebuffer console decorations:
Device Drivers -> Graphics support -> <*> Support for frame buffer devices ---> -*- Enable Video Mode Handling Helpers [ ] Enable Tile Blitting Support <*> Userspace VESA VGA graphics support [*] VESA VGA graphics support < > nVidia Framebuffer Support < > ATI Radeon display support [ ] Simple framebuffer support Console display driver support ---> [*] VGA text console [*] Enable Scrollback Buffer in System RAM (64) Scrollback Buffer Size (in KB) <*> Framebuffer Console support -*- Map the console to the primary display device [ ] Framebuffer Console Rotation [*] Support for the Framebuffer Console Decorations [ ] Select compiled-in fonts
Remember that selecting the type of framebuffer device is important and affects your system. If you plan to use open-source graphics drivers, you can enable the appropriate device here, for example, for radeon driver you can enable ATI Radeon display support and so forth. However, if you are going to install proprietary drivers for your graphics card, you will likely have to rely on either Userspace VESA VGA graphics support or Simple framebuffer support. There is an option for EFI-based Framebuffer Support, too, in case you need it.
Thus, using either radeon, intel or nouveau drivers provides a framebuffer capable device which is well implemented into the operating system. For users with the binary nVidia or AMD driver, there are workarounds using uvesafb or simple framebuffer to get frambuffer support.
Next, enable Keyboard support for framebuffer themes:
Device Drivers ---> Input Device Support ---> <*> Event Interface
General usage screnarios.
this requires the fbcondecor USE flag
The different themes are stored in /etc/splash where the folder represents the theme name. To test some of them on the console use:
splash_manager -c set --theme=natural_gentoo --tty=1
This will change the theme on tty1 to natural_gentoo. You can choose any theme in /etc/splash that matches your current resolution. Now to see the theme go to tty1 by pressing Ctrl+Alt+F1.
If you want to preview a theme in silent mode without reboot, then try
splash_manager -c demo -t natural_gentoo -m s --steps=100
Don't run this command under X window.
For more reference please refer to
Creating and updating an initramfs image
You should add fbcondecor service to boot:
rc-update add fbcondecor boot
This way fbsplash would start when the system starts. However, the eye-candy would not be available immadiately after boot and there would be some lag. Using an initramfs is the remedy to have it early at boot. Thus, we are going to make an initramfs.
Before you proceed, you must choose the theme and the resolution you want. While it seems trivial, the point is that not every theme you want might support your desired resolution. More important than this, the resolution that you want, might not be supported by the framebuffer device. So there are two steps to be done.
Finding the resolutions supported by the framebuffer device
Reveal the supported resolutions by your framebuffer device by issuing the following cammand:
If you have selected simple frame buffer device support in kernel, you do not need to do this step. Please refer to the troubleshooting section.
Finding a theme with the supported resolution
Next, choose a theme that supports the resolution you want. For example, to find out which themes support fullhd resolution:
find /etc/splash/ -name *1080*.cfg
If the initramfs is created using genkernel, the configuration in /etc/genkernel.conf should be changed to the theme used.
# Enable splashutils in early space (initrd). Default is "no". SPLASH="yes" # Use this splash theme. If commented out - the "default" name theme is used. # Also, SPLASH="yes" needs to be enabled for this one to one work. # This supersedes the "SPLASH_THEME" option of /etc/conf.d/splash (in early space). SPLASH_THEME="emerge-world"
Alternatively the /etc/conf.d/splash could be used to configure the theme, which will be loaded after initramfs.
Updating an initramfs image without using genkernel
If you have an existing initramfs (like one you have created with dracut) you want to use this feature. To append the theme to an existing initramfs:
splash_geninitramfs --verbose --res NxN --append /path/to/initramfsimage theme
Creating an initramfs image without using genkernel
To create a new initramfs for our theme:
splash_geninitramfs --verbose --res NxN --generate /boot/initramfs-bootsplash theme
To create a new initramfs with the content of an existing one to add our theme:
splash_geninitramfs --verbose --res NxN --copy /path/to/initramfsdir theme
In GRUB2 the parameters can be added to the variable GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub.
linux video=uvesafb:1920x1080-32,mtrr:3,ywrap splash=verbose,theme:emerge-world
grub2-mkconfig -o /boot/grub2/grub.cfg
This enables the verbose version of the emerge-world theme, a full list of parameters can be found in /usr/share/doc/splashutils*/kernel_parameters. The parameter video=1920x1080 is optional, but will choose the proper resolution for the image.
To make screenshots of the framebuffer console, the tool media-gfx/fbgrab can be used:
The theme does not load at boot
First, check if you have built the initramfs with the supported resolution. Maybe the device does not support it, or maybe the theme does not have any configuration files for it. Another possibility is that the initramfs is not loaded at boot.
The screen stays black until X starts
Disable every framebuffer device in kernel and enable only simple framebuffer one.
The device does not support the desired resolution
This is a limitation in the device if the resolution you want is not listed among the supported modes. Fortunately, there is a workaround -- simply disable every framebuffer device and enable simple frame buffer device.
Device Drivers -> Graphics support -> <*> Support for frame buffer devices ---> -*- Enable Video Mode Handling Helpers [ ] Enable Tile Blitting Support < > Userspace VESA VGA graphics support [ ] VESA VGA graphics support < > nVidia Framebuffer Support < > ATI Radeon display support [*] Simple framebuffer support
Of course, replace the resolution with whatever you would like and rebuild grub2 configuration file by issuing:
grub2-mkconfig -o /boot/grub2/grub.cfg
Enjoy the eye-candy.