百度空间 | 百度首页 
 
查看文章
 
framebuffer LOGO -- the right way
2007-04-10 00:06

引用网址:http://gentoo-wiki.com/HOWTO_Linux_Logo_Hack

Basis

This HOW-TO is written for those that want to hack the linux bootup logo. The main files in the kernel for the vesa frame buffer bootup logo are: /usr/src/linux/drivers/video/* & /usr/src/linux/include/linux/linux_logo.h Those files are responsible for the bootup logo when the kernel starts in debug or quiet mode. If we want to change this logo we have to modify the files, by using the program that is appended at the end of this text.The image file that we have to use is a PCX image file with no more than 256 colors and not bigger than 786432 pixels(1024x768).

For more information you can also read the /usr/src/linux/Documentation/fb/vesafb.txt

Do it Right

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 Larry, 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
             [ ] <More logos>
             [*] 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 similar 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!

类别:Framebuffer | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu