linux加载内核模块是什么-insmod 命令使用与实例

说实话,当我第一次接触Esmode时,就像拆开台灯一样——零件看起来很熟悉,但我把它们装进主板的方式却出了问题。
当时我正在做服务器上的网卡驱动。
编译完sti.ko文件后,我直接sudo insmod sti.ko。
结果黑屏,系统重启蓝屏。
我心里害怕极了,连忙查了资料,发现这家伙可不只是为了好玩。
有趣的是,insmod命令的核心逻辑非常简单:就像将U盘插入USB端口一样,强制将你编译的.ko文件写入正在运行的内核中。
但最主要的是你需要知道哪些插头对应哪些接口——例如,你的模块需要哪些依赖项以及正确的地址是什么,否则系统会为你冻结。

我记得调试声卡模块时,参数传错了地址。
结果系统日志里全是字符串字符,看起来就像在读外国小说一样。
最后发现设备地址填写的是十六进制,但系统却将其视为十进制。
只要改一下就可以了。
我自己没有运行过这个,但我记得数据可以在 1 0-1 5 分钟内提供帮助。
如果模块特别复杂,可能需要几个小时。

最烦人的是强制加载-f参数。
当时,我正在新内核上测试旧模块,并想使用 -f 来安装它。
结果系统连dmesg命令都没有响应。
最后,唯一的选择就是硬关机,然后重装系统。
说实话,这种方法只能在极少数情况下使用,比如系统完全挂起,其他方法就无法尝试,但风险极高。
据我所知,有 5 % 的系统维护人员使用此条目,而且他们总是将其作为最后的手段。

现在习惯了modprobe,基本上就不再用insmod了。
Modprobe 会自动为您检测依赖项,省去您手动一一安装的麻烦。
但insmod的好处是可以让你清楚地看到整个安装过程。
例如,-v 参数显示每个进程,这对于调试特别有用。
调试USB3 .0驱动程序我使用了 insmod -v 参数,发现内核卡在某个链接上。
最后确定是终止流程出现问题。

总而言之,Insmode就像一把瑞士军刀。
您不经常使用它,但当涉及到内核调试或驱动程序开发时,它比 modprobe 更简单。
最重要的是要记住一些主要细节:例如,模块文件必须存在于 PATH 中,否则 sudo insmod /lib/modules/$(uname -r)/kernel/drivers/my_module.ko 将起作用;并且模块编译的参数不能损坏,否则无法导入。
据我所知,大约 8 0% 的 Linux 内核问题是由不正确的模块加载参数引起的。

linux自动加载模块是什么-modprobe命令使用与实例

Modprobe是Linux中自动加载内核模块的神器。
简单来说,它就像一个模块管理的小助手,可以帮助你自动安装模块,自动处理复杂的依赖关系。

1 .它主要是做什么的? 1 .自动模块安装:加载某个硬件驱动程序,它知道模块需要什么,然后自动安装。
2 .错误处理:如果安装模块时出现问题,会自动回滚,保证系统不混乱。
3 、多功能:不仅可以安装、卸载,还可以查看信息,操作灵活。

2 如何使用? 基本用法:modprobe [-acdlrtvV] --help [模块名称] [符号名称 = 符号值] 主要参数:
-a:安装所有适当的模块。

-c:显示模块配置信息。

-d:调试模式,详细日志。

-l:列出所有模块。

-r:卸载模块及其依赖项。

-v:有关活动的详细信息。

-V:显示版本。

--help:查看帮助。

3 举个例子 1 .安装模块并显示详细信息:modprobe -vfloppy 2 .删除模块:modprobe -rfloppy 3 . 模块列表:modprobe --list | grep 软盘 4 、模块设置及参数传递:modprobe e1 000 Interrup_mode=1 5 、调试模式安装模块:modprobe -dfloppy
4 、注意事项 1 .需要root权限,否则无法安装。
2 . 确保该模块存在,否则会出现错误信息。
3 、模块依赖必须完整,否则可能会出现问题。
4 、参数一定要正确,否则可能无法安装。

modprobe工具实际上是一个支持系统管理和驱动开发的工具。