linux - 启动 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
提前谢谢了!
解决方案
所以,当我把链接放在最后时,显然问题就消失-lgnuefi -lefi
了。但我不知道为什么。此外,应该调用 gnu-efi 函数来uefi_call_warpper
解决一些 ABI 兼容性问题。
推荐阅读
- python - 从python将颜色值拉入firebase
- python - 我试图比较来自用户输入的 2 个列表,但它 gi
- javascript - 反应如何停止相交观察
- java - 需要将控制台输出存储在数据库表中
- c# - 每帧更新布尔 if 语句
- dpi - 如何在两台计算机上使用 Pango 渲染匹配的文本?
- wordpress - htaccess 和 wordpress 永久链接
- python-3.x - How Do I Create New Pandas Column Based On Word In A List
- python - 无需 elseif 即可设置类变量的优雅方法
- c# - 阅读 Service Bus 主题订阅死信队列 (DLQ) C# 的最佳方式