参考资料:ldd3,google,cu
最近在看linux设备驱动的开发,主要是以ldd3这本书为主。在看第四章的时候遇到利用printk打印信息到“终端”(这里终端为什么加引号,待会介绍。因为一开始是在图形界面的终端上做的实验。)的问题。以前记得写过几个内核的模块加载函数,只要insmod执行后,默认信息是打印到”显示器“上的,但是这回我在做模块加载的时候,并没有打印,试了调等级等等各种方法:
# echo 8 > /proc/sys/kernel/printk
总是不行,一直想不明白。
这个问题一直困惑了两天,我也一直在找答案,问了群里面的一个兄弟,他让我把linux启动等级调到3,也就是命令行模式试试。照做了,果然,printk的信息居然打印出来了。然后我就有了一个疑问,为什么不能再终端上打印呢?
syslogd和kmsgd这两个服务不仔细介绍了,google一下有一大堆关于他们的详细介绍和使用。这里推荐一篇个人认为还算不错的,网址是:
http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part2/index.html
感谢文章的原作者。
printk是内核态的一个服务程序,而内核态和用户态本来是井水不犯河水的,幸亏有syslogd这