根据一篇文章: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打印Found bootloader on fs0:后Qemu挂起
我找不出是什么引起的。我怀疑我在Makefile中犯了一些错误。下面是代码代码库:用于再现的https://github.com/xubury/myos。
顺便说一句,您可能需要在Makefile中指定gnu-efi和ovmf的路径。
我在OS: Arch Linux x86_64和Kernel: 5.11.1-arch1-1下运行了代码
首先要感谢大家!
发布于 2021-03-02 17:32:37
所以,很明显,当我把-lgnuefi -lefi放在链接的末尾时,问题就解决了。但我不知道为什么。此外,对于某些ABI兼容性问题,应该使用uefi_call_warpper调用gnu-efi函数。
https://stackoverflow.com/questions/66399748
复制相似问题