如何安装第三方模块,以便在启动时加载?


24

我有一个第三方模块和一个图像采集卡一起使用。我已经下载了内核源代码,并按照供应商的说明进行了编译,并将生成的模块arvdrv.ko放在一个文件夹中。

供应商提供了一个脚本,该脚本将模块加载到内核中,并且在我运行它时可以运行。该模块已加载,但仅直到下一次引导。该脚本不使用modprobe。安装模块后,我可以访问抓帧器。

在我看来,modprobe维护着许多模块的清单。可以编辑/ etc / modules添加模块名称,它将在启动时加载,但是模块arvdrv不在modprobe的列表中。

我的问题是如何让modprobe知道该模块?是否需要将其复制到新位置?


我最终发现,在找到“正确”方式后我遇到的问题是供应商忘记了包含其他初始化脚本,因此驱动程序在启动时加载了但失败了。
Nate Lockwood 2013年

这里是树外的模块安装过程没有自动启动快速浏览安装部分:stackoverflow.com/questions/22783793/...
西罗桑蒂利新疆改造中心法轮功六四事件

Answers:


32

使用sudo

  1. 编辑/etc/modules文件,并.ko在其自己的行上添加模块的名称(不带扩展名)。引导时,内核将尝试加载此文件中命名的所有模块。

  2. 将模块复制到中的适当文件夹中/lib/modules/`uname -r`/kernel/drivers。就我而言,这是/lib/modules/`uname -r`/kernel/drivers/pci。这会将模块放置在modprobe的数据库中。我不知道这是否可以是链接。

  3. 运行depmod。这将找到模块的所有依赖关系。

  4. 此时,我重新启动,然后运行lsmod | grep module-name以确认该模块在引导时已加载。

有关更多信息,请参见modprobelsmoddepmod的手册页。


3
我确实按照您的指示进行了操作,但是直到供应商提供了一些调试代码后一切都没有起作用!!!您的答案是完整,简单的,如果没有供应商错误,我相信它会奏效。是的,我会接受。
Nate Lockwood 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.