2024年4月28日发(作者:)

实验7 Linux内核模块实验

一、实验目的

1、学习Linux内核模块的编写方法;

2、学习Linux模块的编译方法;

3、学习Linux模块的装载、卸载方法。

二、实验内容

1、编写简单的Hello内核模块程序;

2、对程序文件交叉编译成内核模块;

3、通过网络将内核模块下载到实验箱上;

4、在实验箱上对内核模块进行装载和卸载实验。

三、实验操作方法

1、编写Hello内核模块程序

文件名为hello.c,内容如下:

#include

#include

static int hello_init(void)

{

}

static void hello_exit(void)

{

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_AUTHOR(“My name”);

MODULE_DESCRIPTION(“A simplest Hello Module”);

printk(“Hello Kernel exit!n”);

printk(“Hello Kernel enter!n”);

return 0;

//在“/usr/local/arm/2.95.3/arm-linux/include”下面

2、编译内核模块

(1)复制与修改version.h文件

将“/usr/include/linux”下的文件version.h,复制到“/usr/local/arm/2.95.3/arm-linux/include/linux”

下面。修改文件version.h的内容,将操作系统的版本号改为实验箱上操作系统的版本号,如改为:

2.4.18-rmk7-pxa1。

(2)编译内核模块

编译命令如下:

arm-linux-gcc –D __KERNEL__ -D MODULE –I/usr/local/arm/2.95.3/arm-linux/include –O2 –Wall

1

–O –c hello.c

正确编译后会产生在ARM上运行的内核模块“hello.o”。

3、通过超级终端下载程序

(1)复制下载文件到“windows-Linux共享目录”下

windows操作系统与Linux操作系统的共享目录为:

Windows下:e:VMwareshare

Linux下:/mnt/hgfs/share

# cp hello /mnt/hgfs/share ↙

在PC机端的Linux操作系统下执行:

(2)下载文件

通过超级终端对目标板进行操作,下载文件。首先转到下载欲保存文件的目录“/mnt”。在超级

终端执行如下命令:

# cd /mnt ↙

然后利用超级终端下载文件。在超级终端进行操作: 点击“传送”主菜单、“发送文件”,在弹

出的“发送文件”对话框选择“e:VMwareshar”下的“hello”文件,点击“发送”,即可就文件传送

到目标板的“/mnt”目录下。

(3)将内核模块文件复制到合适的目录下

在目标板上,如执行下面操作:

# cd /mnt ↙

# cp hello.o /tmp ↙

即将内核模块文件复制到“/tmp”目录下。

4、挂载与卸载内核模块

(1)挂载内核模块

执行如下操作:

# cd /tmp ↙

# insmod hello.o ↙

# Hello Kernel enter!

正确挂载后会显示出:

(2)卸载内核模块

执行如下操作:

# rmmod hello.o ↙

# Hello Kernel exit!

正确卸载后会显示出:

2