picture      
patch downloads

Instructions and patch downloads

The patch has been divided into smaller pieces to make it easier to read and review. They should all be applied, in order.

The patches against 2.4.x were actually generated against 2.4.17, but apply correctly up to 2.4.18-pre9 at least. I'll rediff when 2.4.18 is released.

The patches against 2.5.x were generated against 2.5.3-dj4, but should apply to other 2.5.x kernels with a little bit of hacking.

For Linux 2.4.x For Linux 2.5.x
logo-01.patch.gz logo-01.patch.gz
logo-02.patch.gz logo-02.patch.gz
logo-03.patch.gz logo-03.patch.gz
logo-04.patch.gz logo-04.patch.gz
logo-05.patch.gz logo-05.patch.gz
logo-06.patch.gz logo-06.patch.gz

Patch Details

logo-01.patch

  • Preliminary cleanup. Moves definition of LOGO_H and LOGO_W from fbcon.c to each linux_logo.h that contains logo data. (Those header files are all removed by logo-05.patch)
logo-02.patch
  • Adds /scripts/tologo directory with ppm-to-header converter.
logo-03.patch
  • Adds /arch/i386/linux_logo.ppm - generic 80x80 penguin logo. This is a re-creation of the current logo, starting from Larry Ewing's original.
  • Graphical versions of the other architecture logos are needed, but I didn't know what they looked like so I didn't try to re-create them. For now, copy the i386 logo or use a picture of your cat...
logo-04.patch
  • Modifies Makefiles, includes to generate:
    include/video/linux_logo.h from
    arch/$(ARCH)/linux_logo.ppm
    at compilation time, and use the generated file instead of any distributed linux_logo.h files.
logo-05.patch
  • Exactly equivalent to: cd linux-2.x.y-z find include -name linux_logo* -exec rm -f {} \;
  • Note that the removed header files also #defined linux_logo_banner. I can't find any use of this #define, so it's gone. Please let me know if this is a problem for anyone.
logo-06.patch
  • Adds configuration option to set framebuffer cursor blink rate, or disable it completely. Useful to remove cursor from full- screen boot logo on appliance-like applications.
  • Also adds a sysctrl / proc interface to adjust blink rate.
logo-07.patch (still under development)
  • Adds a configuration option to completely remove the framebuffer logo from the kernel. (CONFIG_FB_LOGO)
  • Also removes the logo display code from fbcon.c and puts it in a new file, fbcon-logo.c, with quite a bit of cleanup along the way.
  • If CONFIG_FB_LOGO is not selected, fblogo.c is not compiled and linux_logo.h is not generated.
To change the linux logo

To customize the linux logo, first apply the patches to the kernel. This will give you a default logo file arch/$(ARCH)/linux_logo.ppm file. (If you don't know what "$(ARCH)" is for you, it's "i386", even if you have a P3 or Athlon.)

Replace that ppm with your own graphic. To do this, load your image in the Gimp, resize it to make sure the width is evenly divisible by 8, and then save it as a ppm. Choose the "raw" format when the Gimp asks you. Replace arch/$(ARCH)/linux_logo.ppm with file.

To put boot text on a secondary console

If you have added a large logo, or centered it on the screen you will probably want to set up your bootloader to put the kernel messages on a secondary console. This will remove all the text from the kernel boot screen, but if something goes wrong you will be able to switch to the secondary console to see the kernel messages.

The details for doing this depends on your bootloader. You need to add the line "console=/dev/tty2 CONSOLE=/dev/tty2" to the kernel command line. You could also use something other than tty2 if you desire.

If you are using the Grub bootloader, edit the menu.lst file, which is probably under /boot/grub, so the entry for your kernel looks something like:

kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 vga=788 console=/dev/tty2 CONSOLE=/dev/tty2

If you are using the LILO bootloader, edit the file /etc/lilo.conf, and on the append= line for your kernel, add the "console= ..." to whatever is already there.

For more information, read the LILO or Grub documentation.

Changelog

linuxlogo 0.4

  • Reworked patch into a set of sequential patches, changed some of the config options around, removed unimplemented options, etc.
  • Rediffed against 2.5.3-dj4
  • Rediffed against 2.4.17, tested against 2.4.18-pre9
linuxlogo 0.3 (minor update)
  • Changed the logo display option to a logo disable option
  • Cleaned up some help text, removed commented-out code
  • Rediffed to get cleaner diffs and also a single comprehensive diff
linuxlogo 0.2
  • Integrated Framebuffer Cursor Blink rate patch from Kyntola Tommi
  • Moved "tologo" build to drivers/video/Makefile from toplevel Makefile
  • Should work on all architectures now, only tested on i386.
  • Logo files are now in arch/$(ARCH)/linux_logo.ppm
  • linux_logo.h is now generated into include/video instead of include/linux
  • linux_logo.h build is now done from drivers/video/Makefile as a dependency of fbcon.o
  • drivers/video/Config.in now has definitions for all the features we want to add, and Documentation/Configure.help has help for all of them
linuxlogo 0.1
  • First version: builds include/linux_logo.h from toplevel linux_logo.ppm at compile time.

To-Do List:
  • Implement logo disable option.
  • Implement the logo SMP option (single or multiple logos).
  • Implement logo centering option.
  • Implement framebuffer foreground and background color options.
  • Consider defining a standard location for linux_logo.ppm outside the kernel tree distribution? This would remove the need to always copy the logo file into the kernel tree before compiling.
  • Test logos with widths not evenly divisible by 8, and fix if there is a problem with them.
  • Start discussions with other framebuffer developers about what they would be interested in for 2.5.
  • Integrate patch with the CML2 configuration to prepare for 2.5

Updated February 14, 2002