在 Linux 系统中,内核模块(Kernel Modules)是一段可以动态加载和卸载的代码,用于扩展内核功能,而无需重新编译或重启内核。内核模块通常用于添加对硬件驱动程序、文件系统以及网络协议的支持。以下是 Linux 内核模块管理的几个重要命令:

1. lsmod — 列出当前加载的内核模块

  • 功能:显示当前系统中已经加载的所有内核模块。
  • 语法:lsmod
  • 说明:
    • lsmod 显示当前加载的内核模块,包括模块名、模块使用次数、以及其他模块的依赖情况。
    • 该命令的输出是从 /proc/modules 文件读取的。
示例:
lsmod

2. modprobe — 加载或卸载内核模块

  • 功能:用于加载或卸载内核模块,并处理模块的依赖关系。
  • 语法:
    • 加载模块:modprobe [模块名]
    • 卸载模块:modprobe -r [模块名]
  • 说明:
    • modprobe 自动解析模块依赖关系,并加载所需的依赖模块。
    • modprobe -r 用于卸载模块,同样会处理依赖关系。
    • 如果模块需要参数,可以通过 modprobe 命令传递参数。
示例:

加载模块:

modprobe e1000

卸载模块:

modprobe -r e1000

3. insmod — 手动加载内核模块

  • 功能:用于手动加载指定的内核模块文件。
  • 语法:insmod [模块文件路径]
  • 说明:
    • insmod 需要指定模块的完整路径,通常位于 /lib/modules/$(uname -r)/ 目录下。
    • 不会自动解析模块依赖关系,因此必须手动加载依赖模块。
示例:
insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/e1000/e1000.ko

4. rmmod — 手动卸载内核模块

  • 功能:从内核中卸载一个已经加载的模块。
  • 语法:rmmod [模块名]
  • 说明:
    • rmmod 不会自动卸载依赖模块,因此必须确保没有其他模块依赖它,否则卸载将会失败。
示例:
rmmod e1000

5. depmod — 生成模块依赖关系文件

  • 功能:扫描所有模块,生成模块之间的依赖关系文件。
  • 语法:depmod
  • 说明:
    • depmod 用于更新 /lib/modules/$(uname -r)/modules.dep 文件,列出所有模块的依赖关系。
示例:
depmod

6. /proc/modules — 显示当前加载的模块

  • 功能:这个文件可以显示当前系统中加载的内核模块信息。
  • 语法:cat /proc/modules
  • 说明:
    • /proc/modules 文件包含当前内核加载的模块列表,与 lsmod 输出相同。
示例:
cat /proc/modules

7. modinfo — 查看模块的详细信息

  • 功能:用于查看内核模块的详细信息,比如作者、许可证、描述、参数等。
  • 语法:modinfo [模块名]
  • 说明:
    • 该命令显示模块的元数据信息,包括文件路径、依赖关系等。
示例:
modinfo e1000

常见使用场景:

  1. 查看当前加载的模块:

    lsmod
    
  2. 加载一个新的模块:

    modprobe <模块名>
    
  3. 卸载模块并检查是否成功:

    modprobe -r <模块名>
    lsmod | grep <模块名>
    
  4. 查看某个模块的详细信息:

    modinfo <模块名>
    

通过这些命令,你可以灵活地管理 Linux 系统中的内核模块,动态添加或删除功能。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐