热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>内核研究>

Linux 2.6内核的编译步骤及模块的动态加载

来源: 作者: 时间:2007-07-23 Tag: 点击:

 

第四步:编译和装载模块

 

在文件所处的目录下,执行:

debian:/home/david # make

 

然后查看该目录下有哪些文件生成:

 

 

debian:/home/david # ls -l
总计 28
drwxr-xr-x 2 david david 4096 2007-02-07 17:49 Desktop
-rw-r--r-- 1 david david  462 2007-07-20 13:42 hello.c
-rw-r--r-- 1 root  root  2432 2007-07-20 13:55 hello.ko
-rw-r--r-- 1 root  root   607 2007-07-20 13:55 hello.mod.c
-rw-r--r-- 1 root  root  1968 2007-07-20 13:55 hello.mod.o
-rw-r--r-- 1 root  root  1140 2007-07-20 13:55 hello.o
-rw-r--r-- 1 david david  267 2007-07-20 13:48 Makefile
-rw-r--r-- 1 root  root     0 2007-07-05 14:11 Module.symvers

 

可见,已经生成模块文件hello.ko.

然后,就可以加载该模块:

debian:/home/david # insmod hello.ko

 

查看模块是否加载进内核:

debian:/home/david # lsmod

Module Size Used by

hello 1344 0

nfs 219468 0

nfsd 202224 17

... ...

 

其中Module名为hello的即为我们所加载的模块.

 

卸载模块:

 

debian:/home/david # rmmod hello

 

同样可以通过lsmod来查看该模块是否被卸载.

 

这里有两个问题,其一就是printk()输出的问题.LDD3上也说,在加载和卸载模块的时候都会有信息输出在屏幕上,如果在Windows下通过终端仿真器(我们常用的虚拟机算是一种),则在屏幕上看不到任何输出.我同时在虚拟机和和物理机都运行了该模块,均未看到有"Hello, world"(加载模块时printk的输出)或"Goodby, cruel world"(卸载模块时printk的输出). 这个不知道是我操作系统发行版的原因还是系统配置的问题,请了解这个问题的朋友指点一下.

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册