序言

这篇博客来聊一聊Linux内核复印。

嵌入式驱动学习专栏将详尽记录博主学习驱动的详尽过程,未来预计四个月将高硬度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现今关注就是老粉啦!

目录

1.dmesg指令——查看内核复印信息1.1dmesg基本使用

dmesg是Linux系统重查看内核日志的使用工具,容许查看系统内核的输出消息,包括引导信息,硬件监测,设备驱动和系统错误等,通过dmesg可以追踪系统启动过程的风波,排查故障。

我们在启动linux系统的时侯会有一连串的信息复印下来,假如我们后续想要再看一次启动的信息,就可以用dmesg回显一下,内核将复印的信息储存到ringbuffer中,我使用的是MobaXterm,在其中的控制台输入dmesg查看ringbuffer中储存的启动信息:

在这里插入图片描述

回车后才会显示如下的信息linux内核 驱动,还会复印出启动的信息:

前面可以跟一些参数,常用的参数如下所示:

-C,消除内核环型缓冲区(ringbuffer)

内核驱动是什么意思_linux内核 驱动_内核驱动力是什么意思

-c,读取并消除所有消息

-T,显示时间戳

使用dmesg-c复印内核信息后,再度输入dmesg就读不到了,由于被清不仅

1.2dmesg进行关键词查找

dmesg可以与grep组合使用,查找关键词linux内核 驱动,例如我们要查找与cpu相关的信息,可以使用如下,不分辨大小写查找CPU相关信息:

dmesg | grep -i cpu

1.3实时复印最后N行

实时监控查看日志末尾N行可以用以下指令,查看末尾的N行,结果是一致显示的,每隔2s显示一次

内核驱动是什么意思_linux内核 驱动_内核驱动力是什么意思

watch “dmesg | tail -5

在这里插入图片描述

1.4kmsg

内核把所有的复印信息会输出到循环缓冲区log_buf,为了便捷在用户控件读取内核复印信息,Linux内核驱动将该循环缓冲区映射到/proc目录下的文件节点kmsg中,通过cat指令读取logBuffer时可以不断等待新的log,所以访问/pro/kmsg的形式适宜长时间读取log。

使用以下指令读取kmsg,没有新的内核复印信息时会阻塞。

cat /proc/kmsg

如下就是处于阻塞状态:

2.printk函数查看内核复印等级

内核驱动力是什么意思_linux内核 驱动_内核驱动是什么意思

内核日志的复印由相应的复印等级来控制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

内核驱动力是什么意思_linux内核 驱动_内核驱动是什么意思

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

本文原创地址://lrxjmw.cn/srljlnhdydzl.html编辑:刘遄,审核员:暂无