centos启动加载驱动
本篇博客记载了在centos启动时,自动加载内核模块的探索过程。
要想在CentOS中自动加载内核模块 mimosa.ko ,需要在
/etc/sysconfig/modules/
目录中增加一个脚本,在此脚本中加载所需的模块。
先切换到 root 用户。
1 | cd /etc/sysconfig/modules/ |
在脚本代码为:
1 | #!/bin/sh |
修改脚本为可执行。 1
chmod 755 mimosa.modules //这一步至关重要
注意
脚本中的 mimosa 不带 .ko
,这里搜索的是名字。因为 modprobe 要到
/lib/modules/$(uname -r)/ 中搜索内核模块,所以将
mimosa.ko 拷贝到
/lib/modules/$(uname -r)/kernel/ 中,新建文件夹
misc。
1 | cd /lib/modules/$(uname -r)/kernel |
然后执行 mimosa.modules 检查脚本是否报错。
果然 !
FATAL: Module mimosa not found
内核加载模块的条目可以查看
/lib/modules/$(uname -r)/modules.dep ,并没有找到我们的
mimosa.ko。
这里要执行 depmod -a ,这条命令的功能是读取在
/lib/modules/$(uname -r)/
目录下的所有模块,分析可加载模块的依赖性,将模块信息写入
modules.dep 、 modules.dep.bin 、
modules.alias.bin 、 modules.alias 和
modules.pcimap 文件中。
-a 分析所有可用的模块,不用此参数经常会报错。
在linux桌面系统中,当你编译了新的驱动,为了能够用
modprobe ***加载模块, 你需要先将模块拷贝到/lib/modules /2.6.31-20-generic目录下,然后运行sudo depmod -a将模块信息写入modules.dep、modules.dep.bin、modules.alias.bin、modules.alias和modules.pcimap文件中。
执行完后查看 modules.dep 文件发现 mimosa.ko
加入其中。
再次执行脚本,或者执行 modprobe mimosa
成功。此处不是mimosa.ko 。
参考 [1] modprobe XXX not found 解决与Depmod命令 [2] “FATAL: Module not found error” using modprobe [3] depmod命令 [4] Module not found when I do a modprobe