/image/linux-2.6.14.1/drivers/video/logo
=============================
在配置内核的时候选中了启动Logo的支持。
使用下面的方法可以将企鹅的Logo换成自己喜欢的任意图片。
首先准备一幅自己喜欢的图片,然后将背景涂成黑色。然后将该图片保存成png格式,例如linuxlogo.png。在Linux下使用下面的命令:
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
然.ppm替换/usr/src/linux-2.6.8.1/drivers/后用生成的linuxlogo224video/logo /logo_linux_clut224.ppm(最好先做好备份),然后删除同一目录下的logo_linux_clut224.c文件,重新编译内 核,启动之后就可以在屏幕左上方看到自己的Logo了。
=============================
首先分析一下Logo的显示代码:
不难发现Logo显示是在加载显示驱动fb后由kernel/drivers/video/fbcon.c中的fbcon_show_logo函数来完成的。
fbcon_show_logo函数中有很多兼容性代码,不是都会用到的!我们用的是TFT真彩屏,估计应该是CONFIG_FBCON_CFB24之类的。
再仔细看一下,这里用到的显示数据均来自kernel/include/linux/linux_logo.h。这里同样也有一些兼容性的数据,其中对我们有用的是:
linux_logo_red[] —— 调色板中的红色分量
linux_logo_green[] —— 调色板中的绿色分量
linux_logo_blue[] —— 调色板中的蓝色分量
linux_logo[] —— Logo图案的点阵
在 fbcon_show_logo里只做了256色的显示,所以要先设置一个RGB调色板。这里的调色板是从0x20色开始编的,所以实际好象只有最多 224色的显示。linux_logo.h里默认是做了一个214级的灰度调色板,想要彩色的话就自己修改吧!(注意从0x20开始,0-0x1f的32 种颜色不能用)
再看linux_logo[],这是Logo图案的点阵。因为是256色的图,所以每点为一个Byte。Logo图案是 80*80大小,所以这里总共有6400 Byte。一共是800行,每行8 Byte即8 Point,每10行数据对应Logo图案中一行。可以先自己试试放一些简单图形进去显示看看。(同样注意颜色要从0x20开始,0-0x1f的32种颜 色是不确定的)
当然你不会只想显示一些简单图形,而是希望能把收藏的漂亮图片放上去。这个就有点难度了,因为没有现成的工具好用。建议先找个比较好用的图象编辑软件吧(我用的PhotoShop)。这里提供两个方法加工图片:
1) 先搞一个256色调色板,前面32个颜色空着,把后面224种颜色设一下吧。注意要尽量把颜色选全一些,要能覆盖到整个颜色区域上。这样就有一个通用的调 色板,可适用所有图片,但颜色的真实性稍差。然后把自己的图片打开,先将颜色设置到RGB空间里,然后裁剪/缩放到80*80象素的尺寸,再将颜色优化到 先前定义好的调色板里,图片就加工好了。
2)不用通用调色板,打开自己的图片,先将颜色设置到RGB空间,裁剪/缩放到80*80象素的尺寸,然后指定优化为224色图象。这样图片就加工好了,但其调色板就是专用的,不适合用到其他图片里。
不 管用那一种方法加工图片,最终还需要把数据放到我们的linux_logo.h里。这也是一个比较麻烦的事。调色板可以直接保存为文件,然后自己做个小程 序读出来就可以了。图片的点阵比较难取,当然也可以自己做个程序去取屏幕上的点,不过比较困难。建议可以将图片保存为TIF之类的非压缩格式,然后可以从 图象文件中的固定位置取点阵数据。
再接下来就是编译kernel了。编译好用“load flash kernel x”下载到Flash里。重新启动,是不是看到你自己的图片了?祝你早日成功!
阅读(2115) | 评论(1) | 转发(1) |