Linux内核模块管理(查看、添加和删除)
模块的全称是动态可加载内核模块,它是具有独立功能的程序,可以被单独编译,但不能独立运行。模块是为内核或其他模块提供功能的代码。这些模块可以是 Linux 源码中自带的,也可以是由硬件厂商开发的(可以想象成驱动)。不过内核因为发布时间较长,所以自带的模块可能版本较低,还有一些新硬件可能就不自带模块了,只能由硬件厂商在发布硬件的同时发布新模块。
也就是说,安装模块一般有两种方法:
种方法在编译内核时,手工调整内核模块功能,加入所需的模块。这种方法有一个问题,就是内核必须支持这个硬件或功能才可以通过编译内核加入模块。如果硬件比内核新,内核本身并不支持硬件,就不能通过重新编译内核来加入新的硬件的支持。
第二种方法就是下载厂商发布的新硬件的驱动模块,或下载驱动程序,再编译成驱动模块,然后手工安装。
本节我们主要来学习第二种方法,也就是如果我已经得到了一个模块,该如何手工安装?这个模块该如何得到呢?
如果是新硬件的驱动,则可以到硬件官方网站下载内核驱动或内核模块。如果下载的是内核模块,则直接安装即可;如果下载的是内核驱动源码,则只需要编译源码包,就会生成模块(具体编译过程和源码包安装非常类似,可以查看驱动的说明)。如果需要加入的模块不是硬件的驱动,而只是内核中的某项功能,那么,只要部分重新编译内核,就可以生成新功能的模块(我们会通过 NTFS 文件系统支持来学习这种方法),然后安装这个模块即可。
内核模块保存位置与模块保存文件
内核模块的保存位置在什么地方?其实在 /lib/modules/ 内核版本 /kernel/ 目录中,在 CentOS 6.x 中这个目录就是:[root@localhost ~]# cd /lib/modules/2.6.32-279.el6. i686/kemel/
查看一下目录内容:
[root@localhost kernel]#ls
arch
与硬件相关的模块
crypto
#内核支持的加密技术的相关模块
drivers
#硬件的驱动程序模块,如显卡、网卡等
fs
#文件系统模块,如 fat、vfat、nfs等
lib
#函数库
net
#网络协议相关模块
sound
#音效相关模块
Linux 中所有的模块都存放在 /lib/modules/2.6.32-279.el6.i686/modules.dep 文件中,在安装模块时,依赖这个文件査找所有的模块,所以不需要指定模块所在位置的路径,而且也依靠这个文件来解决模块的依赖性。如果这个文件丢失了怎么办?不用担心,使用 depmod 令会自动扫描系统中已有的模块,并生成 modules.dep 文件。令格式如下:[root@localhost ~]# depmod [选项]
#不加选项,depmod令会扫描系统中的内核模块,并写入modules.dep文件
选项:
-a:扫描所有模块;
-A:扫描新模块,只有有新模块时,才会更新modules.dep文件;
-n:把扫描结果不写入modules.dep文件,而是输出到屏幕上;
我们把 modules.dep 文件删除,看看使用 depmod 令是否可以重成这个文件。令如下:
[root@localhost ~]# cd /lib/modules/2.6.32-279.el6.i686/
#进入模块目录
[root@localhost 2.6.32-279.el6.i686]# rm -rf modules.dep
#删除 modules.dep文件
[raot@localhost 2.6.32-279.el6.i686]# depmod
#重新扫描模块
[root@localhost 2.6.32-279.el6.i686]# ls -l modules.dep
-rw-r--r--. 1 root root 191899 5 月 23 07:09 modules.dep
#再查看一下,modules.dep文件又生成了
depmod 令会扫描系统中所有的内核模块,然后把扫描结果放入 modules.dep 文件。后续的模块安装或删除就依赖这个文件中的内容。也就是说,如果我们要手工安装一个模块,则需要先把模块到指定位置,一般 /lib/modules/2.6.32-279.el6.i686/kernel/ 目录中,使用 depmod 令扫描之后,才能继续安装。内核模块的查看
使用 lod 令可以查看系统中到底安装了哪些内核模块。令如下:[root@localhost ~]# lod
Module Size Used by
autofs4 20981 3
sunrpc 215000 1
ipt_REJECT 1867 2
nf_conntrack_ipv4 7694 2
nf_defrag_ipv4 1039 1 nf_conntrack_ipv4
…省略部分输出…
lod令的指定结果共有三列。Module:模块名。
Size:模块大小。
Used by:模块是否被其他模块调用。
我们还可以使用 modinfo 令来查看这些模块的说明,令格式如下:
[root@localhost ~]# modinfo 模块名 例如:
[root@localhost ~]# modinfo autofs4
filename:/lib/modules/2.6.32-279.el6.i686/kernel/fs/autofs4/autofs4.ko
license: GPL
srcversion: 4F798AD1AD66D2CBBB5D953
depends:
vermagic:2.6.32-279.el6.i686 P mod_unload modversions 686
#能够看到模块名,来源和简易说明
内核模块的添加与删除
其实,如果模块已经下载到本机了,那么安装模块的方法非常简单。首先需要把模块到指定位置,一般到 /lib/modules/2.6.32-279.el6.i686/kemel/ 目录中,模块的扩展名一般是 *.ko;然后需要执行 depmod 令扫描这些新模块,并写入 modules.dep 文件;就可以利用 modprobe 令安装这些模块了。令格式如下:[root@localhost ~]# modprobe [选项] 模块名
选项:
-I:列出所有模块的文件名,依赖 modules.dep 文件;
-f:强制加载模块;
-r:删除模块;
举个例子,我们需要安装 vfat 模块(fat32 文件系统的模块),那么需要执行如下令即可:
[root@localhost ~]# modprobe vfat
#安装vfat模块
[root@localhost ~]# Iod | grep vfat
vfat 8575 0
fat 47049 1 vfat
vfat 模块是系统中的默认模块,所以不需要执行 depmod 令进行扫描。如果是外来模块,则必须执行 depmod 令。因为已经把模块的完整文件名写入了 modules.dep 文件,所以安装模块的令不需要写路径。那么,如何删除这个模块呢?令如下:
[root@localhost ~]# modprobe -r vfat
[root@localhost ~]# lod | grep vfat
#查找为空
- 随机文章
- 马尔代夫换钞记(马尔代夫启动新货币,换钞备受关注)
- 苏州 马尔代夫 机票(从苏州飞往马尔代夫的机票)
- 怀孕 马尔代夫 旅游(怀孕期间可否前往马尔代夫旅行?探究医学专家意见)
- 在马尔代夫玩滑板(在马尔代夫体验滑板运动,刺激好玩!)
- 印度直飞马尔代夫(印度航空公司开通直飞马尔代夫的航线)
- 汇率 马尔代夫(马尔代夫货币汇率最新动态)
- 宜昌马尔代夫酒吧(宜昌峡谷水世界开设马尔代夫风情酒吧)
- 曼谷 马尔代夫 亚航(曼谷至马尔代夫航线重启,亚洲低成本航空开辟新旅游蓝海)
- 星空延时马尔代夫(马尔代夫星光夜游,尽享绮丽星空美景)
- 马尔代夫人被枪击(马尔代夫女游客遭枪击事件发生)
- 青竹 马尔代夫(青竹在马尔代夫的度假印记)
- 小马尔代夫明斯克(小马尔代夫出现明斯克症状,引发担忧)
- 苏梅 马尔代夫(苏梅和马尔代夫:旅游胜地最新风向)
- 瑞丽德宏马尔代夫(德宏旅行社推出精品马尔代夫旅游线路)
- 香港 小马尔代夫(港版马尔代夫 火了!)
- 空运马尔代夫邮编(空运服务为马尔代夫引入国际邮编系统)
- 漳州马尔代夫游艇(漳州游艇出海,游览美丽的马尔代夫!)
- 深圳马尔代夫攻略(深圳出发,轻松游马尔代夫:攻略大全)
- 重庆马尔代夫洪水(重庆多地洪水,马尔代夫旅游业受影响)
- 泉州马尔代夫地址(泉州去马尔代夫旅游的地址及攻略推荐)
- 马尔代夫不懂英语(马尔代夫存在英语障碍,游客需注意。)
- 西瓜视频马尔代夫(走进仙境!探访马尔代夫这个度假胜地)
- 马尔代夫交流协会(马尔代夫设立交流协会以促进国际合作)
- 明星 马尔代夫(明星享受马尔代夫度假生活,尽情纵情玩乐)
- 瑰丽酒店马尔代夫(探索马尔代夫之旅:神秘瑰丽酒店体验)
- 陵水马尔代夫酒店(陵水半岛的奢华马尔代夫岛屿风光无限)
- 宜昌郊外马尔代夫(宜昌风景如画,郊外仿若身处马尔代夫)
- 桨板 马尔代夫(马尔代夫流行的水上运动:桨板体验)
- 马尔代夫印度富豪(印度亿万富豪在马尔代夫豪宅举行婚礼)
- 马尔代夫古来德湖(马尔代夫古来德湖:美丽的天然淡水湖)
