无法通过 EFISTUB 直接启动 Linux 内核

无法通过 EFISTUB 直接启动 Linux 内核

我从源代码编译了 Linux 内核 5.18.4,启用了所有与 EFI 相关的选项,没有任何内置参数,也没有默认的 init 路径,另外,值得一提的是,我没有使用 initramfs/initrd

我正在尝试在支持 EFI 的虚拟机上通过 VirtualBox 6.1.34 启动此内核

安装盘(/dev/sda)有两个分区:

  • /dev/sda1格式化为 FAT32 的 512mb EFI 系统分区安装在/boot
  • /dev/sda2格式化为 ext4 的 15.5GB 根分区安装在/

内核位于/boot/EFI/BOOT/boox64.efi,似乎这种命名约定使其自动启动,跳过 UEFI shell,并且无需通过 来创建启动条目efibootmgr,但我不确定这是否是不同硬件上不同 UEFI 实现的规范

每当我尝试启动它时,都会收到以下错误:

虚拟机uefi错误

在之前的尝试中,通过进行一些小的调整,例如更改内核路径和进行其他一些调整,结果是相似的,每当我尝试vmlinuz.efi通过 EFI shell 执行时,机器都会永远挂起,而不显示任何错误消息(这是即使在传递root=/dev/sda2init=/bin/init作为参数时也是如此)

答案1

我必须在内核上启用帧缓冲区.config,以防止出现黑屏:

CONFIG_FB_EFI=y
CONFIG_FRAMEBUFFER_CONSOLE=y

谢谢丁格尔为了他的回答

相关内容