我正在对(非常基本的)操作系统开发进行一些实验,以便自学一些有关机器语言和 x86 汇编的知识。
我的系统上安装了 lib-virt / qemu。(Debian 11)
但是我正在努力寻找一种方便的方法来引导我的输出文件。
我已经使用nasm bootsector.asm -f bin -o bootsector.bin
.
最初我尝试运行此命令:
qemu bootsector.bin
但是我得到了错误command not found
。我相信这是因为(无论出于何种原因,我并不确切知道)我的包管理器提供的命令实际上是这样的:
qemu-system-x86_64 bootsector.bin
但是这会产生这个输出,这不是我所期望的
WARNING: Image format was not specified for 'bootsector.bin' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
VNC server running on ::1:5900
我本来希望会弹出一个图形窗口,显示模拟启动过程的输出。然而,显然相反,正在启动 VNC 服务器。
一些在线搜索表明-display sdl
或-display gtk
可能需要启动显示。(但是我不记得几年前的 qemu 版本中需要这样做。)
这些开关都不起作用,都打印
Display `gtk`/`sdl` is not avaiable.
我找不到解决方案。我相信 Debian 的 qemu 软件包不是用 gtk 或 sdl 支持构建的。我不知道这是为什么。
virt-manager
因此我尝试了另一种方法,即使用我的引导扇区创建一个虚拟机并将其分配为单个存储设备。
这有效,但只有一次。启动 vm 后,引导扇区文件的所有权和组更改为libvirt
. 这样可以防止我的 makefile 覆盖它,因为它是一个写保护文件。
在这一点上,我没有想法。我认为一定有相当数量的 SO 用户在玩操作系统开发,甚至全职从事这方面的工作。我该如何解决我在使用 qemu 时遇到的问题,或者我还能做些什么来加快我的开发过程。我想做的就是能够从命令行启动模拟器并启动我的实验引导扇区。