序言
这篇博客来聊一聊Linux内核复印。
嵌入式驱动学习专栏将详尽记录博主学习驱动的详尽过程,未来预计四个月将高硬度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现今关注就是老粉啦!
目录
1.dmesg指令——查看内核复印信息1.1dmesg基本使用
dmesg是Linux系统重查看内核日志的使用工具,容许查看系统内核的输出消息,包括引导信息,硬件监测,设备驱动和系统错误等,通过dmesg可以追踪系统启动过程的风波,排查故障。
我们在启动linux系统的时侯会有一连串的信息复印下来,假如我们后续想要再看一次启动的信息,就可以用dmesg回显一下,内核将复印的信息储存到ringbuffer中,我使用的是MobaXterm,在其中的控制台输入dmesg查看ringbuffer中储存的启动信息:
回车后才会显示如下的信息linux内核 驱动,还会复印出启动的信息:
前面可以跟一些参数,常用的参数如下所示:
-C,消除内核环型缓冲区(ringbuffer)
-c,读取并消除所有消息
-T,显示时间戳
使用dmesg-c复印内核信息后,再度输入dmesg就读不到了,由于被清不仅
1.2dmesg进行关键词查找
dmesg可以与grep组合使用,查找关键词linux内核 驱动,例如我们要查找与cpu相关的信息,可以使用如下,不分辨大小写查找CPU相关信息:
dmesg | grep -i cpu
1.3实时复印最后N行
实时监控查看日志末尾N行可以用以下指令,查看末尾的N行,结果是一致显示的,每隔2s显示一次
watch “dmesg | tail -5”
1.4kmsg
内核把所有的复印信息会输出到循环缓冲区log_buf,为了便捷在用户控件读取内核复印信息,Linux内核驱动将该循环缓冲区映射到/proc目录下的文件节点kmsg中,通过cat指令读取logBuffer时可以不断等待新的log,所以访问/pro/kmsg的形式适宜长时间读取log。
使用以下指令读取kmsg,没有新的内核复印信息时会阻塞。
cat /proc/kmsg
如下就是处于阻塞状态:
2.printk函数查看内核复印等级
内核日志的复印由相应的复印等级来控制linux系统安装教程,可以通过调整内核复印等级来控制复印日志的输出:
cat /proc/sys/kernel/printk
这四个数字分别对应console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel
终端复印类型对应类型说明
console_loglevel
只有当printk复印消息的log优先级低于console_loglevel时,才会输出到终端上
default_message_loglevel
printk复印消息时默认的log等级
minimum_console_loglevel
console_loglevel可以被设置的最小值
default_console_loglevel
console_loglevel的缺省值
printk的四个等级意味着,只有优先级低于KERN_DEBUG(7)的复印消息能够输出到终端
调整内核复印等级
通过echo指令进行更改,如下所示,将当前的日志级别更改为4,最后通过cat查看发觉第一个数弄成了4:
echo 4 > /proc/sys/kernel/printk
也可以一次性改变多个值linux下载,如下所示:
echo 4 2 0 6 > /proc/sys/kernel/printk
这些技巧重启内核后会重新变为7417,也就是说重启内核后须要重新更改。
使用方式
printk函数就类似于printf函数,不过printf函数用于应用层,是用户空间的复印函数,printk是内核空间的复印函数。
可以借助printk函数复印一些内核的提示信息。
printk("led driver and device has matched!rn");
问题
显示invalidoption
有大鳄晓得这个问题是为何嘛,求指导T_T
参考资料
[1]深入了解Linux下的dmesg指令:查看系统内核日志的神器
[2]Linux之dmesg
本文原创地址://q13zd.cn/srljlnhdydzl.html编辑:刘遄,审核员:暂无