南阳理工学院实验4 Linux内核模块实验.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:3 大小:31KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

南阳理工学院实验4 Linux内核模块实验.doc

南阳理工学院实验4Linux内核模块实验.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验4Linux内核模块实验一、实验目的1、学习Linux内核模块的编写方法;2、学习Linux模块的编译方法;3、学习Linux模块的装载、卸载方法。二、实验内容1、编写简单的Hello内核模块程序;2、对程序文件交叉编译成内核模块;3、通过超级终端将内核模块下载到实验箱上;4、在实验箱上对内核模块进行装载和卸载实验。三、实验操作方法1、编写Hello内核模块程序文件名为hello_m.c,内容如下:#include<linux/init.h>//在“/usr/local/arm/2.95.3/arm-linux/include”下面#include<linux/module.h>#include<linux/kernel.h>staticinthello_init(void)//初始化{printk(“HelloKernelenter!\n”);return0;}staticvoidhello_exit(void)//退出{printk(“HelloKernelexit!\n”);}Module_init(hello_init);//模块化Module_exit(hello_exit);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。(为数字1,而不是字母L的小写)(2)编译内核模块编译命令如下:arm-linux-gcc–DKERNEL-DMODULE–I/usr/local/arm/2.95.3/arm-linux/include–O2–Wall–O–chello_m.c–ohello_m.ko正确编译后会产生在ARM上运行的内核模块“hello_m.ko”。3、下载内核模块到实验箱通过超级终端下载程序1)复制下载文件到“windows-Linux共享目录”下windows操作系统与Linux操作系统的共享目录为:Windows下:e:\VMware\shareLinux下:/mnt/hgfs/share在PC机端的Linux操作系统下执行:#cphello_m.ko/mnt/hgfs/share↙2)下载文件通过超级终端对目标板进行操作,下载文件。首先转到下载欲保存文件的目录“/mnt”。在超级终端执行如下命令:#cd/mnt↙然后利用超级终端下载文件。在超级终端进行操作:点击“传送”主菜单、“发送文件”,在弹出的“发送文件”对话框选择“e:\VMware\shar”下的“hello_m.ko”文件,点击“发送”,即可就文件传送到目标板的“/mnt”目录下。通过网络下载通过网络的nfs服务,把内核模块下载到实验箱上。其操作过程应该是先设置网络共享目录,启动相应网络服务,这些在“基本的应用程序实验”中已经做过,可以执行下面的操作。(1)内核模块文件复制到网络文件共享目录下将内核模块文件“hello_m.ko”复制到网络文件共享目录“/home/nfs”下即可。(2)启动PC机上的超级终端和给实验箱上电(3)通过网络将PC机目录挂载到目标板目录上在超级终端上操作,使目标板执行:#mount–tnfs–onolock192.168.0.10:/home/nfs/mnt↙192.168.0.10是PC机上、Linux操作系统中的IP地址,或执行下面的命令行:#mount–tnfs192.168.0.10:/home/nfs/mnt↙(4)将内核模块文件复制到合适的目录下在目标板上,如执行下面操作:#cd/mnt↙#cphello_m.ko/tmp↙即将内核模块文件复制到“/tmp”目录下。4、挂载与卸载内核模块(1)挂载内核模块执行如下操作:#cd/tmp↙#insmodhello_m.ko↙正确挂载后会显示出:#HelloKernelenter!(2)卸载内核模块执行如下操作:#rmmodhello_m.ko↙正确卸载后会显示出:#HelloKernelexit!