efi 上的 grub 加载内核但不会启动它

efi 上的 grub 加载内核但不会启动它
insmod normal
insmod btrfs
insmod part_gpt

set root=(hd0,2) 

menuentry 'Ubuntu' {
        linux /boot/vmlinuz root=/dev/sda2 ro
        initrd /boot/core.gz
        boot
}

你好,我正在学习如何手动进行 EFI 启动设置!

我取得了一些不错的进展,我创建了EFI分区,然后使用创建引导加载程序grub-mkimage,将其放入EFI / BOOT,然后创建grub.cfg,然后我从TinyCore下载了内核和ramdisk并将这两个文件放入(hd0,2).

现在我可以加载qemu并进入Grub可以加载的位置,linux /vmlinuz它似乎可以加载文件,它ls也可以查看文件。但似乎我所需要的只是键入boot并看到内核加载没有任何反应,我只需键入boot它就会挂起,我所能做的就是重新启动。

我知道在这个阶段我可能无法成功启动,但至少我期望启动启动,并从内核收到一些有关 IRQ 设置、检测到的设备等的消息。

我的下一步可能是什么?

Qemu 命令行:

qemu-system-x86_64 -display sdl -vga std -accel kvm -m 8000 \
    -drive format=raw,file=/dev/sda -bios /mnt/boot.flash -smp 2

答案1

/mnt/boot.flash你的文件是什么?

启动 UEFI 时,它可能应该是类似/usr/share/ovmf/OVMF.fd或 的东西,它可能已经在您的主机系统上可用,或者可能安装在名为或类似名称的/usr/share/qemu/OVMF.fd包中。ovmf

看:https://www.ubuntubuzz.com/2021/04/how-to-boot-uefi-on-qemu.html

要使 UEFI NVRAM 引导变量保留在虚拟机中,您可能还需要使用以下-pflash选项:

qemu-system-x86_64 -display sdl -vga std -accel kvm -m 8000 \
    -drive format=raw,file=/dev/sda -bios /usr/share/ovmf/OVMF.fd \
    -pflash /some/writeable/location/OVMF_VARS.fd -smp 2

如果幸运的话,软件包OVMF_VARS.fd安装的文件中可能包含一个示例文件ovmf,但如果没有,您可以尝试创建一个大约 528K 左右的空文件,并使用它,假设 UEFI 固件能够如果未正确初始化变量存储,则自动初始化它。

看:https://joonas.fi/2021/02/uefi-pc-boot-process-and-uefi-with-qemu/

相关内容