zoukankan      html  css  js  c++  java
  • 修改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()有关;

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

  • 相关阅读:
    2020软件工程02
    自我介绍
    2019年春总结作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    第七周学习总结
    第六周学习总结
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7407312.html
Copyright © 2011-2022 走看看