我正在尝试编译linux内核5.12.4./linux-5.12.4/arch/x86/boot
我从 kernel.org 获得的,它编译时没有任何错误,但您通常会收到的消息“图像 xyz 已准备好”永远不会出现,并且在其他地方或任何地方都找不到图像。以下是我正在运行的命令:
cd linux-5.12.4
cp /boot/config-`uname -r` .config
yes '' | make oldconfig
make clean
time make -j`nproc` bzImage
以下是输出的最后几行:
CC fs/binfmt_elf.o
CC fs/compat_binfmt_elf.o
CC fs/mbcache.o
CC fs/posix_acl.o
CC fs/coredump.o
CC fs/drop_caches.o
CC fs/fhandle.o
AR fs/built-in.a
real 0m34.893s
user 14m48.740s
sys 1m36.019s
所以这不是我第一次编译内核,但自从我上次编译内核以来已经过去了大约一年,所以看起来有些东西发生了变化,我按照在各个网站上找到的说明进行操作,它们显示了几乎相同的内容,我不知道看看我错过了什么,我以前做过这个,而且过去也有效。
我也尝试过time make -j32 LOCALVERSION=-custom
,但再次没有生成图像。
我使用的是 Ubuntu 20.04 (AMD Ryzen)。
答案1
好吧,我发现了问题(感谢 Stephen Kitt),确实,输出中出现了错误。这是我第一次看到以这种方式显示的错误。所以我运行了这个命令:
time make -j32 bzImage > ~/Desktop/log_std.txt 2> ~/Desktop/log_err.txt
和...
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1851: certs] Error 2
make: *** Waiting for unfinished jobs....
arch/x86/hyperv/hv_apic.c: In function ‘hv_send_ipi_mask_allbutself’:
arch/x86/hyperv/hv_apic.c:236:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
236 | }
| ^
然后我发现这在 Gentoo 论坛上发帖:
3193 CONFIG_SYSTEM_TRUSTED_KEYS="n"
You specified that additional keys would be found in file n, but no such file exists. Most likely, you should set this field to be empty, not the string n.
当我查看我的.config
文件时,确实发现了这一点:
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
就我而言,我只是注释掉该行只是为了看看会发生什么:
#CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
那么如果这不起作用或产生错误,我会遵循给出的建议:
Most likely, you should set this field to be empty
进而
`time make -j32 bzImage`
**Kernel: arch/x86/boot/bzImage is ready** (#2)
real 1m37.761s
user 33m57.677s
sys 4m3.008s
查看配置(编译后),我现在可以看到CONFIG_SYSTEM_TRUSTED_KEYS=""
所以现在可以了:)