欢迎来到天天文库
浏览记录
ID:14764057
大小:42.50 KB
页数:13页
时间:2018-07-30
《linux内核动态加载模块》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux内核动态加载模块Linux内核动态加载模块.txt今天心情不好。我只有四句话想说。包括这句和前面的两句。我的话说完了对付凶恶的人,就要比他更凶恶;对付卑鄙的人,就要比他更卑鄙没有情人味,哪来人情味 拿什么整死你,我的爱人。收银员说:没零钱了,找你两个塑料袋吧!Linux内核动态加载模块一、安装内核模块:一般步骤:(1)在/usr/src/linux/下运行makemenuconfig把需要编译成模块的项打上(M),保存并退出。(2)运行makemodules,这一步将在/usr/src/linux/
2、下生成*.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/s
3、rc/linux/.config(2)修改.config文件,去掉不用的模块,加上自己想要的模块。打开.config,有许多XXXX=m的项,这些都是要被编译为模块的项,因为我们不希望编译这些模块,所以要把XXXX=m的项统统去掉。然后再加上我们想要的模块,例如将#CONFIG_NTFS_FSisnotset改为CONFIG_NTFS_FS=m当然,可以用你熟悉各种工具来做这件事。(3)编译NTFS模块。在/usr/src/linux目录下运行命令makemodules来编译我们想要的模块。(4)安装模块。编译
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命令:dep
5、mod是一个用来产生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.a
6、lias这些文件将会被hotplug用到。OPTIONS:-a--allProbeallmodules.Thisoptionisenabledbydefaultifnofilenamesaregiveninthecommand-line.检查所有的模块,这个命令是默认的如果你没有指定模块名字的话。-A--quickThisoptionscanstoseeifanymodulesarenewerthanthemodules.depfilebeforeanyworkisdone%3再来看看modprobe命令:mo
7、dprobe命令是根据depmod-a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。可以通过modprobe-l来显示可以当前可以加载的模块。modprobe在挂载模块是不用指定模块文件的路径,也不用带文件的后缀.o或.ko,而insmod需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀的(modulefile.o或modulesfile.ko)。insmod比较重要的用途是用来测试模块的正确性,加载一般都是依靠modprobe。用法:modprob
8、exxx.ko#加载某个模块modprobe-rxxx.ko#卸载某个模块lsmod:lsmod显示当前加载的所有模块,相当于cat/proc/modules,假设你没有设定开机加载某个模块,比如ntfs,那么开机后执行lsmod,列表里不会有ntfs这个模块的,这时你再执行mount-tntfsxxx后,执行lsmod后列表里就会有ntfs这个模块了。还要注意的是lsmod显示的是模
此文档下载收益归作者所有