我想写一个" hello world ";x86_64操作系统与GNU-EFI根据一篇文章:https://wiki.osdev.org/GNU-EFI,但我遇到了一些问题。
当我使用以下命令
引导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
打印Found bootloader on fs0:
后Qemu挂起
顺便说一句,您可能需要在Makefile中指定gnu-efi
和ovmf
的路径。
我在OS: Arch Linux x86_64和Kernel: 5.11.1-arch1-1下运行代码
提前感谢!
所以,当我将-lgnuefi -lefi
放在链接的末尾时,显然问题就消失了。但我不知道确切的原因。此外,对于一些ABI兼容性问题,应该使用uefi_call_warpper
调用gnu-efi函数。