Linux:修改u-boot、kernel logo显示及开机进度条

1、修改u-boot开机logo步骤

  • a. 准备一张8位(256色)bmp格式的图片;

  • b. 将图片放到u-boot源码的tools/logos/目录下;

  • c. 修改tools/Makefile指定显示的图片:

    # Use board logo and fallback to vendor
    ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
    LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
    else
    ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
    LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
    endif
    endif
    
    # 指定显示的图片,不用管前面设置的是什么,这里都会覆盖掉
    LOGO_BMP= $(srctree)/$(src)/logos/test.bmp
    
  • d. 编译烧录即可。


2、修改kernel启动log步骤

  • a. 准备一张ppm格式的图片(Ubuntu环境下可参考以下命令生成):

    sudo apt install netpbm 	# 安装必要的工具
    pngtopnm logo-linux.png > logo-linux.pnm 				 # 转换成pnm格式文件
    pnmquant 224 logo-linux.pnm > logo-linux224.pnm 		 # 修改最大颜色数量为224
    pnmtoplainpnm logo-linux224.pnm > logo_linux_clut224.ppm # 转换为ascii格式
    
  • b. 覆盖掉原来的drivers/video/logo/logo_linux_clut224.ppm文件;

  • c. 删除编译自动生成的logo_linux_clut224.clogo_linux_clut224.o文件;

  • d. (可选)修改图片开始显示位置(这里以居中显示为例):

    --- a/drivers/video/fbdev/core/fbmem.c
    +++ b/drivers/video/fbdev/core/fbmem.c
    @@ -498,8 +498,10 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
                    fb_set_logo(info, logo, logo_new, fb_logo.depth);
            }
    
    -       image.dx = 0;
    -       image.dy = y;
    +       //image.dx = 0;
    +       //image.dy = y;
    +       image.dx = info->var.xres/2 - image.width/2;
    +       image.dy = info->var.yres/2 - image.height/2;
            image.width = logo->width;
            image.height = logo->height;
    
  • e. (可选)禁止LCD光标显示(将函数改为空函数):

    --- a/drivers/video/console/fbcon.c
    +++ b/drivers/video/console/fbcon.c
    @@ -363,6 +363,7 @@ static void fbcon_update_softback(struct vc_data *vc)
    
     static void fb_flashcursor(struct work_struct *work)
     {
    +#if 0
            struct fb_info *info = container_of(work, struct fb_info, queue);
            struct fbcon_ops *ops = info->fbcon_par;
            struct vc_data *vc = NULL;
    @@ -393,6 +394,7 @@ static void fb_flashcursor(struct work_struct *work)
            ops->cursor(vc, info, mode, softback_lines, get_color(vc, info, c, 1),
                        get_color(vc, info, c, 0));
            console_unlock();
    +#endif
     }
    
  • f. 配置内核打开以下选项:

    Device Drivers  --->
        Graphics support  --->
        	[*] Bootup logo  --->
        		[*] Standard 224-color Linux logo 
    
  • g. 编译烧录即可。


3、添加开机进度条步骤

  • a. 安装必要的软件:

    sudo apt install libgdk-pixbuf2.0-dev
    
  • b. 下载psplash源码:

    git clone git://git.yoctoproject.org/psplash
    
  • c. 准备一张logo图片和一张进度条图片(皆为png格式,名字随意,如logo.png、log-bar.png;可以参考同目录下的base-images目录里的图片);

  • d. 进入下载的psplash源码包里进行制作:

    ./make-image-header.sh logo.png POKY 		# 生成logo-img.h
    ./make-image-header.sh logo-bar.png BAR 	# 生成logo-bar-img.h
    
  • e. 修改psplash.c,将头文件包含修改为前面制作生成的:

    //#include "psplash-poky-img.h"
    //#include "psplash-bar-img.h"
    #include "logo-img.h"
    #include "logo-bar-img.h"
    
  • f. 使用autotools工具生成Makefile文件:

    aclocal && autoheader && automake --add-missing && autoconf
    
  • g. 修改Makefile.am文件,将psplash-poky-img.hpsplash-bar-img.h分别修改为前面生成的logo-img.hlogo-bar-img.h

    psplash_SOURCES = psplash.c psplash.h psplash-fb.c psplash-fb.h \
                      psplash-console.c psplash-console.h           \
              psplash-colors.h psplash-config.h     \
              logo-img.h logo-bar-img.h $(FONT_NAME)-font.h
    
  • h. 配置生成Makefile文件:

    ./configure --host=arm-linux-gnueabihf
    
  • i. 执行make命令进行编译,会在当前目录下生成psplash psplash-write两个程序;

  • j. 将生成的两个可执行程序替换掉系统中的/usr/bin目录下对应的程序(它们会被/etc/init.d//etc/rcS.d目录下的脚本在开机时执行)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-QWERT

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值