首页 > Linux操作系统 > Linux操作系统 > Kernel (转)
Kernel "Hello world"
本篇文章是我在Debian gnu/Linux 操作系统上实现内核模块编译平台的笔记,现在记录下来希望对需要的朋友有帮助。其中如有不准确之处还请朋友们指出。
我的内核版本是:2.4bf
apt-get install kernel-headers-2.4
(详细的包名我记不清了,请不要说我不负责,这是csdn的错,因为用Mozilla 不能发表文档。)
不过大家可以用 tab 键来补全包名。
这样之后我们输入原代码:
--------------------------------------------
#define MODULE
#include
int init_module(void)
{
printk("<1>Hello,world
"); return 0;
}
void cleanup_module(void)
{
printk("<1>Goodbye cruel world
");
}
---------------
用命令来编译:
gcc -c hello.c
下面来查看当前目录下是否出现我们所要的文件。
ls -a
是否有 hello.o 如果有就对了。这就是我们所编译生成的文件。
下面把这个文件(模块)加到内核中。执行命令:
insmod ./hello.o
有可能出现错误提示,不过没关系,我还没有发现影响正常使用。以后可能会有。
错误提示为:
Warning: loading hello.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module hello loaded, with warnings
下面我们来查看这个模块所执行的显示内容,这些内容是不会在终端显示的。要执行命令:
dmesg
来查看。在最下面。
还有一种方法可以看到这个模块是否加载成功否。
$cat /proc/modules
从中可以看到hello 这个模块,这就是我加载的。
这个文件中的信息分为四列。
第一列:模块名。第二列:模块使用内存的字节数。第三列:模块的当前使用计数。第四列:备注。
好了,我们来卸载这个模块吧。
rmmod hello
再用 dmesg 来查看卸载时发出的信息吧。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-962671/ ,如需转载,请注明出处,否则将追究法律责任。