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/