修改linux内核的开机图片(小企鹅)

windows中把一张xx.jpg的图片转换成xx.bmp的图片方法:


linux中生成ppm图片(ppm图片应该是其他格式的图片解析成数据序列的文件)

【方法1】 转换方法如下:

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就是需要的图像了(如果转换过程中出错,那么试着png图片格式转换成ppm图片格式)


【方法2】转换方法如下:

随便一款编辑图片软件把当前的图片保存成png格式,例如linuxlogo.png。然后在Linux下使用下面的命令:

# pngtopnm linuxlogo.png > linuxlogo.pnm 
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm 
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm

然后用生成的linuxlogo224.ppm替换/usr/src/linux-2.6.8.1/drivers/video/logo/logo_linux_clut224.ppm(最好先做好备份),然后删除同一目录下的logo_linux_clut224.c文件,重新编译内核,启动之后就可以在屏幕左上方看到自己的Logo了。



(使用windows下面的gimp软件, 在百度搜索栏输入gimp即可下载到该软件)

【方法3】转换方法如下:(强烈建议使用该方法lin)

软件gimp下载地址:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=gimp%20&rsv_pq=9ee1f00f00028e99&rsv_t=af6azCYDbvbhBkRfO3DMR%2BbTf4uLVxd%2FpIIEHDcID1PyoV%2BhQWiyXqt6OVA&rqlang=cn&rsv_enter=0&rsv_sug3=2&rsv_sug1=3&rsv_sug7=100&inputT=11412&rsv_sug4=11412

1、安装windows版下的gimp软件成功后,打开该软件

     打开任何格式的一张将要转换的图片

     选择:图像--->模式--->索引颜色转换--->最大颜色数量设置为(224)--->转换

     还可以通过:图像--->缩放图像--->设置想要的图像大小(如320*240)

     最后:文件--->另存为--->选择ppm格式--->保存格式为ASCII,便可生成xxx.ppm文件了

 

2、将转换好的图片拷贝到 drivers\video\logo\ 替换 logo_linux_clut224.ppm

     删除 logo_linux_clut224.c和logo_linux_clut224.o

     重新make zImage



把生成的ppm文件放到指定的目录下

一、最简单的方法:把你的图片替换掉小企鹅图片重新变异即可。

把制作好的ppm文件(博客里有制作方法)拷贝到kernel源码的driver/video/logo中,把旧的logo_linux_clut224.ppm删除或者重命名,把刚制作好的ppm图片重命名为logo_linux_clut224.ppm,然后放入driver/video/logo中,删除之前由logo_linux_clut224.ppm文件生成的logo_linux_clut224.c以及logo_linux_clut224.o文件!然后make clean;make uImage





【调试过程中遇到的问题】

1.如果转换的ppm格式不对,编译内核时会直接报错;

2.转换的ppm格式对了(编译内核通过没报错),启动内核一直报错(也就是没进入到显示开机logo界面),说明制作成的ppm的图片大小>LCD屏幕的尺寸了,需要调整制作的ppm文件的大小了;先调整为80*80,机子启动能显示logo后,慢慢往上调大ppm图片大小

3.如果你的机子是4核的(4张logo一字排开),当前想只显示一张即可并全屏显示,那么可以先设置logo居中,

logo居中:

1、设置logo图片在屏幕中的位置

vi drivers/video/fbmem.c

找到"fb_show_logo_line"函数,把

image.dx = 0;

image.dy = y;

改为

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

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

注:

info->var.xres和info->var.yres是分辨率大小

610和206是logo图片的大小

或者如下修改

#ifdef CONFIG_LOGO_LOWERPOWER_WARNING

if(1 == get_battery_status()){
image.dx = (info->var.xres/2)-(logo->width)/2;
image.dy = (info->var.yres/2)-(logo->height)/2;
}else{
image.dx = 0;
image.dy = y;
}
#else
//image.dx = 0;
//image.dy = y;
image.dx = (info->var.xres/2)-(logo->width)/2;
       image.dy = (info->var.yres/2)-(logo->height)/2;

#endif

那么就只显示一张图片了,如果此时的图片是不全屏的,并且是该图片与LCD屏幕的方向成90度,可以进行以下的调整:

i:先在制作ppm图片时把方向调整为和LCD屏幕一致的方向;

ii:如何在制作ppm图片时通过图片->缩放功能,把ppm图片制作成和LCD屏幕尺寸一致大小即可




--------------------------分割线---------------------------------

上面的所有方法主要总结为:

在LINUX中使用命令把像素为800*480格式为xx.bmp或者 xx.png的图片变成xx.ppm格式的图片;(一般使用可牛软件把一张xx.jpg的图片裁剪成为像素为800*480格式为xx.bmp或者xx.png的图片)


或者在PC的XP操作系统中下载GIMP软件,把xx.jpg图片变成xx.ppm格式的图片(这种方法很麻烦,建议少用,除非上面再Linux中用命令生成的ppm文件都不能用)


最后修改xx.ppm格式的图片名字为logo_linux_clut224.ppm

然后用该文件替换旧的/usr/src/linux-2.6.8.1/drivers/video/logo/logo_linux_clut224.ppm(最好先做好备份)

然后删除同一目录下的logo_linux_clut224.c文件和logo_linux_clut224.o文件

最后make clean 

make uImage



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值