Rocky Linux 8.7下编译生成Linux 5.4.180内核RPM包时出现证书依赖错误求助
Rocky Linux 8.7下编译生成Linux 5.4.180内核RPM包时出现证书依赖错误求助
你好呀,看了你的报错信息,核心问题是找不到certs/rocky.pem这个证书文件。这是因为你复制了当前Rocky系统的内核配置文件(.config),里面默认开启了内核签名相关选项,但你下载的纯净内核源码里并没有这个Rocky专属的证书,所以编译时直接卡壳了。
给你三个实用的解决办法,按需选择:
方案一:关闭内核签名功能(最简单直接)
如果你不需要内核签名,直接把相关配置关掉就行:
- 回到内核源码目录:
cd linux-5.4.180 - 重新打开配置界面:
make menuconfig - 依次进入菜单:
Cryptographic API→Certificates for signature checking - 找到
System wide trusted keys选项,把它的值改成空(直接删除原来的certs/rocky.pem内容) - 再检查
Module signature key,如果也是指向rocky.pem,同样改成空或者默认的certs/signing_key.pem - 保存配置退出,然后重新执行
make rpm-pkg -j8
方案二:生成自己的签名密钥(保留签名功能)
如果你需要内核签名,可以自己生成一个密钥文件:
- 进入源码的certs目录:
cd linux-5.4.180/certs - 用openssl生成密钥:
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 -config x509.genkey -outform PEM -out signing_key.pem -keyout signing_key.pem - 返回源码根目录,编辑
.config文件:vi .config - 修改以下两个配置项:
CONFIG_SYSTEM_TRUSTED_KEYS="certs/signing_key.pem" CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" - 保存后重新编译:
make rpm-pkg -j8
方案三:复制系统自带的Rocky证书到源码目录
直接用系统原来的证书文件:
- 找到系统里的
rocky.pem,一般路径是/etc/pki/rocky/private/rocky.pem或者/usr/lib/modules/$(uname -r)/build/certs/rocky.pem - 复制到内核源码的certs文件夹:
sudo cp /etc/pki/rocky/private/rocky.pem linux-5.4.180/certs/ - 然后继续执行
make rpm-pkg -j8
额外注意事项
- 尽量不要用
sudo执行编译命令,rpmbuild会在当前用户的~/rpmbuild目录生成文件,用sudo可能导致权限混乱,后续难以清理 - 如果之前编译失败过,先执行
make clean && make mrproper清理残留的编译文件,再重新开始
备注:内容来源于stack exchange,提问作者gotothesky
相关产品推荐
相关产品推荐

