硬件平台: 树莓派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