You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用modprobe插入hello.ko内核模块失败,求排查与解决方法

问题分析与解决方法

你操作里的几个关键错误:

  • 错误1:模块放置路径不规范:直接把hello.ko扔到/lib/modules/4.13.0-31-generic/根目录是不符合Linux模块管理规范的,内核模块通常需要放在该目录下的子目录(比如extra/misc/),而且modprobe依赖模块数据库定位文件,根目录下的模块如果没被数据库收录,会直接找不到。
  • 错误2:modprobe命令带了.ko后缀modprobe是通过**模块名(不带后缀)**来加载的,你输入hello.ko会让它尝试查找名为hello.ko的模块,自然会提示找不到。
  • 错误3:未更新模块依赖数据库:复制模块后没有执行depmod命令,这个命令负责扫描所有模块目录,生成modules.dep等映射文件,modprobe正是靠这些文件来定位模块的。

正确的操作步骤:

  1. 将模块放到规范子目录
    先在目标目录下创建一个专门存放自定义模块的子目录(如果已有extra目录可直接复用):

    sudo mkdir -p /lib/modules/4.13.0-31-generic/extra
    

    然后把你的hello.ko复制进去:

    sudo cp hello.ko /lib/modules/4.13.0-31-generic/extra/
    
  2. 更新模块依赖数据库
    执行depmod命令让系统识别新添加的模块:

    sudo depmod -a
    

    这个命令会重新扫描所有模块目录,生成最新的依赖映射文件,确保modprobe能找到你的模块。

  3. 用modprobe加载模块
    现在直接使用模块名(不带.ko后缀)加载:

    sudo modprobe hello
    
  4. 验证模块加载状态
    可以通过以下命令确认模块是否成功加载:

    lsmod | grep hello
    

    如果输出中出现hello相关的条目,说明加载成功。

  5. 移除模块(可选)
    移除时同样使用模块名:

    sudo modprobe -r hello
    

    或者继续使用你熟悉的rmmod hello命令也可以,两者效果一致。


内容的提问来源于stack exchange,提问作者Khilav

火山引擎 最新活动