linux内核编译成功,但是没有生成image镜像(无处可寻)

linux内核编译成功,但是没有生成image镜像(无处可寻)

我正在尝试编译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=""

所以现在可以了:)

相关内容