编译自定义Linux内核时modules_install命令失败如何解决?
解决内核编译
modules_install时的模块签名失败问题 错误核心是内核尝试对模块进行签名时,找不到所需的签名密钥文件或SSL依赖缺失,导致签名流程中断。以下是几种可行的解决方法:
方法一:临时禁用模块签名(测试环境推荐)
如果只是测试自定义内核,不需要强制模块签名,可以直接跳过签名步骤:
- 方式1:重新配置内核,关闭签名选项
执行make menuconfig,导航到:Enable loadable module support -> Module Signature verification
取消勾选CONFIG_MODULE_SIG(或至少取消CONFIG_MODULE_SIG_FORCE),保存配置后重新编译内核和模块:make -j$(nproc) sudo make modules_install install - 方式2:编译安装时直接传递参数跳过签名
执行安装命令时添加MODULE_SIG=n参数:sudo make modules_install MODULE_SIG=n
方法二:配置合法的签名密钥(生产环境推荐)
如果需要模块签名功能,需先生成并配置签名密钥:
- 生成RSA签名密钥对:
openssl req -new -x509 -newkey rsa:2048 -keyout signing_key.pem -outform DER -out signing_key.x509 -nodes -days 3650 -subj "/CN=Custom Kernel Signing Key/" - 在内核配置中指定密钥路径:
执行make menuconfig,进入Enable loadable module support -> Module Signature verification,设置:Signing key file为刚才生成的signing_key.pem的绝对路径- 确保
CONFIG_MODULE_SIG和CONFIG_MODULE_SIG_ALL已勾选
- 重新编译并安装:
make -j$(nproc) sudo make modules_install install
方法三:检查并安装依赖
确保系统已安装OpenSSL工具(签名流程依赖它):
- Debian/Ubuntu系:
sudo apt update && sudo apt install openssl - RHEL/CentOS/Fedora系:
sudo dnf install openssl
内容的提问来源于stack exchange,提问作者Itay Avraham
相关产品推荐
相关产品推荐

