Bootsplash with progress bar HOWTO      2004.10.30 @ 10:33:12 AM

This guide will allow you to add a graphical bootup screen with a progress bar on your debian-based linux distribution. The idea is to make this tedious process available to any user.

It took me a while to find all the pieces as this process involves patching the kernel, modifying bootup scripts and installing applications. Not to mention that there are multiple branches of development and dead projects involved and broken links all over the place (primarily because Suse has decided to remove bootsplash in their FTP servers). Therefore, I have put together a tarball with all the things you need.


First of all, download my bootsplash package from this location:
http://julian.coccia.com/stuff/bootsplash.tar.bz2

Unpack the tarball with:
tar -jxf bootsplash.tar.bz2


PATCHING YOUR KERNEL

First, you need your kernel sources in place. If you have never compiled your kernel before, get the latest kernel source from http://www.kernel.org

I have included here the bootsplash patch for the latest version of the kernel (2.6.8.1). It is very important to use the right patch, which can be downloaded from http://www.bootsplash.de. I have personally wasted a long time as I started with the patch for 2.6.8 on my 2.6.8.1 kernel which applied cleanly but did not work. Just make sure you get the right one ; ) 

Now apply the patch as follows (make sure you specify the full location of your bootsplash patch)

# cd /usr/src/linux
# patch -p1 < bootsplash-3.1.4-sp3-2.6.8.1.diff
# make menuconfig


Configure your kernel as follows:

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Processor type and features --->
[*] MTRR (Memory Type Range Register) support
Device Drivers --->
Block devices --->
<*> Loopback device support
<*> RAM disk support
(4096) Default RAM disk size
[*] Initial RAM disk (initrd) support
Graphics support --->
[*] Support for frame buffer devices
[*] VESA VGA graphics support
Console display driver support --->
[*] Video mode selection support
<*> Framebuffer Console support
Bootsplash configuration --->
[*] Bootup splash screen


Finish up with:

# make
# cp arch/i386/boot/bzImage /boot/kernel-patched


INSTALLING THE FRAMEBUFFER UTILITIES

Bootsplash requires a set of framebuffer utilities in order to display the background image and progress bar. It was hard to find all these tools in one package, specially the "progress" application. Fortunately there is a mandrake RPM package that has it all. I have converted this package with "alien" and you can simply install it with:

dpkg -i bootsplash_2.1.13-2_i386.deb


INSTALLING A BOOTSPLASH THEME

The actual image to be displayed at bootup time is defined along with the parameters in a configuration file. I have packed a theme called NewLinux on the tarball but you have tons to choose from at http://www.bootsplash.de. Let's install the one I have included in the tarball with:

cp -vax bootsplash/NewLinux /etc/bootsplash/themes


Once your theme is correctly installed, you must generate the bootup image with:

splash -s -f /etc/bootsplash/themes/NewLinux/config/bootsplash-1024x768.cfg > /boot/initrd.splash

(make sure a non zero-length file is generated at /boot/initrd.splash)


CONFIGURING YOUR BOOTLOADER

Your new kernel kernel is located at /boot/kernel-patched. Therefore you must create a new entry on your bootloader. If you are using LILO, this translates to:

vga=0x317

image=/boot/kernel-patched
label=Linux-bootsplash
root=/dev/hda3
initrd=/boot/initrd.splash
append="splash=silent"


(make sure you set your right root partition instead of /dev/hda3)

Last, you must set your framebuffer resolution here as well. I have set 1024x768x16 in the example above by specifying vga=0x317. If you want to try other resolution, here is a table of values:

Colors 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
8 bits 0x300 0x301 0x303 0x305 0x161 0x307 0x31C
15 bits  ? 0x310 0x313 0x316 0x162 0x319 0x31D
16 bits  ? 0x311 0x314 0x317 0x163 0x31A 0x31E
24 bits  ? 0x312 0x315 0x318  ? 0x31B 0x31F


Execute "lilo" when you are ready

MODIFYING YOUR INIT SCRIPTS

As it stands now, you should see a bootsplash graphic when you boot up next time. However, if you want to see a moving progress bar as the services are started you must modify your init scripts.

The procedure is very well explained in the following URL: http://bulma.net/body.phtml?nIdNoticia=1812&nIdPage=3. However, I have included the modified rc and rcS script in order to save you the hassle. Simply backup up your current scripts and install the new ones with:

mv /etc/init.d/rc /etc/init.d/rc.bak
mv /etc/init.d/rcS /etc/init.d/rcS.bak
cp bootsplash/rc /etc/init.d
cp bootsplash/rcS /etc/init.d


I hope this helps you getting bootsplash to work without spending too much time ; ) 

All knowledge and software published in this website is released under the GNU General Public License (GPL)