Linux怎么手动加载或卸载指定内核驱动

陌枫同学_2655

陌枫同学_2655

2026-10-13

655人浏览

原创

优先用modprobe而非insmod,因modprobe自动解析依赖、搜索标准路径、支持配置文件;卸载必须用modprobe -r,它能递归卸载依赖模块,而rmmod仅单点移除易报“module is in use”。

linux怎么手动加载或卸载指定内核驱动

优先用 modprobe,别直接上 insmod;卸载必须用 modprobe -r,rmmod 很容易卡死。

加载驱动:用 modprobe 还是 insmod?

绝大多数情况下,你应该用 modprobe。它会自动查 /lib/modules/$(uname -r)/modules.dep,递归加载所有依赖模块(比如加载 uas 前,自动先加载 usbcore 和 scsi_mod);而 insmod 只认绝对路径,不处理依赖、不读配置、不支持别名,硬塞一个 .ko 文件进去,十有八九报 Unknown symbol in module。

  • 正确做法:sudo modprobe igb(不用写 .ko,也不用给路径)
  • 错误做法:sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/igb/igb.ko —— 除非你确认该模块完全无依赖且已验证过符号兼容
  • 如果模块不在标准路径,先运行 sudo depmod -a 更新依赖索引,再 modprobe
  • 加载带参数时,sudo modprobe igb InterruptThrottleRate=3000 比 insmod ... InterruptThrottleRate=3000 更可靠,因为前者能触发 /etc/modprobe.d/*.conf 中预设的校验逻辑

卸载驱动:为什么 rmmod 总提示 “Module is in use”?

rmmod 是“单点移除”,只看目标模块自己的引用计数(lsmod 输出里的 used by 列)。只要这个数字非零(哪怕只是另一个模块在 module_depends 里声明了它),就拒绝卸载。而 modprobe -r 会反向遍历整个依赖图,先卸载所有依赖它的子模块,再清理目标模块。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • 安全卸载:sudo modprobe -r igb(自动处理上下游依赖)
  • 危险操作:sudo rmmod -f igb —— 若模块正处理中断或持有锁,可能引发 Kernel panic,生产环境禁用
  • 卸载前务必检查:lsmod | grep ^igb 看 used by 是否为 0;再跑 lsof /dev/igb* 2>/dev/null 或 find /sys -name "*igb*" 2>/dev/null 排查隐式占用
  • 某些驱动(如 nvidia)会被 X Server、containerd 或 GPU 监控进程锁定,需先停服务:sudo systemctl stop gdm3 或 sudo pkill -f nvidia-persistenced

加载失败排查:光看 lsmod 没用,得盯 dmesg

lsmod 只告诉你模块“在列表里”,不代表初始化成功。真正可靠的判断依据是内核日志 —— 模块的 init 函数里 printk() 输出、硬件 probe 失败、内存分配错误,全在这里暴露。

  • 加载后立刻执行:dmesg | tail -20,搜 igb:、error、fail、unknown
  • 常见失败原因:vermagic 不匹配(modinfo igb.ko 对比 uname -r)、固件缺失(dmesg 提示 firmware: failed to load)、PCI 设备未被扫描到(lspci | grep 8086:1521)
  • 如果 insmod 失败后模块已部分载入,后续 modprobe 可能卡住,此时先 sudo dmesg | tail -20 确认状态,再考虑 sudo rmmod -f igb 强制清理(仅限调试环境)
  • 模块被 blacklist 也会静默失败:modprobe --showconfig | grep igb 查是否被屏蔽,或看 /etc/modprobe.d/*.conf 里有没有 blacklist igb

手动加载的边界场景:什么时候真得用 insmod?

只有两种情况值得考虑 insmod:一是调试刚编译好的模块(路径在当前目录,还没 install 到 /lib/modules);二是嵌入式板子上没生成 modules.dep,又确定模块完全孤立(比如裸机 LED 驱动)。

  • 临时加载本地模块:sudo insmod ./mydrv.ko(注意必须是当前路径或绝对路径)
  • 加 -v 看详细输出:sudo insmod -v ./mydrv.ko
  • 用 --dry-run 模拟加载:sudo insmod --dry-run ./mydrv.ko,提前发现符号缺失问题
  • 别用 -f 强制加载——它绕过 vermagic 校验,极易导致 oops,尤其在内核版本不一致时

真正麻烦的不是命令本身,而是依赖关系和内核符号的隐式绑定。一个模块能否加载,取决于 modules.dep 是否完整、vermagic 是否吻合、固件是否就位、PCI 设备是否被识别——这些信息全藏在 dmesg 里,而不是命令返回码中。

相关文章

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3970

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3413

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2573

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6230

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5862

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3433

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2925

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3159

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习