How To Use a Custom Boot Logo / Splash Screen
If you would like to display a custom logo on the frame buffer of your board as the Linux kernel is booting, follow these instructions after you have a successful desktop factory build.
Prerequisites
- Linux host with the GIMP Image Editor and netpbm utilities installed:
On Ubuntu/Debian:
sudo apt-get install gimp netpbm
In Fedora/CentOS:sudo yum install gimp netpbm netpbm-progs
Limitations
- The Boot Logo is limited to 224 colors. You can start with an image with more, but the ppmquant step will reduce the image to 224 colors.
- The logo will be displayed relative to the upper left hand corner of the screen.
Method
- Run the GIMP image editor. It can be started on the command line with:
gimp
- Open your logo image and scale it to fit your frame buffer. Some common frame buffer sizes are 320x240 and 480x272.
- Save the image as logo.ppm, when prompted for a format, choose raw.
- Run the following commands in the same directory you saved your logo.ppm:
ppmquant 224 logo.ppm > logo_224.ppm pnmnoraw logo_224.ppm > logo_final.ppm
- Copy the resulting logo_final.ppm to your kernel source directory replacing the default boot logo. If you are using the default Timesys kernel, this will be located at </path/to/your/factory>/build*/linux-<version>/drivers/video/logo/logo_linux_clut224.ppm
- If you are using an external kernel, the path from drivers/ is the same.
- Rebuild your kernel image by running
rm build_*/linux-<version>/.stamp_image_built && make
from your factory directory and boot the resulting kernel image on your board.
Troubleshooting
My logo doesn't display
- Make sure framebuffer support and boot logos are enabled in your kernel configuration. These options can be found in Device Drivers -> Graphics Support
- Make sure that the framebuffer console (Device Drivers -> Graphics Support -> Console display driver support -> Framebuffer Console support) is enabled in your kernel configuration.
- Check dmesg for the following message: boot-logo bigger than screen. Try using a smaller image. You are limited by the size of your framebuffer- the kernel will not resize for you. The default logo size is 80x80, so if you are having difficulty sizing, try that first.
- If your image is divisible by 8, but not by 16, then you need to disable the high resolution VGA console fonts (CONFIG_FONT_8x16) in your kernel configuration, and rebuild. In general, your image should be divisible by the VGA console font size of your system for best results.
- Enable Device Drivers -> Graphics Support -> Console display driver support -> Select compiled-in fonts
- Disable every option beneath that, except for Device Drivers -> Graphics Support -> Console display driver support -> VGA 8x8 font
The wrong logo is displayed
- If your kernel shows the Timesys boot logo rather than the default penguin, you will need to de-select the Timesys boot logo option in the kernel-menuconfig interface at:
Device Drivers->Graphics Support->Bootup logo->224-color TimeSys Linux logo