码迷,mamicode.com
首页 > 其他好文 > 详细

屏蔽内核启动打印信息

时间:2014-09-07 12:22:35      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:style   color   io   使用   ar   for   文件   cti   sp   

最近做的4412板子终于经过测试形成产品,在这之前需要把内核启动过程中的打印信息去掉,并且更换启动LOGO,下面讲讲自己去掉打印信息的过程。

去掉打印信息方法很多,我使用一个相对比较简单的,就是将下面选项的[*]去掉

Device Drivers  ---> 

Character devices  --->

[* ]   Support for console on virtual terminal 

这样printk的打印信息就不会输出在显示器或LCD上。

将打印信息去掉后,莫名其妙的会出现因为读取文件系统失败而启动不了的情况,报错:Kernel panic - not syncing: VFS。根据网上查找到的资料,因为系统启动过程中,磁盘EMMC的初始化和读取文件系统是在两个不同的线程中进行的,屏蔽掉打印信息后,主线程,及挂在文件系统的线程执行时间缩短,以至于当主线程准备挂载文件系统的时候,EMMC的初始化还没有完成,所以启动会失败。这个时候我们可以再uboot的启动参数中加入rootdelay=1,延迟系统挂在文件系统的时间,从而使系统顺利启动。

接下来创建自己的启动LOGO,方法如下


创建logo图片:
1、内核默认的logo图片为drivers/video/logo/logo_linux_clut224.ppm
file logo_linux_clut224.ppm
先得到图片的大小,然后再用gimp等工具创建一个同样大小的png图片
2、把自己创建的png图片转换为只有224色的ppm图片
pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm
如果没有以上的转换命令请安装netpbm工具包
3、覆盖原来的logo_linux_clut224.ppm文件,若有logo_linux_clut224.o和logo_linux_clut224.c文件则删除

内核配置:
Device Drivers ->
   Graphics Support ->
        [*] Support for frame buffer devices
        [*] VESA VGA graphics support

    Console display driver support ->
        [*] Video mode selection support
        
        [*] Framebuffer Console support
        
        [*]Select compiled-in fonts
        [*]VGA 8x16 font

    Logo configuration->
        [*]Bootup logo
        [*] Standard 224-color Linux logo

重新编译内核
logo居中:
1、设置logo图片在屏幕中的位置
vi drivers/video/fbmem.c
找到"fb_show_logo_line"函数,把
image.dx = 0;
image.dy = y;
改为
image.dx = (info->var.xres/2) - (610/2);
image.dy = (info->var.yres/2) - (206/2);
[注:
info->var.xres和info->var.yres是分辨率大小
610和206是logo图片的大小
]


2、
vi drivers/video/console/fbcon.c
找到"fbcon_prepare_logo"函数,在
logo_height = fb_prepare_logo(info, ops->rotate);
后面加上
logo_height += (info->var.yres/2) - (206/2);

添加新图片:
在Makefile中有这么一句:extra-y += $(call logo-cfiles,_clut224,ppm)
它的意思是在当前找到以"_clut224"结尾的ppm图片,然后根据它生成.c文件,所以添加新的图片名可以
类似这样:logo_linux_sullg_clut224.ppm
1.Makefile,加入一行
obj-$(CONFIG_LOGO_LINUX_SULLG_CLUT224)  += logo_linux_sullg_clut224.o
2.Kconfig,加入
config LOGO_LINUX_SULLG_CLUT224
    bool "Standard 224-color Linux logo for sullg"
    default y
3.logo.c,加入
extern const struct linux_logo logo_linux_sullg_clut224;
在"fb_find_logo"中找到"#ifdef CONFIG_LOGO_LINUX_CLUT224",在其后加入:
#ifdef CONFIG_LOGO_LINUX_SULLG_CLUT224
        logo = &logo_linux_sullg_clut224;
#endif

屏蔽内核启动打印信息

标签:style   color   io   使用   ar   for   文件   cti   sp   

原文地址:http://blog.csdn.net/qq405180763/article/details/39118497

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!