Copyright © 2003 Dennis Herbrich <dennis@archlinux.org>
Thu Aug 7 08:57:49 2003
To use the nifty boot splashscreen feature, you will need:
Unfortunately the official bootsplash webpage at
http://www.bootsplash.org
does
not (yet) offer a patch to the latest stable 2.4.21 kernel sources, which
ARCH LINUX has been using for some time. Fear not, however, as you can
download this patch and everything else you'll need from
http://archlinux.veloxis.de/howtos/bootsplash/downloads/.
There's even a package with some exemplary 1024x768 images you can use. If you
want higher resolutions than this, I suggest you check out e1904's homepage at
http://www.geocities.com/e1904/,
which is in fact where I got these pictures from originally. Major kudos to
e1904 not only for his (IMHO) very catchy pictures, but also for his help which
made this HowTo possible in the first place!
However, e1904 does not seem to offer a ready-made theme package for his higher
resolutions, so I'd strongly suggest you try to get this stuff working with the
1024x768 package first, and customize later where you see fit. It's much easier
that way.
Since you are using ARCH LINUX' fabulous ABS, you can quite easily build your own kernel package to integrate seamlessly with the package management. Follow these simple steps and see below for detailed instructions:
[...]
backup=('boot/kconfig')
source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-$pkgver.tar.bz2 \
linux-gcc3-$pkgver.patch bootsplash-3.0.7-$pkgver-vanilla-1.patch config)
build() {
rm -rf $startdir/pkg/*
cd $startdir/src/linux-$pkgver
patch -Np1 -i ../linux-gcc3-$pkgver.patch
patch -Np1 -i ../bootsplash-3.0.7-$pkgver-vanilla-1.patch
cp ../config ./.config
[...]
You should also change the ''pkgrel'' value to ''custom1'' or something
similar to prevent a mixup with the official kernel packages.
CONFIG_EXPERIMENTAL=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_LOOP=y CONFIG_FB=y CONFIG_FB_VESA=y CONFIG_FBCON_SPLASHSCREEN=yAll but the last option is included in the stock kernel already, so unless you are working with a customized copy, only add the ''FBCON'' line somewhere to the file, the specific place does not matter.
Those folks who want to compile a totally custom kernel while they're at it
should consider a different way, namely downloading the used kernel sources
manually and untarring them somewhere in a temporary
directory. Then patch these sources by copying the bootsplash patch into the
kernel sources directory and running patch -Np1 -i ./bootsplash* from
within this dir. The patch should run flawlessly, so that you may then start
make menuconfig to configure your kernel according to your wishes.
First off you should load the configuration options from /boot/kconfig
and work from there to make your life easier. This file contains the
configuration options used by the currently installed kernel package. If you
know that you don't want to use these as a base, you probably know what you're
doing anyway. Once you're ready to configure your kernel, make sure you
activate the following options (choose ''yes'' not ''module'' where
possible):
Code maturity / Prompt Block devices / Loopback device support Block devices / RAM disk support Block devices / (4096) Default RAM disk size Block devices / Initial RAM disk (initrd) support Console / Frame-buffer / Support for frame buffer Console / Frame-buffer / VESA VGA graphics console Console / Frame-buffer / Use splash screen instead of boot logoAgain, the stock kernel has already everything enabled by default except for the last option. If the splash screen option is nowhere to be found, make sure that the code maturity option is activated to show you this experimental option! Also you should check whether the patch has been applied correctly. Do not use any other framebuffer support but VESA, it will most likely not work! Keeping them as modules is okay, although you might want to remove them anyway to conserve space. Do not forget to save your new configuration into some file, and copy this new configuration into the ABS directory as the ''config'' file to use.
With frame buffer support compiled in, you just need to tell the kernel which screen resolution to use. As you might have guessed this is done with the help of a kernel boot parameter that should be added to your lilo.conf or your GRUB kernel line. This parameter is ''vga=791'' for a resolution of 1024x768x16. Please note that the bootsplash needs a color depth of 16bit, nothing else will work!
You can retrieve more in-depth information on the config file formats for the bootsplash themes on the official page at http://www.bootsplash.org. The explanations there are a little sparse, but at least complete. This document will only explain how the arch-theme does it's magic, how to go on with fancier stuff like progress meters and little animations is on the ToDo list for a new version of this HowTo.
That being said, you should first create the /etc/bootsplash/themes directory and extract the arch-theme.tar.gz there, thus creating a new subdirectory called ''arch'' that contains the theme files used in this example.
Some background information to clear things up a bit; The ''splash'' utility included in the splashutils package (we will come to that later) expects a config file to parse. This config file must include such vital information like what picture(s) to use, where text output shall be placed and so on. A 'theme' therefore really is only a collection of config files for the splash utility and all pictures and other files that you may need.
You may now have a look at the configuration file for the boot splash screen which is located at arch/config/arch-1024-boot.cfg. This simple file does not contain many options; In fact it only makes clear that it's a version 3 config file, that the picture should actually be displayed, what color to use for the text and it's background, and in what area to write any text output. Not to forget it also sports a path to the actual file to display, one for the verbose and one for silent mode. Silent mode suppresses the display of boot messages in favor of an optional progress meter which involves some more setup with a wrapper script. That's why I left it disabled for now. ;)
Basing on this file, you could for example edit the referenced image to your liking and fiddle with the text color a bit. For now, leave everything alone and continue with the setup.
This example only makes use of the ''splash'' utility. To install it along with a few other helpful programs, download the binary package or the ABS PKGBUILD depending on your preference and build/install the splashutils package. You'll end up with the ''splash'' binary and it's friends getting installed to /usr/sbin.
Since the kernel does not have access to your harddrive at the early booting stage the splash screen is supposed to be shown, you need to make use of an initrd. Fortunately you don't need to create one yourself; This is where the splash utility comes in handy, as it creates an initrd automatically, based on the config file (=theme) you choose. All you need to do is running ''splash -s -f /etc/bootsplash/themes/arch/config/arch-1024-boot.cfg > /boot/initrd.splash'' to create a new initrd. Add this initrd to your lilo.conf or GRUB configuration and don't forget to re-run LILO. Again.
At this point you may want to reboot to cackle with glee over your new way cool boot splash screen. If it doesn't work, check the dmesg output for any errors and fix them.
Another cool thing to do with the ''splash'' utility is setting the background of your virtual consoles to a custom picture. The arch-theme package includes half a dozen config files to do exactly that. These config files are basically identical copies of the boot config, but refer to different pictures. That's it, everything else is untouched. I chose to use a different picture for each virtual terminal to distinguish them easily.
Actually that's something like a crude hack, but it works just fine. To set
the background image of a VC, one can use the -u option of the splash utility.
Putting a handful of these commands into your /etc/rc.local will set
the background images right after bootup, and all is dandy. My rc.local got
these entries:
# Set background images on consoles /usr/sbin/splash -s -u 0 /etc/bootsplash/themes/arch/config/arch-1024-vt1.cfg /usr/sbin/splash -s -u 1 /etc/bootsplash/themes/arch/config/arch-1024-vt2.cfg /usr/sbin/splash -s -u 2 /etc/bootsplash/themes/arch/config/arch-1024-vt3.cfg /usr/sbin/splash -s -u 3 /etc/bootsplash/themes/arch/config/arch-1024-vt4.cfg /usr/sbin/splash -s -u 4 /etc/bootsplash/themes/arch/config/arch-1024-vt5.cfg /usr/sbin/splash -s -u 5 /etc/bootsplash/themes/arch/config/arch-1024-vt6.cfg
You can of course add more VCs as you see fit, just modify the supplied images and config files, and add these to the rc.local. I am pretty sure you get the idea how it generally works.
Feedback is of course appreciated, even if it's only a short ''Works for me!'' message. If you have the time and inclination to elaborate on setting up the advanced features of the bootsplash config like progress meters, boxes, animations and the whole wrapper issue, you're cordially invited to do so! Please send any feedback to <dennis@archlinux.org>.