我正在尝试让内核模块在启动时加载。
如果我运行insmod /path/to/module.ko
,它可以正常工作。但是这每次重启都要重复执行。
如果我运行modprobe /path/to/module.ko
,它找不到该模块。
我知道modprobe使用一个配置文件,但即使将/path/to/module.ko添加到/etc/modules中,我也无法让其加载该模块。
正确的配置是什么?
我正在尝试让内核模块在启动时加载。
如果我运行insmod /path/to/module.ko
,它可以正常工作。但是这每次重启都要重复执行。
如果我运行modprobe /path/to/module.ko
,它找不到该模块。
我知道modprobe使用一个配置文件,但即使将/path/to/module.ko添加到/etc/modules中,我也无法让其加载该模块。
正确的配置是什么?
您可以将模块的符号链接到标准路径,这样depmod就能看到它,并且您可以像加载任何其他模块一样加载它。
sudo ln -s /path/to/module.ko /lib/modules/`uname -r`
sudo depmod -a
sudo modprobe module
如果您将模块名称添加到/etc/modules中,系统会在每次启动时自动加载它。
不过,我认为正确的配置方式是将模块复制到标准路径中。
按照以下步骤操作:
- 将hello.ko复制到/lib/modules/'uname-r'/misc/
- 在/lib/modules/'uname-r'/modules.dep中添加misc/hello.ko条目
- sudo depmod
- sudo modprobe hello
modprobe将检查modules.dep文件以查找任何依赖项。
我认为关键是将模块复制到标准路径。
完成后,modprobe只接受模块名称,因此省略路径和“.ko”扩展名。
sudo -i
cp hello.ko /lib/modules/`uname-r`/
depmod
modprobe hello
uname -r
,因为大家都期望模块在那里。 - ephemient/lib/modules/
。所以确实,至少要使用uname -r
来验证当前的内核版本... - hydelinuxkit/alpine
构建一个Docker系统,我想要加载一个内核模块。首先,我正在尝试进行这个测试,但是我甚至没有/lib/modules/
文件夹,更不用说针对内核版本的文件夹或者modules.dep
了。因此,在创建路径之后,depmod -a
仍然导致Segmentation fault
。有什么提示吗? - gr4nt3d