Linux系统应用--修改开机logo
硬件平台: 树莓派4B
内核版本: linux-rpi-4.19
修改开机logo图片:
1.首先把PNG图片转换成ppm224文件
# pngtopnm logo.png > logo.pnm
# pnmquant 224 logo.pnm > logo224.pnm
# pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm
2.将文件替换drivers/video/logo/logo_linux_clut224.ppm
# cp logo_linux_clut224.ppm drivers/video/logo/
3.重新编译内核即可。
修改logo数量:
修改fb_show_logo函数:
// drivers/video/fbdev/core/fbmem.c
int fb_show_logo(struct fb_info *info, int rotate)
{
int y;
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
num_online_cpus()); //最后一个参数代表logo数量
y = fb_show_extra_logos(info, y, rotate);
return y;
}
修改logo中心对齐:
1.修改fb_show_logo_line函数image.dx,image.dy的值:
// drivers/video/fbdev/core/fbmem.c
image.dx = (info->var.xres - logo->width) / 2;
image.dy = (info->var.yres - logo->height) / 2;
2.修改fbcon_prepare_logo函数中logo_height的值
// drivers/video/fbdev/core/fbcon.c
logo_height = fb_prepare_logo(info, ops->rotate);
// 添加这一行
logo_height+= (info->var.yres - logo_height) /2;
Note:info->var.xres和info->var.yres是分辨率
配置选项:
Device Drivers --->
Graphics support --->
[*]Boot logo --->
[*] Standard 224-color Linux logo
Device Drivers --->
Graphics support --->
Console display driver support --->
<*> Framebuffer Console support
如果编译时提示错误:
drivers/video/logo/logo_linux_clut224.ppm: Binary PNM is not supported
Use pnmnoraw(1) to convert it to ASCII PNM
原因是因为ppm 图片是bin格式,需要转换成ascii 格式:
# pnmnoraw logo_linux_clut224.ppm > logo_linux_clut224_ascii.ppm