设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux内核模块管理查看添加和删除方法

发布时间:2022-07-06 10:56 所属栏目:118 来源:互联网
导读:Linux 的内核会在启动过程中自动检验和加载硬件与文件系统的驱动。一般这些驱动都是用模块的形式加载的,使用模块的形式保存驱动,可以不直接把驱动放入内核,有利于控制内核大
  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文件

  其实,如果模块已经下载到本机了,那么安装模块的方法非常简单。首先需要把模块复制到指定位置,一般复制到 /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 ~]# Ismod | grep vfat
 
  vfat 8575 0
 
  fat 47049 1 vfat
 
  vfat 模块是系统中的默认模块,所以不需要执行 depmod 命令进行扫描。如果是外来模块,则必须执行 depmod 命令。因为已经把模块的完整文件名写入了 modules.dep 文件,所以安装模块的命令不需要写绝对路径。
 
  那么,如何删除这个模块呢?命令如下:
 
  [root@localhost ~]# modprobe -r vfat
 
  [root@localhost ~]# lsmod | grep vfat
 
  #查找为空。
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读