启动 GNU-EFI 后 qemu 挂起 os
qemu hangs after booting a GNU-EFI os
根据一篇文章https://wiki.osdev.org/GNU-EFI,我试图用 GNU-EFI 写一个“hello world”x86_64OS,但我 运行 遇到了一些问题.
当我使用以下命令启动 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
的路径。
我运行 OS下的代码:Arch Linux x86_64 and Kernel: 5.11.1-arch1-1
非常感谢!
所以,当我将 -lgnuefi -lefi
放在链接的末尾时,问题显然就消失了。但我不知道为什么。此外,对于某些 ABI 兼容性问题,应使用 uefi_call_warpper
调用 gnu-efi 函数。
根据一篇文章https://wiki.osdev.org/GNU-EFI,我试图用 GNU-EFI 写一个“hello world”x86_64OS,但我 运行 遇到了一些问题.
当我使用以下命令启动 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
的路径。
我运行 OS下的代码:Arch Linux x86_64 and Kernel: 5.11.1-arch1-1
非常感谢!
所以,当我将 -lgnuefi -lefi
放在链接的末尾时,问题显然就消失了。但我不知道为什么。此外,对于某些 ABI 兼容性问题,应使用 uefi_call_warpper
调用 gnu-efi 函数。