都说是经典,忍不住, 前几天看了LDD3。
老习惯,开篇总是HELLO,WORLD。按照作者的提示:使用标准内核,到kernel.org上下载了最新的稳定版本,make oldconfig,不成功,make menuconfig,不成功。晕!
想想算了,我的vmware中安装的ubuntn即是2.6内核,不编译也应该可的。
(编译内核忒麻烦,在我的所有经历中,不成功是正常的,个人感觉有时候在浪费时间)
遂抄书:
按照LDD3提供的例子中的MAKEFILE重新写:
% make
% su
root# insmod ./hello.ko
???没有反应
%tail /var/log/messages
也没有看到结果,baidu一下,把hello.c中的printk(KERN_ALERT "Hello, world/n")修改成:
printk(KERN_INFO "Hello, world/n");
重新make
root# insmod ./hello.ko
终端中还是没有信息,不过:
%tail /var/log/messages
在最后一行可以看到:
Hello,world
查了一下:
KERN_ALERT和KERN_INFO等宏,表示优先级,具体如下:
#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 */
0-7,优先级依次递减。
不过有网友说,在x86机器上,只能通过:
dmesg 或者
tail /var/log/message 查看