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.


  • 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


  • 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.


  1. Run the GIMP image editor. It can be started on the command line with:
  2. Open your logo image and scale it to fit your frame buffer. Some common frame buffer sizes are 320x240 and 480x272.
  3. Save the image as logo.ppm, when prompted for a format, choose raw.
  4. 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
  5. 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
  6. If you are using an external kernel, the path from drivers/ is the same.
  7. 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.


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.
    1. Enable Device Drivers -> Graphics Support -> Console display driver support -> Select compiled-in fonts
    2. 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