Gensplash
From ArchWiki
Note: This page uses fbsplash (aka gensplash, the original name of the project.) for its graphical boot procedure. This kernel patch and userspace software is different from and mutually exclusive to the patch and procedures detailed in the Arch Linux Bootsplash HOWTO.
Having problems?
See the Troubleshooting section at the bottom
Patch a kernel with fbcondecor (formerly known as fbsplash)
fbcondecor is not in the standard kernel tree so you will have to patch the kernel with either a patchset that features fbcondecor or with the fbcondecor patch from the developers repository.(Note that the kernel patch fbsplash is now named fbcondecor, which stands for Framebuffer Console Decorations. fbsplash is now the name for the userspace applications.) See the Kernel Patches and Patchsets page for more details. There are also several kernel pkgs in the AUR for patched kernels.
There are several methods you can use to patch your kernel. The Custom_Kernel_Compilation_with_ABS_(2.6.9_and_later) howto is recommended but you could also use one of the following to guide you:
Which ever method you choose but be sure to choose the following settings at the config
stage:
Device Drivers Block Devices RAM disk support (BLK_DEV_RAM) = Y Inital RAM disk (initrd) support(BLK_DEV_INITRD)=Y Graphics Support Support for framebuffer devices (FB) = Y Enable Tile Blitting Support = '''N''' VESA VGA graphics support (FB_VESA) = Y VESA driver type (no such section if using fbcondecor) vesafb (FB_VESA_STD) = Y (see note 1) vesafb-tng (FB_VESA_TNG) = N (see note 2) "Card Specific" display support (FB_"CARD") = N (see note 3) Logo Configuration Bootup logo (LOGO) = N Support for the framebuffer splash (FB_SPLASH) = Y (no such option if using fbcondecor, see below) Console display driver support ---> Framebuffer Console support = Y Support for the Framebuffer Console Decorations = Y
Notes:
- If you are NOT running 32bit x86 (eg. 64 bit) you should compile vesafb support INSTEAD of vesafb-tng.
- Even if you are running 32bit x86 I DO NOT recommend vesafb-tng over vesafb, it is slow and requires different configs to vesafb, switching framebuffer types between kernels will cause you grief. If you have previously used vesafb keep using it!
- There are several card specific framebuffer options. You may try them if you want, but you should only compile the VESA driver or a card specific one, not both. Also, be aware the ATI drivers may be prone to incorrect color palette problems.
Need update here: There is no need of vesafb kernel patch now, just fbcondecor is enough.
uvesafb is the successor of vesafb-tng which requires userspace util named v86d to work. It's not needed for splash to work and getting uvesafb work is not an easy job.
Essential Packages
The gensplash package can be installed from [community] repo. It includes everything you need to run gensplash, including example configs for lilo and grub, and the darch theme, created by Rensel.
Uncomment the following lines in /etc/pacman.conf
:
[community] Server = ftp://ftp.archlinux.org/community/os/i686/
Then install it:
# pacman -Sy gensplash
There are several dependencies that should be dragged in automatically.
Note: If you are using the new fbcondecor patch, you need fbsplash from AUR instead of gensplash. And you may also need to update your initramfs file.
Generate the initial RAM image for your preferred theme
Kernels with initcpio support
All stock Arch Linux kernels use an initcpio for early boot functionality. Therefore most custom kernels, including pkgs in the AUR, support the initcpio approach.
To enable gensplash support in your kernel you will need to rebuild your initcpio. First, open your /etc/mkinitcpio.conf
and add the hook to enable install fbsplash. Then specify at the end of the file the theme you'll use and at which resolution. ALWAYS try 'darch' first, it's included in the gensplash, and is well tested.
The conf file shall look like this:
HOOKS="base udev autodetect ide resume fbsplash" FBTHEMES="darch" FBRES="1024x768"
then run
mkinitcpio -p kernel_preset
That's it, now you can skip to updating your bootloader.
If you want to use the silent startup mode see below
Kernels without initcpio support
If you use another kernel then you need to perform the following:
Simply use splash_geninitramfs:
splash_geninitramfs -v -g /boot/fbsplash-theme-1024x768 -r 1024x768 theme
where theme is the theme you want to use
Here is what the splash_geninitramfs options mean:
-v tells splash_geninitramfs to go into verbose mode -g tells splash_geninitramfs to generate the initramfs image file /boot/fbsplash-newtheme-1280x1024 -r tells splash_geninitramfs to use the 1280x1024 resolution -the 'newtheme' part tells splash_geninitramfs to look in the /etc/splash/newtheme directory for the .cfg files
To see a description of all splash_geninitramfs' options:
splash_geninitramfs --help
Example for the splashutils.install file.
To install the darch theme run the following as root: splash_geninitramfs -v -g /boot/fbsplash-darch-1024x768 -r 1024x768 darch
Update your bootloader
Now it's time to update the configuration file for your boot loader. Important: add a new bootload entry, do not replace your existing one. If there are problems, you want to be able to fallback on your known good configuration.
Configure a new entry in GRUB or Lilo depending on which one you use.
The following examples will work:
The example configs can be also found in /etc/splash/
dir, but take care that this files are not updated to reflect initcpio changes. The darch theme is used as an example in all cases.
vesafb-tng framebuffer
The following are working GRUB entries for kernels with the vesafb-tng framebuffer. This is not the default framebuffer but is include in many patches that contain fbsplash. This howto does not advise you to use it!
# Verbose mode title Arch root (hd0,0) kernel (hd0,0)/boot/vmlinuz26 root=/dev/hda1 video=vesafb:ywrap,mtrr,1024x768-32@60 splash=verbose,theme:darch console=tty1 initrd (hd0,0)/boot/kernel26.img # Silent mode title Arch root (hd0,0) kernel (hd0,0)/boot/vmlinuz26 root=/dev/hda1 video=vesafb:ywrap,mtrr,1024x768-32@60 splash=silent,theme:darch console=tty1 quiet initrd (hd0,0)/boot/kernel26.img
And LILO entries:
# Verbose mode image=/boot/vmlinuz26 label=Arch root=/dev/hda1 append="video=vesafb:ywrap,mtrr,1024x768-32@60 splash=verbose,theme:darch console=tty1" initrd=/boot/kernel26.img # Silent mode image=/boot/vmlinuz26 label=Arch root=/dev/hda1 append="video=vesafb:ywrap,mtrr,1024x768-32@60 splash=silent,theme:darch console=tty1 quiet" initrd=/boot/kernel26.img
vesafb framebuffer
The following bootloaders are examples, adjust them to your need, taking note of the root, initrd and kernel options to suit your own system's partitions.
For verbose mode, remove the 'quiet' flag from the bootloader line and change silent to verbose.
For a resolution other than 1024x768-24, you may pick a different vga= value from the lookup table below.
title Arch root (hd0,0) kernel (hd0,0)/boot/vmlinuz26 root=/dev/hda1 vga=792 video=vesafb:mtrr:3,ywrap splash=silent,kdgraphics,theme:darch console=tty1 quiet initrd (hd0,0)/boot/kernel26.img
LILO:
image=/boot/vmlinuz26 label=Arch root=/dev/hda1 append="vga=792 video=vesafb:mtrr:3,ywrap splash=silent,kdgraphics,theme:darch console=tty1 quiet" initrd=/boot/kernel26.img
Table of vga= values
VGA values specific to your video card can also be generated using the lrmi package, available in [community]
# pacman -S lrmi
Then run vbetest (it lists supported video modes)
# vbetest
640x480 | - 800x600 | - 1024x768 | - 1280x1024 | - 1152x864 | - 1600x1200 | |
---|---|---|---|---|---|---|
8 bit | 769 | - 771 | - 773 | - 775 | - 353 | - 800 |
15 bit | 784 | - 787 | - 790 | - 793 | - 354 | - 801 |
16 bit | 785 | - 788 | - 791 | - 794 | - 355 | - 802 |
24 bit | 786 | - 789 | - 792 | - 795 | - 803 |
Optional: Install patched initscripts to support silent splash
You'll need to patch your initscripts to get the silent splash. The patched version of the latest initscripts can be found in [community] repo:
# pacman -S initscripts-splash
This package will replace your existing initscripts and therefore your /etc/rc.local, /etc/rc.shutdown.local, rc.conf and inittab will be OVERWRITTEN. However, it will create their backups as /etc/rc.local.pacsave, /etc/rc.shutdown.local.pacsave, rc.conf.pacsave and inittab.pacsave respectively. You need to modify the files again if you have made some changes to them before.
Current PKGBUILD and patch are here. (It seems that the current initscripts-splash package doesn't work well with the new fbsplash utils, the progress bar doesn't get updated.)
Pre-reboot checks
Just before you reboot, let's check and make sure that everything is ready:
- If the new kernel has different modules compiled/loaded, have you updated your
/etc/rc.conf
,/etc/modprobe.conf
, and/etc/rc.local
to remove compiled in or added newly modular modules? - Is the path in your bootloader configuration for the initrd command correct?
- Does the resolution in the video= boot parameter match the resolution(s) provided by your fbsplash theme?
- If you're using LILO, did you run LILO to update the boot sector?
- Do you have SystemRescueCD or Knoppix standing by in case your machine is unable to boot?
Troubleshooting
splashutils-1.1.9 saw a major architecture change and so some major changes to the scripts and operation of the application. The changes have bought some problems for a few people so please check this section out!
NO splash screens at all:
- rebuild your initcpio
- check you are using a kernel patch that includes fbsplash-0.9.2-2.6.11 or later - this was essentially introduced in 2.6.11 patchsets - so if you are using pre 2.6.11 you probably don't have the right fbsplash patch
- ensure your patchset is compatible with your source, most major patchsets are not compatible with the 2.6.x.y branches
- if you have checked all this and still have no luck try rebuilding gensplash for yourself against the kernel source you wish to use, all the required materials are linked above
Text overwriting your screen in silent mode:
- If you are having issues with text overwriting your screen in silent mode please check that are using the console=tty1 and quiet options in your bootloader config.
Backgrounds not being set on vc's at boot
- This is a weird issue and possibly an upstream bug - it may be related to Arch's init order however. To fix this issue try setting
CONSOLEFONT=default8x16.psfu.gz in rc.conf
Other information
Getting more gensplash themes
For starters, all gensplash themes should be installed in /etc/splash/
. Currently there are not many prebuilt gensplash themes about, you can find a few on http://dev.gentoo.org/~spock/projects/gensplash, and they are very easy to make (see Gentoo's fbsplash HowTo). Probably the easiest way to get started is to download some themes for bootsplash and convert them!
You can download some bootsplash themes from this bootsplash fan site or from KDE-Look.org.
Converting bootsplash themes into fbsplash format.
It's VERY easy:
- you will need to extract the themes to /etc/bootsplash/ dir.
- to convert them into fbsplash format simply run
# bootsplash2fbsplash bootsplashthemename
- you don't need the path or anything - this will install a new version of the theme in gensplash format in
/etc/splash/
Building and installing splashutils yourself
You need the splashutils userspace utilities to make fbsplash work properly. There are several utilities in the package but we are mainly interested in splash_helper, splash_geninitramfs, bootsplash2fbsplash, and splash_util. Splashutils needs to link to your patched kernel source if you build it yourself.
About the most important tools:
- splash_helper = actual code to make the splash screen work
- splash_geninitramfs = generates a RAM disk image containing splash_helper and the graphics we choose
- bootsplash2fbsplash = convert older bootsplash themes into the new fbsplash format
- splash_util = allows us to control the silent mode progress bar from the init scripts
Or you use the one of the following PKGBUILDs to make the package yourself. The first allows you to build the same pkg as i have in my repo but based on your kernel sources and includes my tools pkg. The second simply builds the vanilla splashutils pkg and doesn't incorporate the additional files I have collected.
Current splashutils PKGBUILD and splashutils.install can be found here
Bootloader splashes
References
- The gensplash (aka fbsplash) developer's page
- Gentoo's fbsplash HowTo
- The docs subdirectory located in the current splash-utils archive at the developers current repository
- GNU grubsplash HowTo</pre>