1、首先找到一张.png格式的图片,将图片的大小裁剪成自己想要的尺寸,这个事Windows自带的画图板就能完成
2、在你的虚拟机或者linuxOS中安装netpbm工具,这个工具的作用就是将一个.png格式的图片转换成ppm格式的,具体用法如下:
(1)、首先安装该工具:
sudo apt-get install netpbm
(2)、开始转换图片:
pngtopnm logo.png > logo.pnm
pnmquant 224 logo.pnm > logo224.pnm
pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm
(注意:这里将终生成的ppm文件命名为logo_linux_clut224.ppm是因为,linux内核启动默认的logo图片名称为该名称,如果我们不这样命名也行,但是需要修改一些文件,会比较麻烦,所以为了简单起见我们就这么做)
3、这样我们得到了ppm的图片,只要替换driver/video/logo下面的logo_linux_clut224.ppm,删除logo_linux_clut224.c logo_linux_clut224.o (注意,这里的.o .c文件一定要删除再编译,不然内核就不会编译你的新logo),然后编译内核得到镜像就可以了
4、如果你的内核配置没问题那么logo 显示也就没什么问题,这里对于内核的配置简单介绍一下:
$ makemenuconfig //在内核里面选上logo 支持
DeviceDrivers --->
[*]Graphics support --->
[*]Bootup logo --->
[*] Standard black and whiteLinux logo
[*] Standard 16-color Linuxlogo
[*] Standard 224-color Linuxlogo
5、不难发现我们的logo总是显示在屏幕的左上角,那么下面我们需要改一下内核源码,让logo居中全屏显示:
vi driver/video/fbmem.c
找到“fb_show_logo_line”函数,进行如下修改:
//image.dx=0;
//image.dy = y;
image.width = logo->width;
image.height = logo->height;
image.dx = (info-> var.xres / 2) - (image.width / 2);
image.dy = (info -> var.yres / 2) - (image.height / 2);
保存退出,我们还需要修改driver/video/console/fbcon.c文件
vi 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就可以在屏幕上居中全屏显示 了
6、可能还存在一个问题,就是如果cpu是四核的话,你会发现在屏幕上会显示四个logo,当然如果你的logo比较大,在屏幕上只能显示一个logo图片,那么也就只显示一个logo 不会显示四个,至于这个问题我还没有找到解决方案,希望读者有idear能告知我一声1979234659@qq.com,谢谢!