Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1134818
  • 博文数量: 414
  • 博客积分: 10030
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 21:42
文章分类

全部博文(414)

文章存档

2011年(1)

2009年(1)

2008年(412)

我的朋友

分类: LINUX

2008-10-15 15:44:58

How to change Linux boot logo

from

As far as I know, this is the least "hacky" way you can get a custom logo. It preserves all the previous available logos, and lets you choose between them in the Kernel config.

It requires you to edit three files in the /usr/src/linux/drivers/video/logo directory, and (obviously) create the image(s) you want to appear. It only covers 224-colour logos - if you want 16-colour or black&white ones, you'll have to figure that out on your own. I did all this yesterday, and the kernel booted fine this morning with my new logo. I changed Tux to , so that's the example I'll be using throughout this tutorial. Of course you can change this to whatever you want - just make sure you're consistant with your names (eg. don't accidentally switch from "LARRY" to "BARRY" for one file).

OK, let's get down to it.

  • Create your image, (I used the GIMP), and save it as a PNG (mine's called larry.png). It might be a good idea to convert it to indexed (223 colours) first - this is going to happen later anyway, so you may as well get it how you like it now (whether you want it dithered, any custom palettes, etc). I should also point out that the default images are all 80x80 pixels, but you don't have to abide by that. As far as I know, you can go as big as you want (within reason).
  • Change to root, and put yourself in the directory we're working in:
$su - 
$cd /usr/src/linux/drivers/video/logo/
  • Convert the image with the netpbm tools (media-libs/netpbm):
$pngtopnm /path/to/larry.png | ppmquant -fs 223 | pnmtoplainpnm > logo_larry_clut224.ppm

Don't worry if the existing images seem to have more than one file each - the *.c and *.o ones get created automatically when you compile the kernel.

  • Open Kconfig in your favourite editor, and insert the following section (editing the first two lines as appropriate):
File: /usr/src/linux/drivers/video/logo/Kconfig
config LOGO_LARRY_CLUT224
bool "Gentoo-ised 224-colour logo"
depends on LOGO
default y

I put it underneath the entry for LOGO_LINUX_CLUT224, so it'll appear below the default logos in the kernel setup.

  • Open logo.c in your favourite editor, and insert the following sections. Everything's a bit more cosily packed in this file, so make sure you get them in the right place. Again, change everything that says "larry" to your chosen name. The bit between /* these parentheses */ is a comment, and doesn't make any difference. I changed it anyway.
File: /usr/src/linux/drivers/video/logo/logo.c

Add this to the block of similar definitions at the top of the file:

extern const struct linux_logo logo_larry_clut224;

Add this to the section headed by "if (depth >= 8) {":

#ifdef CONFIG_LOGO_LARRY_CLUT224
/* Gentoo-ised logo */
logo = &logo_larry_clut224;
#endif
  • Open Makefile ...blahblahblah... and add the following line to that big block of definitions at the top. You know the drill by now.
File: /usr/src/linux/drivers/video/logo/Makefile
obj-$(CONFIG_LOGO_LARRY_CLUT224)	+= logo_larry_clut224.o
  • You should be able to repeat those steps however many times you like if you want to add more than one image.
  • Save all the files, cd down to /usr/src/linux, and follow your normal kernel-rolling procedure - making sure that you select your new image in the configuration:
Linux Kernel Configuration: Kernel 2.6
Device Drivers ->
Graphics Support ->
[*] Support for frame buffer devices
[*] VESA VGA graphics support
VESA driver type ->

Console display driver support ->
[*] Video mode selection support
<*> Framebuffer Console support

Logo configuration->
[*] Bootup logo
[ ]
[*] Your Custom Logo

...and run make. (There is no need to run make modules_install.)

Finishing Up

This section is common to both methods.

  • Stick your newly customised kernel in its usual place under /boot
  • Make sure you've got a decent framebuffer by adding vga=0x318 or to your kernel's command-line:

NOTE: You can ignore this step if you selected vesafb-tng under "VESA driver type".

File: /boot/grub/menu.lst or /boot/grub/grub.conf
kernel (hd0,0)/vmlinuz root=/dev/sda3 vga=0x318
  • When you boot into the new kernel, you should see the fruit of your labours!


阅读(945) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~