我需要在 QEMU Windows 客户端上获得更多图形内存。
我决定安装维尔蒂奥QEMU 的驱动程序来实现该目的。
我创建一个想象文件像这样:
qemu-img create -f raw image_file 4G
另外,我像这样运行 Windows 安装:
qemu-system-x86_64 -enable-kvm -m 4G -cdrom "OS.iso" -boot order=c -drive file=image_file,if=virtio
但是当Windows运行时,它没有找到任何硬盘(图像文件基本上)。相反,它要求一些司机。我认为它希望驱动程序与硬盘驱动器通信(图像文件)。
不过,在没有 Virtio 的情况下运行安装也可以:
qemu-system-x86_64 -enable-kvm -m 4G -cdrom "OS.iso" -boot order=d -drive file=image_file,format=raw
这两个命令之间的区别是:
order=c vs order=d
和
if=virtio vs format=raw
如何在 QEMU 中使用 Virtio 安装 Windows?
我最初的目标是在 Windows 上获得 512 MB 的图形内存(在 QEMU 中作为来宾运行)。不幸的是,默认情况下(没有 Virtio)我获得 8MB 视频内存,这不足以满足我的目的
谢谢
PS我的操作系统是Arch-Linux
答案1
您需要将设备添加到您的虚拟机。例如,如果您决定使用 VGA 适配器(模式),您的代码应如下所示:
qemu-system-x86_64 -enable-kvm -m 4G -cdrom "OS.iso" -boot order=c -drive file=image_file,if=virtio -device VGA,vgamem_mb=256
您可以通过运行以下命令获取可以添加到 VM 的设备列表(按类别打印 QEMU 支持的设备列表):
qemu-system-x86_64 -device help
此外,可以通过运行以下命令来确定每个设备的选项:
qemu-system-x86_64 -device device_name,help
以 VGA 适配器为例:
qemu-system-z86_64 -device VGA,help
这是一个类似的帖子:KVM/QEMU虚拟化如何设置显存?
答案2
Windows 不附带 virtio 驱动程序。因此,您需要在安装过程中加载它们。基本上有两种方法可以做到这一点:通过软盘或通过 ISO 文件。这两个图像都可以从Fedora 存储库。软盘选项很困难,因为您需要在启动 QEMU 的一开始就按 F6(在较新的 Windows 上按 Shift-F6)。这很困难,因为您需要时间来连接 VNC 控制台窗口。您可以尝试为启动顺序添加延迟。看qemu(1)有关在启动时应用延迟的更多详细信息。用于加载驱动程序的 ISO 选项是首选方式,但它仅在 Windows Vista 和 Windows Server 2008 及更高版本上可用。该过程是将带有 virtio 驱动程序的映像与主磁盘设备和 Windows 安装程序一起加载到另一个 cdrom 设备中:
因此,您的安装命令应包括您的硬盘映像、Windows 安装程序 iso 文件和 virtio 驱动程序:
$ qemu-system-x86_64 ... \
-drive file=/path/to/primary/disk.img,index=0,media=disk,if=virtio \
-drive file=/path/to/installer.iso,index=2,media=cdrom \
-drive file=/path/to/virtio.iso,index=3,media=cdrom \
...
在安装过程中,Windows 安装程序将要求您提供产品密钥并执行一些其他检查。当出现“您想将 Windows 安装在哪里?”时屏幕上,它会发出未找到磁盘的警告。请按照以下示例说明进行操作(基于带更新的 Windows Server 2012 R2)。
- 选择选项加载驱动程序。
- 取消选中“隐藏与此计算机硬件不兼容的驱动程序”框。
- 单击浏览按钮并打开 virtio iso 的 CDROM,通常名为“virtio-win-XX”。
- 现在浏览到 E:\viostor[your-os]\amd64,选择它,然后按“确定”。
- 点击下一步
您现在应该看到此处列出了您的 virtio 磁盘,可以选择、格式化和安装。
EDIT1:链接到 Fedora 存储库
编辑2:注意:某些驱动程序具有特定属性:
- virtio GPU 使用 max_hostmem 来指定允许使用多少主机内存。