首页 > 解决方案 > 启动 GNU-EFI 操作系统后 qemu 挂起

问题描述

根据一篇文章:https ://wiki.osdev.org/GNU-EFI,我试图用 GNU-EFI 编写一个“hello world”x86_64 操作系统,但我遇到了一些问题。

当我使用以下命令启动 img

sudo qemu-system-x86_64 -drive file=$(BUILD_DIR)/$(OSNAME).img -m 256M -cpu qemu64 \
    -drive if=pflash,format=raw,unit=0,file="$(OVMF_DIR)/OVMF_CODE.fd",readonly=on \
    -drive if=pflash,format=raw,unit=1,file="$(OVMF_DIR)/OVMF_VARS.fd" \
    -net none

打印后 Qemu 挂起Found bootloader on fs0:

我不知道是什么原因造成的。我怀疑我在 Makefile 中犯了一些错误。下面是代码仓库:https ://github.com/xubury/myos用于重现。

顺便说一句,您可能需要指定 Makefile 的路径gnu-efi和路径ovmf

我在操作系统下运行代码:Arch Linux x86_64 和内核:5.11.1-arch1-1

提前谢谢了!

标签: linuxoperating-systemgnu-efi

解决方案


所以,当我把链接放在最后时,显然问题就消失-lgnuefi -lefi 了。但我不知道为什么。此外,应该调用 gnu-efi 函数来uefi_call_warpper解决一些 ABI 兼容性问题。


推荐阅读