编译内核 5.11.11 及更高版本

编译内核 5.11.11 及更高版本

在 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

尽管“制作”命令正在运行,如果出现任何与证书相关的问题,则只需点击进入。 就是这样。

相关内容