FreeBSD Splash Screen

General Information

FreeBSD allows for the configuration of a splash screen to replace the text displayed while booting. Often an image is preferred over plain text. Adding a splash screen will not eliminate the text that would have been displayed while booting. This text is always available by running dmesg.

Requirements

  1. root access
  2. This requires either a bitmap or a ZSOFT PCX image file. The image must be 256 colors (8 bit) or less and must be a supported resolution. By default the largest resolution supported is 320×200. However, if the vesa module is loaded, other resolutions up to 1024×768 may be possible, though 256 colors remains the maximum.

Configuration

This guide will demonstrate the configuration changes that must be made to loader that are required for a splash screen. These changes can be made in the /etc/loader.conf or in a /etc/loader.conf.local file. This guide will use /etc/loader.conf.local for all examples.

Using a Bitmap Image

Create /boot/loader.conf.local and add a line to it that will load the vesa kernel module. This can be done as root in one command:

# echo 'vesa_load="YES"' >> /boot/loader.conf.local

Add a second line that will load the bitmap kernel module.

# echo 'bitmap_load="YES"' >> /boot/loader.conf.local

Add a third line that will configure the bitmap image to be loaded at start up.

# echo 'splash_bmp_load="YES"' >> /boot/loader.conf.local

By default /boot/kernel/splash.bmp is the image that will be loaded. Copy the image to /boot/kernel/splash.bmp or this setting can be changed by specifying the path to the bitmap file using bitmap_name.

# cp /path/to/your/image.bmp /boot/kernel/splash.bmp

- or to change the default setting -

# echo 'bitmap_name="/path/to/your/image.bmp"' >> /boot/loader.conf.local

Test by rebooting.

Using a ZSOFT PCX Image

Create /boot/loader.conf.local and add a line to it that will loader the vesa kernel module. This can be done as root in one command:

# echo 'vesa_load="YES"' >> /boot/loader.conf.local

Add a second line that will loader the bitmap kernel module. This is needed even though a PCX image is being used.

# echo 'bitmap_load="YES"' >> /boot/loader.conf.local

Add a third line that will configure the PCX image to be loaded at start up.

# echo 'splash_pcx_load="YES"' >> /boot/loader.conf.local

By default /boot/kernel/splash.bmp is the image that will be loaded. To use a PCX file the bitmap_name setting needs to be changed:

# echo 'bitmap_name="/path/to/your/image.pcx"' >> /boot/loader.conf.local

Test by rebooting.

Troubleshooting

If the splash screen does not load, an error message will be available in /var/log/messages. Below is and example of two of such error messages.

Example 1

Feb  2 14:05:17 FreeBSD kernel: module_register_init: MOD_LOAD (splash_bmp, 0xc0a419e4, 0) error 2

Error 2 has been seen when the path to the image is incorrect or when bitmap_load is not set to YES.

Example 2

Feb  2 14:08:22 FreeBSD kernel: module_register_init: MOD_LOAD (splash_bmp, 0xc0a418c2, 0) error 19

Error 19 is common when the image is not a supported format. This means one of two things:

  1. The image has an invalid pixel size, meaning it is not 320×200, or with vesa loaded, a support pixel size up to 1024×768.
  2. If a bitmap, the image has more than 256 colors.
  3. If a PCX image, it is not an 8-bpp single planed image.
  4. To view availabe image sizes, run the following command from ttyv0:
# vidcontrol -i mode | awk '{print $5}' | grep x8

Speak Your Mind

*