fbsplash on debian/sid and Ubuntu
Last update: 26-SEP-2008

Here are my notes on how I installed fbsplash on debian/sid. The packages also work for Ubuntu (but then, read this howto):


Location of splashutils packages:
amd64 and i386

Please note that the splashutils repository has MOVED as of 06-JAN-2008
This page will, sooner or later, be redirected to: http://fbsplash.berlios.de/
Bugs should be reported at http://developer.berlios.de/bugs/?group_id=8814

# Gentoo's splashutils
deb ftp://ftp.berlios.de/pub/fbsplash/debian/splashutils sid contrib
Related repositories:
# uvesafb kernel patch needs the v86d userspace helper
deb http://jeandamiendurand.free.fr/debian/v86d sid contrib
# fbsplash themes
deb http://jeandamiendurand.free.fr/debian/fbsplash-themes sid contrib
# Precompiled kernels with uvesafb and fbcondecor
deb http://jeandamiendurand.free.fr/debian/kernel sid main

Sections of this document

Ubuntu users, you must read this howto.

Here is a brute snapshot of a terminal under fbsplash, using the themes Debian and SuSE-8.2, taken from bootsplash:

If you happen to have used my experimental packages, please drop me a line - I am opened to any suggestion

SETUP

  1. Run an fbsplash-aware kernel. Please look to the spock's devsite, i.e. the author of splashutils s/w. amd64 or i386 people might want to install mine:
    #
    ## Debian's 2.6.25-4 kernel with the fbcondecor and tuxonice patches for the i686 and amd64 platforms
    ## AMD64 version will follow
    #
    ## Please refer to my kernel repository page
    #
    deb http://jeandamiendurand.free.fr/debian/kernel sid main
    deb-src http://jeandamiendurand.free.fr/debian/kernel sid main
    #
    ## IF YOU USE uvesafb video driver: the v86d executable
    #
    deb http://jeandamiendurand.free.fr/debian/v86d sid contrib
    deb-src http://jeandamiendurand.free.fr/debian/v86d sid contrib
    #
    ## Fbsplash themes I packaged
    ## (Take big care with the grub splashes, c.f.
    ## http://jeandamiendurand.free.fr/serendipity/index.php?/archives/30-Playing-with-framebuffer.html)
    ## Currently available: matrix-fbsplash-theme, matrix-grub-theme, matrix-ksplash-theme
    #
    deb http://jeandamiendurand.free.fr/debian/fbsplash-themes sid contrib
    deb-src http://jeandamiendurand.free.fr/debian/fbsplash-themes sid contrib
    
    Having vesafb-tng patch in addition is suggested, not necessary. You can also have uvesafb instead of of vesafb or vesafb-tng. But then you will also need the the v86d userland uvesafb helper.

  2. Update /etc/apt/sources.list (please contribute - ppc in particular)

    Add at least the line that is in bold below, to your /etc/apt/sources.list:

    #
    ## End-users only need this entry
    ## ------------------------------
    #
    ftp://ftp.berlios.de/pub/fbsplash/debian/splashutils sid contrib
    #
    ## Those who want the source need the following
    ## --------------------------------------------
    ## source of splashutils
    ## build dependency : an fbsplash aware klibc
    #
    deb-src ftp://ftp.berlios.de/pub/fbsplash/debian/splashutils sid contrib
    deb ftp://ftp.berlios.de/pub/fbsplash/debian/klibc sid contrib
    #
    ## Just in case, the source of the fbsplash aware klibc build dependency
    ## ---------------------------------------------------------------------
    #
    deb-src ftp://ftp.berlios.de/pub/fbsplash/debian/klibc sid contrib
    
    Then, update your system's knowledge with your favourite method:
    • apt-get update
    • aptitude update
    • dselect/Update/Quit
    • ...
    Install the package splashutils. This will also install an additional package miscsplashutils. A daemon will start at next boot, called fbsplashd, e.g.:
     9124 tty16    Ssl+   0:00 /sbin/fbsplashd.static --theme=debblue --pidfile=/lib/splash/cache/daemon.pid
    
    The theme? You will configure that later using the /boot/grub/menu.lst file. See section 4. Please note that there is third package called splashutils-initramfs that contains a hook and a script for initramfs images.

  3. Install a theme

    Take a theme from bootsplash and install it under the directory /etc/bootsplash/themes. Then convert it with the command:

    bootsplash2fbsplash the_theme
    
    To add animation to a theme, one should add something like:
    anim <once|loop|proportional> <path> >x> <y> [state service]
    
    to the config file. Please note the following comments coming from upstream:
    * anim <once|loop|proportional> <path> >x> <y> [state service]
    
      Displays a MNG animation on the silent splash screen at (x,y).
    
      'once' -- the animation is displayed only once. After it reaches its
                last frame, it is displayed just like an icon.
    
      'loop' -- the animation is displayed in an infinite loop.
    
      'proportional' -- the animation progress is coupled with the progress
                        variable. Note that in this case, the animation
                        isn't smooth and only single frames are displayed.
    
      WARNING: Animation support in splashutils isn't complete yet and the
      following is subject to change in future versions of the program.
    
      Currently, all animations are displayed on a separate 'layer' located
      above all other objects. An animation object will always cover icons,
      boxes, etc. Overlapping animations with other objects should currently
      be avoid, as it may lead to unexpected flickering.
    
      Depending on how the mng file is constructed 'once' and 'proportional'
      might not work as aspected. When the file is internally looped, the
      animation will always be displayed in an infinite loop (even when
      the 'once' flag is used). When the file doesn't contain a frame
      counter, 'proportional' will not work and only the first frame will
      be displayed.
    

  4. Configure your bootloader (works for me, your turn to tune it to your system - I assume 1024x768 resolution)

    In any case you will have to add to your kernel command line the following: splash=silent,fadein,theme:the_theme quiet CONSOLE=/dev/tty1.

    • If you use vesafb-tng patch, then add: video=vesafb:1024x768-32,ywrap
    • If you use uvesafb patch, then add: video=uvesafb:1024x768-32,ywrap
    • If you use native vesafb module, then add: vga=791
    Note that you can also use the file /etc/splash/splash.conf to specify a theme in the userland.

  5. Early splash

    If you want a splash screen at early boot, you have two options:

    • Use splash_geninitramfs. But then, make sure you have a kernel with enough things compiled in the kernel. Then check again your bootloader and verify you will:
      • use your new initrd image
      • the theme: command-line parameter should match the name of the theme used to generate the initrd
    • Install the package splashutils-geninitramfs, configure your system to use initramfs (c.f. /etc/kernel-img.conf file), dpkg-reconfigure your kernel. Note that, for the moment, dpkg-reconfigure will copy all your splash screens in the initrd. Then, after reboot, the initramfs will run its usual initial configuration and preload of modules, run udev, and fbsplash. I.e. you will not get splash exactly as early as with the first method, but at least this should work for most kernels.

  6. Reboot

    If you have not used early splash configuration, you should see splash screen right after udev initialization in the userland, i.e. after INIT has started. To see splash screen at early boot see previous section. It is normal to not see the verbose messages anymore, but as soon as splash is on, just press F2 in userland, or Alt-F1 at early boot.

  7. Suspend2 and fbsplash

    If you want to have suspension and fbsplash as eye candy interface:

    • Make sure you have correctly configured your system for the suspension. Everything is in /etc/hibernate/*.conf. The defaults should work for most people, here are neverthless some tweaks:

      • If you are using ndiswrapper module, this should be unloaded and reloaded, and corresponding interface restarted. I personnally use a recent kernel (i.e. now all vanilla usb stuff does suspend and resume ok as far as I see) and only wifi on my desktop via ndiswrapper, here are the corresponding lines in /etc/hibernate/suspend2.conf:
        ### modules
        UnloadModules ndiswrapper
        LoadModules ndiswrapper
        
        ### network
        DownInterfaces wlan0
        UpInterfaces auto
        
      • Perhaps because I compiled too much things into the kernel, but I have to re-enable DMA after resuming:
        ### services
        StartServices hdparm
        
      • Nvidia people might want to add
        ## Any other /proc/software_suspend setting can be set like so:
        ProcSetting extra_pages_allowance 0
        
      • In addition, for fbsplash, enable the following configuration:
        
        In /etc/hibernate/common.conf:
        
        ### fbsplash (enable SwitchToTextMode if you use this)
        FBSplash on
        FBSplashTheme suspend2
        
        In /etc/hibernate/suspend2.conf:
        
        ## Specify a userui like this:
        ProcSetting userui_program /usr/lib/suspend2-userui/suspend2ui_fbsplash
        
      • Install the debian-suspend2-theme package. This contain the official fbsplash theme for Debian. Its name is "suspend2". If you want another theme, then install it yourself in /etc/splash and do not forget to update /etc/hibernate/common.conf, nor to reconfigure your linux-image package. Doing dpkg-reconfigure splasutils-suspend2-initramfs (see below) will also do it.

      • Install the splashutils-suspend2-initramfs package. This contains all necessary hooks for the initrd image, so that your system will swith to resume juste after you restarted it. This will have precedence over the splash in the initrd.

      • Here are my full configuration files (without the commented lines):
        /etc/hibernate/hibernate.conf:
        
        TryMethod suspend2.conf
        
        
        /etc/hibernate/suspend2.conf:
        
        UseSuspend2 yes
        Reboot no
        EnableEscape yes
        DefaultConsoleLevel 1
        Compressor lzf
        Encryptor none
        ProcSetting extra_pages_allowance 0
        FullSpeedCPU yes
        Include common.conf
        
        /etc/hibernate/common.conf:
        
        Verbosity 0
        LogFile /var/log/hibernate.log
        LogVerbosity 0
        LogTimestamp yes
        Distribution debian
        SaveClock restore-only
        FBSplash on
        FBSplashTheme suspend2
        UnloadModules ndiswrapper
        LoadModules ndiswrapper
        DownInterfaces wlan0
        UpInterfaces auto
        StartServices hdparm
        SwitchToTextMode yes
        XStatus kde
        
      • Cross fingers and give it a try
      • Links that really really helped me:

LINKS

THANKS

BUGS

SOLVED BUGS

HISTORY

The following is kept here for archive purpose only

  1. Read this fbsplash howto, most of the information is valid...
  2. Build a kernel with the correct fbsplash patch, c.f. the fbsplash download page (go to archive if you don't find the suitable patch for your kernel).
    1. Make sure you have:
      1. # CONFIG_FB_TILEBLITTING is not set
      2. CONFIG_FB_SPLASH=y
      3. CONFIG_FB_...=y or m, corresponding to your graphic card
      4. CONFIG_INPUT_EVDEV=y (or m but I've read it should be y in the fbsplash page)
    2. Some people also apply the vesafb-tng patch
  3. Install your kernel
  4. Download the latest miscsplashutils package, build and install it. This will generate tools like fbset and fgconsole in /lib/splash/bin.
  5. Download the latest splashutils package, build and install it (every time you change your kernel it seems but I have not verified if this is really true)
    1. You will probably have to edit the top Makefile and change KLCC variable: KLCC = cc
    2. As of when I checked, version splashutils-1.1.9.10 has a Makefile that does not please debian's gcc. Here is a Makefile that works.
    3. make
    4. as root, make install
    5. as root, splash_geninitramfs -v -g /boot/initrd.img-`uname -r` -r 1024x768 Debian
  6. Download a bootsplash theme and convert it to a fbsplash theme using bootsplash2fbsplash:
    1. Beware I had troubles with bootsplash2fbsplash. Here how I got it to work:
      #
      ## Assuming theme is called "Debian"
      #
      mkdir -p /etc/splash
      rm -rf /etc/splash/Debian
      mkdir -p /etc/bootsplash/themes
      cd /tmp
      wget http://www.bootsplash.de/files/themes/Theme-Debian.tar.bz2
      cd /etc/bootsplash/themes
      tar -jxvf /tmp/Theme-Debian.tar.bz2
      cd ..
      ln -s themes/Debian .
      bootsplash2fbsplash Debian
      
  7. Download any theme and untar it in a directory /etc/splash, for example:
    1. mkdir -p /etc/splash; cd /etc/splash; rm -rf debian-1; wget http://www.bootsplash.de/files/themes/Theme-Debian.tar.bz2; tar -jxvf Theme-Debian.tar.bz2; rm -f current; ln -s Debian current
    2. locate font luxisri.ttf (I know it is in fft-xfree86-nonfree package, I have it elsewhere but owned by no package... oups)
    3. cp /usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf /etc/splash
    4. Rename /etc/splash/Debian/images/bootsplash-1024x768.jpg to /etc/splash/Debian/images/verbose-1024x768.jpg
    5. Move /etc/splash/Debian/config/bootsplash-1024x768.cfg to /etc/splash/Debian/1024x768.cfg
    6. Make sure that /etc/splash/Debian/1024x768.cfg contains:
      1. pic=/etc/splash/Debian/images/verbose-1024x768.jpg
      2. silentpic=/etc/splash/Debian/images/silent-1024x768.jpg
  8. Add to your kernel parameters:
    1. For vesafb: video=vesafb:ywrap,pmipal vga=791 splash=silent,fadein,theme:Debian quiet CONSOLE=/dev/tty1
    2. For vesafb-tng: video=vesafb:ypan,1024x768-32 splash=silent,fadein,theme:Debian quiet CONSOLE=/dev/tty1
    3. For radeon: video=radeonfb:1024x768-32
    4. Adapt these parameters to your needs (in particular the framebuffer driver, beware that I ONLY got vesafb creating /dev/fb0 at the early startup, and the theme)
  9. Patch your /etc/init.d/rc script:
    1. rc.patch
  10. Reboot and cross-fingers. Worked for me

Jean-Damien Durand (drop me a line)