• 修改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 计划任务
    linux 进程管理
    PHP中global与$GLOBALS['']的区别
    php预定义变量
    linux 强制终止进程命令
    mysql取某表中数据的随机的方法
    mysql 连接 选库 查询
    Python 的异步 IO:Asyncio 简介
    并发和并行的区别
    asyncio模块中的Future和Task
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7407312.html
Copyright © 2020-2023  润新知