Difference between revisions of "Gensplash"

From ArchWiki
Jump to: navigation, search
(vesafb-tng framebuffer)
Line 143: Line 143:
===vesafb-tng framebuffer===
===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.
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.

Revision as of 11:06, 8 June 2007

Note: This page uses fbsplash (aka gensplash) 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 ArchLinux Bootsplash HOWTO.

Having problems?

See the Troubleshooting section at the bottom

Patch a kernel with fbsplash

fbsplash is not in the standard kernel tree so you will have to patch the kernel with either a patchset that features fbsplash or with the fbsplash patch from the developers repository. 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
            VESA VGA graphics support (FB_VESA) = Y
              VESA driver type
                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


  1. If you are NOT running 32bit x86 (eg. 64 bit) you should compile vesafb support INSTEAD of vesafb-tng.
  2. 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!
  3. 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 pallete problems.

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:

Server = ftp://ftp.archlinux.org/community/os/i686/

Then install it:

# pacman -Sy gensplash

There are several dependecies that should be dragged in automatically.

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"


then run

mkinitcpio -p kernel_name

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. Teh 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
        append="video=vesafb:ywrap,mtrr,1024x768-32@60 splash=verbose,theme:darch console=tty1"

# Silent mode
        append="video=vesafb:ywrap,mtrr,1024x768-32@60 splash=silent,theme:darch console=tty1 quiet"

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


        append="vga=792 video=vesafb:mtrr:3,ywrap splash=silent,kdgraphics,theme:darch console=tty1 quiet"

Table of vga= values

VGA values specific to your video card can also be generated using the lrmi package, avaialbel in [community]

# pacman -S lrmi
vga modes
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

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?


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 utilites 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