屏蔽内核启动打印信息
来源:互联网 发布:电力猫网络不稳定 编辑:程序博客网 时间:2024/05/22 18:27
最近做的4412板子终于经过测试形成产品,在这之前需要把内核启动过程中的打印信息去掉,并且更换启动LOGO,下面讲讲自己去掉打印信息的过程。
一 去掉打印信息方法很多,我使用一个相对比较简单的,就是将下面选项的[*]去掉
Device Drivers --->
Character devices --->
[* ] Support for console on virtual terminal
这样printk的打印信息就不会输出在显示器或LCD上。
将打印信息去掉后,莫名其妙的会出现因为读取文件系统失败而启动不了的情况,报错:Kernel panic - not syncing: VFS。根据网上查找到的资料,因为系统启动过程中,磁盘EMMC的初始化和读取文件系统是在两个不同的线程中进行的,屏蔽掉打印信息后,主线程,及挂在文件系统的线程执行时间缩短,以至于当主线程准备挂载文件系统的时候,EMMC的初始化还没有完成,所以启动会失败。这个时候我们可以再uboot的启动参数中加入rootdelay=1,延迟系统挂在文件系统的时间,从而使系统顺利启动。
其实还有一种更简单的方法,不仅能将内核的打印信息屏蔽掉,而且用户态的配置打印信息也能屏蔽,就是在uboot参数中将显示器console=/dev/null,注意不要改动串口的console,否则无法使用串口看到打印信息进行调试。
二 去掉字符界面的光标
在内核的当前目录进入到drivers/video/console/fbcon.c 文件
将static void fb_flashcursor(void *private) 和 static void fbcon_cursor(struct vc_data *vc, int mode) 里的内容注释掉,使之变成空函数
三 接下来创建自己的启动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 ->
重新编译内核
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)
2.Kconfig,加入
config LOGO_LINUX_SULLG_CLUT224
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
#endif
- 屏蔽内核启动打印信息
- 彻底屏蔽linux启动打印信息
- 屏蔽linux 的启动打印信息
- linux查看内核启动过程的打印信息
- 打印uboot和内核系统的启动信息方法
- 禁止内核打印信息
- 内核打印信息
- 打印linux内核信息
- 内核通用打印信息
- 调整内核printk打印级别--减少启动时的打印信息
- 调整内核printk打印级别--减少启动时的打印信息
- 调整内核printk打印级别--减少启动时的打印信息
- 调整内核printk打印级别--减少启动时的打印信息
- ios发布屏蔽NSlog打印信息
- Linux启动打印信息
- 修改内核文件屏蔽nginx版本信息
- Linux内核开机打印信息
- 内核信息打印到文件
- 搜索引擎入门 --- 倒排索引算法
- 黑马程序员——7K月薪面试题破解之二_银行业务调度系统
- 确保你的phpMyAdmin安全
- 谈设计模式
- iOS---transform类的使用,平移,缩放,旋转效果的实现
- 屏蔽内核启动打印信息
- 黑马程序员——基础加强之 Java5的泛型
- 关于container_of和list_for_each_entry 及其相关函数的分析
- 栈的链式存储结构的实现
- hide handkerchief
- 【14/9/7】
- matlab找零点或两个曲线的交点
- ARRAYLIST VECTOR LINKEDLIST 区别与用法
- 关于dubbo的理解,使用,常见问题以及如何更好的实施服务化