最近,我遇到了运行一些 Windows 98 软件的需求。我决定使用这个项目来学习虚拟机(我以前没有经验)。我尝试在我的 Fedora 31 系统上运行 virtualbox,但我发现这需要新编译的模块,这些模块必须经过签名才能在我的 UEFI 安全启动系统上使用。因此,我接下来转向了 libvirt。
在 libvirt 上安装相当容易。libvirt 显然将 Windows 98 SE 识别为其模拟选项之一,并且我的 Win98 磁盘安装顺利。但是,安装的系统无法启动。启动虚拟机后,屏幕变黑并且没有任何变化。
在搜索帮助时,我发现了使用基本 qemu 命令的建议。基于此,我尝试使用以下命令启动虚拟机:
qemu-system-i386 -hda /var/lib/ghb/qemu/images/win98.qcow2 -drive media=cdrom,format=raw,file=/data/ghb/Projects/QIC/qicstruc/windows98se.iso -no-kvm -vga cirrus -m 256 -cpu pentium3 -rtc base=localtime
这成功了!安装后,虚拟机的行为与我预期的一样。然后我尝试返回并使用 virsh edit 更改 libvirt 机器。我将域类型更改为 qemu,并将 arch 更改为 i686。尝试将机器更改为 pentium3,virsh 拒绝,说 IDE 控制器与该选项组合不兼容。尽管如此,我还是尝试使用可接受的选项进行安装。同样,安装顺利进行,这次机器成功启动。但是,鼠标太慢了,无法使用。
从我能找到的所有 libvirt 文档来看,我得到的印象是 libvirt 主要关注主机之间的迁移,其次才是模拟其他(尤其是过时的)硬件。我还得到的印象是 qemu 提供的配置选项比 libvirt 更广泛。我对 libvirt 感兴趣主要是因为它比 qemu 更容易使用。但是,由于我不太可能使用迁移,我学习 libvirt 是在浪费时间吗?
答案1
Qemu-system-x86_64 默认为 Q35 机器类型,qemu-system- i386 默认为 PC 机器类型。Q35 使用 Sata 控制器,它会安装,但由于驱动程序问题,安装后无法运行。
我的建议是对于任一机器类型使用 AMD/LSI SCSI 控制器而不是 IDE。
默认情况下,Dos/Win9x 可以在 64 位或 32 位 qemu 上正常运行,但是如果不重新安装则无法在机器类型之间切换。