制作.ppm格式Linux内核启动logo

来源:互联网 发布:mysql数据库创建表格 编辑:程序博客网 时间:2024/05/16 12:47

【转】制作.ppm格式Linux内核启动logo

          在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片!

          以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下。

          经过在网上的搜索,和实际验证,制作Linux启动logo的步骤如下:

          1、在Linux系统中安装所需的包netpbm。我用的Fedora 10,刚开始安装命令是yum install netpbm,安装完成后,发现系统中还是没有相关的命令,如下

          看来是相关的包没有安装完整,又使用命令yum install netpbm*,又安装了两个包

Dependencies Resolved

================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 netpbm-devel        i386        10.47.04-1.fc10           updates         96 k
 netpbm-progs        i386        10.47.04-1.fc10           updates        1.9 M

再看,发现相关的命令就有了

[root@localhost developer]# png
pngcomp   pngcrush  pngnq     pngtopam  pngtopnm 

2、logo图片改成.ppm格式。首先你要有个和自己屏幕分辨率一样或者小于屏幕分辨率的图片,如linux_iunin_logo.png

    ①将png图片转成pnm

     pngtopnm linux_iunin_logo.png > linux_iunin_logo.pnm

    ②将pnm图片的颜色数限制在224色

    pnmquant 224 linux_iunin_logo.pnm > logo_iunin_clut224.pnm

    ③将pnm图片转换成我们需要的ppm

    pnmtoplainpnm logo_iunin_clut224.pnm > logo_iunin_clut224.ppm

也可以使用软件,比如友善之臂的loglmaker,可以直接把图片转换成.ppm格式的。

 

3、将logo_iunin_clut224.ppm logo图片放到合适的地方。移至drivers/video/logo目录。

    将logo_iunin_clut224.ppm logo移至Linux内核目录下的drivers/video/logo目录,从新编译内核,烧到板子上,即可看到你的图片了!




补充:

1 、ubuntu下转换PPM:

sudo get-apt install netpbm

bmp图片使用bmptoppm.jpg,png,gif都有相应的topnm工具。

   $bmptoppm pic.bmp > temp1.ppm //生成ppm
   $ppmquant 224 temp1.ppm > temp2.ppm  //转换成224颜色
   $pnmnoraw temp2.ppm > logo.ppm   //转换成ascii格式
logo.ppm就是需要的图像了。



 2.修改内核配置选项

  (1)Device Drivers --->

  Graphics support --->

  [*]Boot logo --->

  [*] Standard 224-color Linux logo

  支持kernel logo

  (2)Device Drivers --->

  Graphics support --->

  Console display driver support --->

  <*> Framebuffer Console support

  不选该项无法在屏幕上显示。

  重新编译源码启动就是替换后的logo了,但是没有居中全屏显示。

  3.居中全屏显示

  (1)修改源码/driver/video/fbmem.c中的fb_show_logo_line函数

  //image.dx=0;

  //image.dy=y;

  image.width = logo->width;

  image.heigh = logo->height;

  增加

  +image.dx = (info->var.xres / 2) - (image.width / 2);

  +image.dy = (info->var.yres / 2) - (image.height / 2);

  (2)修改源码/driver/video/console/fbcon.c中的fbcon_prepare_logo()函数

  在logo_height = fb_prepare_logo(info, ops->rotate);后增加下面一行代码

  +logo_height += (info->var.yres / 2) - (logo_height / 2);

  经过以上方式重新编译内核启动就会看到修改的内核logo能够居中全屏显示了。

  经过上面的方式,内核logo已经可以正常显示,但是会被android开机第一个logo(白色“A N D R O I D”文本字样)给快速的刷新掉,导致给人一闪而过的感觉。所以实际当中还要把它给屏蔽掉。



原创粉丝点击