我有一个第三方模块与帧抓取器配合使用。我下载了内核源代码,按照供应商的说明对其进行了编译,并将生成的模块 arvdrv.ko 放在一个文件夹中。
供应商提供了一个脚本,用于将模块加载到内核中,当我运行该脚本时,它就可以工作;模块已加载,但只能加载到下次启动为止。该脚本不使用 modprobe。安装模块后,我可以访问帧抓取器。
在我看来,modprobe 维护着许多模块的列表。你可以编辑 /etc/modules 来添加模块名称,它会在启动时加载,但模块 arvdrv 不在 modprobe 的列表中。
我的问题是如何让 modprobe 知道该模块?是否需要将其复制到新位置?如果需要,复制到哪里?
答案1
使用sudo
:
编辑
/etc/modules
文件并在其自己的行中添加模块名称(不带.ko
扩展名)。启动时,内核将尝试加载此文件中命名的所有模块。将模块复制到 中的合适文件夹
/lib/modules/`uname -r`/kernel/drivers
。在我的情况下,该文件夹是/lib/modules/`uname -r`/kernel/drivers/pci
。这会将模块放入 modprobe 的数据库中。我不知道这是否可以作为链接。运行
depmod
。这将找到模块的所有依赖项。此时,我重新启动然后运行
lsmod | grep module-name
以确认该模块在启动时已加载。
请参阅手册页修改探针,修改, 和德普莫德了解更多信息。