编译内核时报错 No rule to make target 'debian/certs/debian-uefi-certs.pem' 如何解决?
错误产生原因
你当前使用的内核配置文件继承了Debian/Ubuntu发行版的默认内核配置,该配置默认开启了CONFIG_SYSTEM_TRUSTED_KEYS参数,参数值被预置为debian/certs/debian-uefi-certs.pem。这个文件是Debian/Ubuntu官方维护内核安装包时自带的UEFI安全启动签名密钥,仅存在于发行版的内核构建仓库中,你自行下载的官方内核源码包内不存在该文件,因此编译时触发依赖缺失报错。
解决办法
根据你的使用场景选择对应方案即可:
- 如果你无需使用UEFI安全启动功能,直接清空该配置项即可:
- 手动编辑内核源码根目录下的
.config文件,找到CONFIG_SYSTEM_TRUSTED_KEYS配置行,将引号内的路径删除,修改为CONFIG_SYSTEM_TRUSTED_KEYS="" - 也可以直接在源码根目录执行命令完成修改:
scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
- 手动编辑内核源码根目录下的
- 如果你需要自行签名内核适配UEFI安全启动,将该配置项的路径修改为你自己生成的签名证书的绝对路径即可
- 如果修改后仍出现类似的密钥缺失报错,可同步清空模块签名配置项,将
CONFIG_MODULE_SIG_KEY修改为CONFIG_MODULE_SIG_KEY="",或者执行命令scripts/config --set-str MODULE_SIG_KEY ""
修改完成后重新执行编译命令即可正常编译。
内容的提问来源于stack exchange,提问作者user786
相关产品推荐
相关产品推荐

