在 Ubuntu 20.04 LTS 中,我在添加新的系统调用后编译了内核 5.11.11。在更高版本的 Ubuntu 和内核中也遇到了这个问题。在执行 make 命令时,我收到此错误:
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
make: *** [Makefile:1809: certs] Error 2
如果有人能提供帮助,我将不胜感激,谢谢。
答案1
在你的内核配置文件中你会发现这一行:
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
将其更改为:
CONFIG_SYSTEM_TRUSTED_KEYS=""
根据您的源结构,您可能能够通过命令行执行此操作。示例:
scripts/config --disable SYSTEM_TRUSTED_KEYS
或者
scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
编辑:自从这个答案发布以来,另一个键已被添加到默认的 Canonical 内核配置中:
CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"
所以,用户内核编译还需要处理才能完成:
scripts/config --disable SYSTEM_REVOCATION_KEYS
也可以看看基于git的主线内核编译笔记。
答案2
好吧,我刚刚生成了一个自签名 x509 证书,以我的名字作为通用名称,将密钥和证书放在同一个文件中,并将两行指向该文件。编译完美,安全性应该完好无损。我假设它用于签署内核二进制文件,您可以在安全启动中将您的证书列入白名单,以允许您的内核启动。
openssl req -x509 -newkey rsa:4096 -keyout certs/mycert.pem -out certs/mycert.pem -nodes -days 3650
CONFIG_MODULE_SIG_KEY="certs/mycert.pem"
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS="certs/mycert.pem"
CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
CONFIG_SECONDARY_TRUSTED_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
答案3
运行后只需执行以下两个命令“制作菜单配置”
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
尽管“制作”命令正在运行,如果出现任何与证书相关的问题,则只需点击进入。 就是这样。