预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

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

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

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

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

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

Linux内核动态加载模块 一、安装内核模块: 一般步骤: (1)在/usr/src/linux/下运行makemenuconfig把需要编译成模块的项打上(M),保存并退出。 (2)运行makemodules,这一步将在/usr/src/linux/下生成*.o或*.ko文件。 (3)运行makemodeules_install来安装,这步会把生成的.o或ko文件拷贝到 /lib/modules/`uname-r`/下。 如果你只要编译某一个或几个模块,就可以用下面这个快速的方法: (1)找到编译内核所需要的.config文件。 在/usr/src/linux/arch目录下有若干编译内核所用的配置。选择我们想要的配置,将它复制到 /usr/src/linux目录下,改名为.config。 cp/usr/src/linux/arch/x86/xxconfig/usr/src/linux/.config (2)修改.config文件,去掉不用的模块,加上自己想要的模块。 打开.config,有许多XXXX=m的项,这些都是要被编译为模块的项,因为我们不希望编译 这些模块,所以要把XXXX=m的项统统去掉。然后再加上我们想要的模块,例如将# CONFIG_NTFS_FSisnotset改为CONFIG_NTFS_FS=m当然,可以用你熟悉各种工具来做 这件事。 (3)编译NTFS模块。 在/usr/src/linux目录下运行命令makemodules来编译我们想要的模块。 (4)安装模块。 编译后得到的.o文件在/usr/src/linux/目录下,手动将它复制到正确的目录下。 例如cp/usr/src/linux/fs/ntfs/ntfs.o/lib/modules/2.2.16-22/fs/ 注意:千万不能运行命令makemodules_install,否则将带来严重的后果,它会删除你系统 中的所有模块,只安装刚刚编译的模块(ntfs.o)。 二:安装完成以后,我们就可以加载模块了: 和linux中加载模块有关的几个命令分别如下: depmod,modprobe,lsmod 先来看看depmod命令: depmod是一个用来产生modules.dep和map文件的程序。在modules.dep文件中空白行和以 '#'开头的行将被忽略.depmod通过读取/lib/modules/version目录下的每一个模块来创建一 个记录模块相依性的列表。这个列表就是/lib/modules/version目录下的modules.dep。depmod 也会在/lib/modules/version目录下创建许多map文件,例如 modules.dep,modules.isapnpmap,modules.pcimap,modules.alias这些文件将会被hotplug用到。 OPTIONS: -a--allProbeallmodules.Thisoptionisenabledbydefaultifno filenamesaregiveninthecommand-line. 检查所有的模块,这个命令是默认的如果你没有指定模块名字的话。 -A--quickThisoptionscanstoseeifanymodulesarenewerthanthe modules.depfilebeforeanyworkisdone%3 再来看看modprobe命令: modprobe命令是根据depmod-a的输出/lib/modules/version/modules.dep来加载全部的所需 要模块。可以通过modprobe-l来显示可以当前可以加载的模块。modprobe在挂载模块是不 用指定模块文件的路径,也不用带文件的后缀.o或.ko,而insmod需要的是模块的所在目 录的绝对路径,并且一定要带有模块文件名后缀的(modulefile.o或modulesfile.ko)。insmod 比较重要的用途是用来测试模块的正确性,加载一般都是依靠modprobe。 用法:modprobexxx.ko#加载某个模块 modprobe-rxxx.ko#卸载某个模块 lsmod: lsmod显示当前加载的所有模块,相当于cat/proc/modules,假设你没有设定开机加载某个 模块,比如ntfs,那么开机后执行lsmod,列表里不会有ntfs这个模块的,这时你再执行mount -tntfsxxx后,执行lsmod后列表里就会有ntfs这个模块了。 还要注意的是lsmod显示的是模块名,而不是别名(alias)。 三、在内核中有一个“Automatickernelmoduleloading"功能被编译到了