修改Linux启动Logo技术

1、 修改启动Logo,换成自定义的图片

目的:开机后显示自定义的图片,替代小企鹅。

(1)       准备一张.png图片

(2)       使用Linux命令将图片转换为ppm图片:

# pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm

# pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224.pnm

# pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm

(3)       将新生成的logo_linux_clut224.ppm替换掉drivers/video/logo/ logo_linux_clut224.ppm,并删除logo_linux_clut224.c logo_linux_clut224.o文件。

(4)       重新编译内核。

2、 linux启动logo设置显示在屏幕中间位置

(1)       修改linux2.../drivers/video/fbmem.c里面的fb_do_show_logo函数;

static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,

                         int rotate, unsigned int num)

{

       unsigned int x;

 

       int xoff,yoff;

       /**for central logo**/

       xoff = (info->var.xres - num * (fb_logo.logo->width + 8))>>1; //得到中间x坐标

       yoff = (info->var.yres - num * (fb_logo.logo->height + 8))>>1; //得到中间y坐标

 

       if (rotate == FB_ROTATE_UR) {

              for (x = 0;

                   x < num && image->dx + image->width <= info->var.xres;

                   x++) {

                     image->dx = xoff;

                     image->dy = yoff;

                     info->fbops->fb_imageblit(info, image);

                     image->dx += image->width + 8;

              }

       } else if (rotate == FB_ROTATE_UD) {

              for (x = 0; x < num && image->dx >= 0; x++) {

                     info->fbops->fb_imageblit(info, image);

                     image->dx -= image->width + 8;

              }

       } else if (rotate == FB_ROTATE_CW) {

              for (x = 0;

                   x < num && image->dy + image->height <= info->var.yres;

                   x++) {

                     info->fbops->fb_imageblit(info, image);

                     image->dy += image->height + 8;

              }

       } else if (rotate == FB_ROTATE_CCW) {

              for (x = 0; x < num && image->dy >= 0; x++) {

                     info->fbops->fb_imageblit(info, image);

                     image->dy -= image->height + 8;

              }

       }

}

(2)       上述修改后在本地系统上Logo可能不能显示,根据查资料判断,在开发板上不会出现这种情况(自己的推断,还没有烧写开发板内核),解决方法是修改显示Logo的高度,在linux2.../drivers/video/console/fbcon.c中的fbcon_prepare_logo函数,找到代码:logo_height = fb_prepare_logo(info, ops->rotate);然后根据自己的情况再添加一个偏移量,如:logo_height = fb_prepare_logo(info, ops->rotate)+350;就可以正常的显示了。显示效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值