linux logo的格式

转载 2012年03月26日 10:47:26

============================================
作者:yuanlulu
http://blog.csdn.net/yuanlulu


版权没有,但是转载请保留此段声明
============================================


1.Linux如何显示logo。
首先,内核镜像无法存储图片格式的文件,只能将图片转化为数组,然后将数组编译进内核。
内核启动的时候将数组中的数据传给frambuffer,从而显示出来。
内核的logo图片放在driver/video/logo/下面,目前支持pbm/pgm/ppm格式的图片,图片的格式可以参考:
http://hi.baidu.com/small__child/blog/item/53ac957d1ac7d9350dd7da7c.html

编译内核的时候,内核会首先调用内核目录下的scripts/pnmtologo将driver/video/logo/目录下的图片生成包含图片数据数组的C语言代码,scripts/pnmtologo的代码是scripts/pnmtologo.c.
pnmtologo生成的C语言代码在driver/video/logo/下面,会被编译进内核。

 


2.logo数组的格式
在driver/video/logo/下面有一个名为logo_dec_clut224.c的文件,它由logo_dec_clut224.ppm转化而来,内容大致如下
 
static unsigned char logo_dec_clut224_clut[] __initdata = {
 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0e,
 0x16, 0x16, 0x16, 0x1a, 0x1a, 0x1a, 0x1e, 0x1e, 0x1e, 0x22, 0x22, 0x22,。。。。。。。。。。
};
static unsigned char logo_dec_clut224_data[] __initdata = {
 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,.......................
};

const struct linux_logo logo_dec_clut224 __initconst = {
 .type  = LINUX_LOGO_CLUT224,
 .width  = 80,
 .height  = 80,
 .clutsize = 183,
 .clut  = logo_dec_clut224_clut,
 .data  = logo_dec_clut224_data
};

其中logo_dec_clut224_clut是调色板数组,每三个成员(RGB)代表一种颜色。比如下标为0、1、2这个三个成员代表一种颜色。
这个数组的大小是3的整数倍,具体大小由图片决定,数组大小除以3也就是图片包含的颜色总数。图片使用的颜色总数不能大于224.
logo_dec_clut224_data数组的成员是指向调色板数组的索引,但是它的值比实际值大32(=0x20).
比如第一个成员的内容为0x20(用十进制表示是32),所以它代表图片的第一个像素的颜色是调色
板数组中0、1、2这个三个成员代表一种颜色.
索引值index与RGB的换算关系如下(clut表示调色板数组):
R = clut[(index-32)*3]
G = clut[(index-32)*3 + 1]
B = clut[(index-32)*3 + 2]
由于索引值由一个字节表示,因此最多表示256钟颜色。由于实际值又统一加了32(0x20),
所以只能表示224钟颜色了。所以logo图片的颜色种类数不能超过224钟。暂时还没看内核保
留32以下的索引怎么用的,望看到相关的代码的兄弟能告诉我一声。

 

3.内核如何生成C语言代
码内核调用内核目录下的scripts/pnmtologo将driver/video/logo/目录下的图片生成包含图片
数据数组的C语言代码,scripts/pnmtologo的代码是scripts/pnmtologo.c.
这个文件的内容比较长,简单说一下。它读取driver/video/logo/下的图片
并在driver/video/logo/下创建同名(后缀不同)的C语言文件。
把图片的数据转化为内核接受的格式存储在数组中。这些C语言文件会被编译进内核。
内核生成 logo_dec_clut224.c的命令选项在driver/video/logo/.logo_dec_clut224.c.cmd(注意开头是一个点)中,内容如下:
cmd_drivers/video/logo/logo_dec_clut224.c := scripts/pnmtologo -t clut224 -n logo_dec_clut224 -o drivers/video/logo/logo_dec_clut224.c drivers/video/logo/logo_dec_clut224.ppm
这是一行,没有换行符。

kernel开机logo总结

希望朋友们多多指点,好的技术或心得一起分享: 看了不少显示kernel开机logo的帖子,在经过数次实验后,针对224位色格式的logo图片进行以下总结: 一.更换开机logo     嵌入式li...
  • qq_29729577
  • qq_29729577
  • 2016年01月25日 14:49
  • 2163

Linux2.6的LOGO制作与显示

在移植linux2.6.24到YC2440的过程中,在logo显示部分遇到问题,终于解决,特此记录。 一、首先说明logo显示相关程序。 (1)在driver/video/console/fb...
  • jack_a8
  • jack_a8
  • 2015年01月22日 21:47
  • 846

Linux内核启动中显示的logo的修改

1,配置内核,使内核启动时加载logo,在源代码的主目录下make menuconfig   Device Drivers  --->      Graphics support  ---> ...
  • CSDN_logo
  • CSDN_logo
  • 2015年08月17日 17:30
  • 1483

修改linux开机logo

编者:linux的开机默认logo是一只可爱的小企鹅。这里我们可以把它换成我们自己喜爱的图片,只要将linux-2.6.32.2/drivers/video/logo/linux_logo_clut2...
  • zhuangtim1987
  • zhuangtim1987
  • 2014年12月03日 14:46
  • 926

嵌入式Linux kernel LOGO的更换方法

http://blog.csdn.net/dong_zhihong/article/details/8651119   嵌入式Linux kernel LOGO的更换方法 ...
  • ruanjianruanjianruan
  • ruanjianruanjianruan
  • 2016年04月25日 23:00
  • 1794

修改linux内核开机logo并居中全屏显示

1.准备图片   使用ubuntu自带的绘图软件GIMP是最为快捷的方式,使用命令进行转换也可以,实际测试中用命令转换图片老提示错误,所以就用GIMP的方式处理了。具体流程如下: (1)打开GIMP软...
  • xuezhimeng2010
  • xuezhimeng2010
  • 2015年10月21日 09:36
  • 513

去掉linux光标和制作linux Logo

一、去除Llinux 的开机光标     在内核的当前目录进入到drivers/video/console/fbcon.c 文件     将static void fb_flashcursor(voi...
  • alifrank
  • alifrank
  • 2015年12月15日 11:43
  • 701

修改嵌入式linux开机logo

首先将需要替换的图片格式修改为可以在linux上显示的格式,这里我们使用图片工具...
  • gylltq
  • gylltq
  • 2014年05月17日 12:33
  • 914

【实战】嵌入式linux修改内核启动的LOGO界面

默认是小企鹅,现在我们换成一张自己的图片。准备好BMP或者PNG 图片,若是别的格式的图片,可以使用Windows自带的画图软件打开,然后另存为BMP或者PNG格式,Logo图片分辨率不大于LCD分...
  • fengyuwuzu0519
  • fengyuwuzu0519
  • 2017年06月19日 18:04
  • 517

修改linux内核kernel开机logo(小企鹅)

修改linux内核kernel的开机图片(原为小企鹅图片)。 我学习成长的一个学习笔记,谢谢! 本文主要是介绍三部分内容: 1》如何制作linux内核所需要的开机图片(ppm格式); 2》修改开机图片...
  • hellomxj1
  • hellomxj1
  • 2014年12月10日 21:25
  • 4026
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux logo的格式
举报原因:
原因补充:

(最多只允许输入30个字)