使用CentOS 6.9版本,内核为自己从kernel.org上下载的2.6.32版本的源码,编译后安装的。
编译hello.c也是用的这个2.6.32的源码。
insmod hello.ko
rmmod hello
都没有任何打印。
于是怀疑到可能是因为CentOS使用的是正式版本,所以打印级别不够高的话,显示不出来。
查了一下代码:
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
将KERN_ALERT改成KERN_EMERG,再试了一下,就可以打印出来了。
[root@vbox ldd]# insmod hello.ko
[root@vbox ldd]#
Message from syslogd@vbox at Feb 20 19:59:15 ...
kernel:Hello world
[root@vbox ldd]# rmmod hello
[root@vbox ldd]#
Message from syslogd@vbox at Feb 20 19:59:25 ...
kernel:Goodbye world
[root@vbox ldd]#