Kernel

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

Kernel "Hello world"

关键字:Linux kernel hello world wide288 linuxfire

本篇文章是我在Debian GNU/Linux 操作系统上实现内核模块编译平台的笔记,现在记录下来希望对需要的朋友有帮助。其中如有不准确之处还请朋友们指出。

我的内核版本是:2.4bf

首先我们需要安装内核代码的头文件,执行命令:

apt-get install kernel-headers-2.4

(详细的包名我记不清了,请不要说我不负责,这是csdn的错,因为用mozilla 不能发表文档。)

不过大家可以用 tab 键来补全包名。

这样之后我们输入原代码:

--------------------------------------------

#define MODULE

#include <linux/module.h>

int init_module(void)

{

printk("<1>Hello,world\n"); return 0;

}

void cleanup_module(void)

{

printk("<1>Goodbye cruel world\n");

}

---------------

用命令来编译:

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 来查看卸载时发出的信息吧。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有