【问题标题】:How do I configure modprobe to find my module?如何配置 modprobe 来查找我的模块?
【发布时间】:2008-10-22 13:59:34
【问题描述】:

我正在尝试让内核模块在启动时加载。

如果我运行insmod /path/to/module.ko,它可以正常工作。但是每次重新启动时都必须重复此操作。

如果我运行modprobe /path/to/module.ko,它找不到模块。 我知道 modprobe 使用了一个配置文件,但即使将 /path/to/module.ko 添加到 /etc/modules 后,我也无法让它加载模块。

什么是正确的配置?

【问题讨论】:

    标签: kernel kernel-module insmod


    【解决方案1】:

    您可以为您的模块创建一个到标准路径的符号链接,这样 depmod 会看到它并且您可以像任何其他模块一样加载它。

    sudo ln -s /path/to/module.ko /lib/modules/`uname -r`
    sudo depmod -a
    sudo modprobe module
    

    如果您将模块名称添加到 /etc/modules,它将在您启动时加载。

    无论如何我认为正确的配置是将模块复制到标准路径。

    【讨论】:

    • 如果你真的想要,你可以写“search /some/other/path”到/etc/depmod.conf或/etc/depmod.d/something,但是我仍然建议按照 Jaime 的建议进行操作,并复制或符号链接到 /lib/modules/uname -r,每个人都希望模块存在。
    • 你也可以重写include/config/kernel.release,重新编译内核。然后,您的模块将位于 /lib/modules//
    • 我只是稍微摸了摸头,直到我发现,我在 wrong 内核版本的/lib/modules/ 下。所以确实,使用uname -r,至少可以验证当前的内核版本......
    • 我目前正在构建一个基于linuxkit/alpine 的docker 系统,我想在其中加载一个内核模块。首先,我尝试使用this test,但我什至没有/lib/modules/ 文件夹,更不用说用于内核版本的文件夹,也没有modules.dep。所以在创建路径之后,depmod -a 仍然会生成Segmentation fault。有什么提示吗?
    【解决方案2】:

    按照以下步骤:

    1. 将 hello.ko 复制到 /lib/modules/'uname-r'/misc/
    2. 在 /lib/modules/'uname-r'/modules.dep 中添加 misc/hello.ko 条目
    3. sudo depmod
    4. sudo modprobe 你好

    modprobe 将检查 modules.dep 文件中的任何依赖项。

    【讨论】:

      【解决方案3】:

      我认为关键是将模块复制到标准路径。

      完成后,modprobe 只接受模块名称,因此不要使用路径和“.ko”扩展名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-21
        • 1970-01-01
        • 2016-12-02
        • 2022-10-20
        • 2017-02-25
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多