LINUX modprobe 智能加载和卸载内核模块

modprobe 是 Linux 系统中用于智能加载和卸载内核模块的核心命令。与 insmod 等低级工具不同,它的核心优势在于能自动处理模块之间的依赖关系,使内核模块管理变得高效且可靠。

核心功能与工作原理

modprobe 的主要功能包括:智能加载模块、自动解决依赖、配置模块参数以及卸载模块及其依赖。其智能行为依赖于一个由 depmod 命令生成的依赖关系文件------/lib/modules/$(uname -r)/modules.dep。当您执行 modprobe <模块名> 时,它会读取此文件,先加载所有必需的依赖模块,然后再加载目标模块。如果加载过程中任何一环失败,它会自动回滚,卸载已加载的所有相关模块。

常用命令与参数详解

您可以通过以下参数灵活控制 modprobe 的行为:

参数 全称 功能说明
-a --all 载入命令行中指定的全部模块。
-r --remove 智能卸载模块。不仅卸载指定模块,还会尝试卸载其不再被使用的依赖模块。
-v --verbose 显示命令执行过程的详细信息,便于调试。
-c --show-config 显示所有模块的配置信息(如别名)。
-l --list 列出系统所有可用的内核模块(此功能在某些新版本中可能已移至其他命令)。
-D --show-depends 显示指定模块的依赖关系树,但不实际加载。
--help 显示帮助信息。

基础操作示例

  1. 加载模块 加载 vfat 模块以支持 FAT32 文件系统,modprobe 会自动先加载其依赖的 fat 模块。

    复制代码
    sudo modprobe vfat

    使用 -v 参数可以查看详细的加载过程。

  2. 卸载模块 卸载 vfat 模块,如果 fat 模块不再被其他模块使用,也会被自动卸载。

    复制代码
    sudo modprobe -r vfat
  3. 查看已加载模块 使用 lsmod 命令可以查看当前已加载的所有模块及其内存占用和使用计数。

    复制代码
    lsmod
  4. 查看模块信息 使用 modinfo 命令可以查看模块的详细信息,如文件路径、版本、作者和可配置参数。

    复制代码
    modinfo vfat

与其他模块管理命令的关系

Linux 内核模块管理是一个工具集,modprobe 是其中最智能的一环:

  • insmod :低级加载命令,需指定模块完整路径,不处理任何依赖
  • rmmod :低级卸载命令,仅当模块使用计数为0时才能成功
  • lsmod :列出已加载模块,信息源自 /proc/modules
  • depmod :生成模块依赖关系文件 (modules.dep),是 modprobe 智能工作的基础。
  • modinfo:查询模块的元数据信息。

因此,在绝大多数需要手动管理模块的场景下,应优先使用 modprobe ,而非 insmodrmmod

高级配置与注意事项

  • 模块参数 :加载模块时可以传递参数以改变其行为,格式为 模块名 参数名=参数值。例如:

    复制代码
    sudo modprobe usbcore autosuspend=2
  • 配置文件 :系统通过 /etc/modprobe.d/ 目录下的配置文件(旧版本可能是 /etc/modprobe.conf)来设置模块别名、黑名单或强制加载参数。modprobe -c 可以查看当前生效的所有配置。

  • 强制操作--force-f 参数可以强制加载模块(例如忽略版本校验),但非常危险,仅应在明确知道后果时使用。

  • 模块名规范 :使用 modprobe 时,只需提供模块名称(如 vfat),不能包含 .ko.o 后缀

相关推荐
五点六六六10 小时前
你敢信这是非Native页面写出来的渐变效果吗🌝(底层原理解析
前端·javascript·面试
tedcloud12310 小时前
TradingAgents部署教程:打造AI量化分析工作流
服务器·前端·人工智能·系统架构·edge
樱桃花下的小猫11 小时前
森林 — 开发者控制台指令与物品ID速查手册
服务器·森林·云鸢互联·零门槛一键搭建·新手友好无技术门槛要求·森林游戏服务器·森林低延迟稳定服务器
霞姐聊IT11 小时前
SR-IOV、MR-IOV 与 SIOV:PCIe虚拟化技术的过去、现在与未来
linux·服务器·虚拟化·pcie
小村儿11 小时前
连载10-Sub-agents 深度解析:从源码理解 Claude Code 的分身术
前端·后端·ai编程
tedcloud12311 小时前
hello-agents部署教程:从零学习AI Agent开发
服务器·人工智能·学习·自动化·powerpoint
qq_2651533711 小时前
Redis在游戏服务器中怎么实现开合服数据同步?
服务器·redis·游戏·游戏服务器
szxinmai主板定制专家12 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
枕星而眠12 小时前
Linux 四大进程/线程同步锁详解:互斥锁、读写锁、条件变量、文件锁
linux·c语言·后端·ubuntu·学习方法
IT_陈寒12 小时前
Vite动态导入把我坑惨了,原来要这样用才对
前端·人工智能·后端