modinfo查第三方模块需先定位完整路径再执行,否则易查错版本;作者信息用modinfo -a或grep "^author:"获取,签名状态须结合sig_id输出与内核CONFIG_MODULE_SIG_FORCE配置及keyctl密钥环验证。

直接用 modinfo 查第三方模块的作者和签名,关键不是“能不能查”,而是“怎么确保查得准、看得懂”。第三方模块(比如你手动编译安装的驱动或厂商提供的 .ko 文件)往往不走系统默认路径,签名状态也容易被忽略。
确认模块路径再查,别只输模块名
第三方模块通常不在 /lib/modules/$(uname -r)/ 下,modinfo 模块名 可能查不到或查错版本。必须提供完整路径:
- 先定位文件:比如
find /opt /usr/local -name "mydriver.ko" 2>/dev/null - 再查信息:
modinfo /opt/mydriver/mydriver.ko - 如果只输
modinfo mydriver,系统会按默认路径搜索,很可能返回内置同名模块(如 ext4、xfs),而非你的第三方版本
作者信息看 -a 或 --author,但注意字段可能为空
作者字段来自模块编译时嵌入的元数据,第三方模块若未设置,-a 输出可能为空或显示默认值(如 “Unknown”):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查作者:
modinfo -a /path/to/module.ko - 更稳妥方式是查完整输出里的
author:行:modinfo /path/to/module.ko | grep "^author:" - 部分厂商模块把作者写在
description里,可顺带加-d一起看
签名状态不能只看有没有 sig_id,要结合内核配置判断
签名验证是否生效,取决于当前内核是否启用强制签名(CONFIG_MODULE_SIG_FORCE=y)。即使模块有签名字段,若内核没开启验证,它也能加载;反之,没签名则必然失败:
- 查签名 ID:
modinfo -F sig_id /path/to/module.ko—— 有输出说明已签名,为空不一定没签(可能是旧格式或未嵌入) - 查完整签名字段:
modinfo /path/to/module.ko | grep -E "^(sig_|signer|signature):" - 确认内核是否强制验签:
zcat /proc/config.gz 2>/dev/null | grep MODULE_SIG_FORCE或检查/boot/config-$(uname -r)
验证签名是否被内核认可,光看 modinfo 不够
modinfo 显示的是模块文件自带的签名信息,不代表内核加载时真认这个签名。真正决定能否加载的是内核密钥环是否包含对应公钥:
- 查看已导入的签名密钥:
keyctl list %:.builtin_trusted_keys - 若模块签名公钥不在该密钥环中,即使
sig_id存在,加载也会被拒绝(modprobe: ERROR: could not insert 'xxx': Required key not available) - 此时需用
scripts/sign-file重新签名,或把厂商公钥导入内核密钥环

















