修改linux内核的启动logo和禁用启动光标

Posted 请给我倒杯茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改linux内核的启动logo和禁用启动光标相关的知识,希望对你有一定的参考价值。

本文转载自:http://blog.csdn.net/hunanchenxingyu/article/details/40992947

1-1、制作logo的方法:
 首先选择一个自己喜欢的图片,png 或是bmp格式,这里选用这两个格式作为说明,
  然后将该图片传入到装有Linux PC比如(ubuntu),按照以下顺序你就可以制作一个你喜欢logo
  你必须安装以下的工具(pngtopnm,pnmquant,pnmtoplainpnm)
   ubuntu中这样安装:     apt-get install netpbm
$ pngtopnm linuxlogo.png > linuxlogo.pnm 
$ pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm 
$ pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm

或者

$bmptoppm pic.bmp > temp1.ppm //生成ppm
$ppmquant 224 temp1.ppm > temp2.ppm //转换成224色彩
$pnmnoraw temp2.ppm > linuxlogo224.ppm //转换成ascii格局


如许您制作的logo就已经胜利了,将linuxlogo224.ppm 
拷贝到/drivers/video/logo白件夹中的依据您的平台详细利用的哪个logo进行命名,
这里使用的是 logo_linux_clut224.ppm 那么替换这个即可,这里注意图片的大小对kernel image大小的影响。
然后编译kernel即可。
  
1-2、配置kernel的logo选项
 在内核路径下执行make menuconfig(make xconfig)
 a、选择虚拟控制台为控制台显示驱动做准备
   Device Drivers  --->Character devices  ---> Virtual terminal
   [*]   Support for console on virtual terminal
 b、选择虚拟控制台显示驱动
   Device Drivers  --->Graphics support  --->下有这个选项Console display driver support  --->
   根据你的硬件选择由Framebuffer还是VGA
      [*] Framebuffer Console support或者
      [*] VGA text console
 c、Device Drivers  --->Graphics support  --->
   <*> Support for frame buffer devices  
     <*> MXC Framebuffer support下选择是VGA还是TVOUT
            [*] tvout CH7024 on MX27 //TVOUT
            [*]support VGA daughter //VGA
  当然以上的配置选项,因平台而异会有些小的差别。
  做好以上两个步骤,你就可以重新编译内核,将其烧到开发板,接VGA或者TVOUT显示。
  这样你可以看到你自己制作的logo,你可以发现在logo的左下角有一个闪动的光标,接下来我们说说如何将这个光标去除。

2-1、如何将开机logo中的光标去除
 在内核的当前目录进入到drivers/video/console/fbcon.c文件
 将static void fb_flashcursor(void *private)和static void fbcon_cursor(struct vc_data *vc, int mode)制成空函数如下

static void fb_flashcursor(void *private)

{

       .................

}

static void fb_flashcursor(void *private)

{

#if 0

       .................

#endif

}

另外:

static void fbcon_cursor(struct vc_data *vc, int mode)

......................

}

static void fbcon_cursor(struct vc_data *vc, int mode)

#if 0

#endif

}

2-2、第二种方式:

drivers/video/console/Makefile
#obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
 
编译会遇到soft_cursor没有定义的问题,注释掉代码:
drivers/video/console/bitblit.c
//ABING
//      if (err)
//              soft_cursor(info, &cursor);
 
光标成功禁止。

*****************************************************************************

可以肯定的是这两种方法都没有深究下去,对于第一种如果我的logo是一个屏分辨率的logo那么启动到logo时就是黑屏,屏显示被翻页了,并且在进入到filesystem后仍然显示鼠标,第二种问题更多,需要修改的地方很多,一般都与 soft_cursor()有关;

那么如何实现呢?唯有从源头查起,继续。。。。。

以上是关于修改linux内核的启动logo和禁用启动光标的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核启动logo

linux内核配置界面有三种,启动光标配置界面的命令是

Linux修改开机启动logo

ARM开发板 嵌入式Linux 修改开机启动LOGO

基于SAIL-IMX6和SAIL-IMX7的Linux的启动Logo修改

Android源码发开记录-修改开机logo启动页、开机动画