Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523095
  • 博文数量: 197
  • 博客积分: 2071
  • 博客等级: 上尉
  • 技术积分: 1307
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-02 09:49
个人简介

prothes 专注嵌入式的ARM linux

文章分类

全部博文(197)

文章存档

2014年(3)

2013年(16)

2012年(108)

2011年(70)

分类: LINUX

2011-09-07 13:37:48

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()有关;

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

阅读(873) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~