现阶段 Linux 生态已经日渐丰富,但是还是有一些老顽固依旧只有 windows 端软件。对于这种情况,在 Linux 下安装一个 Windows 虚拟机成为了不错的选择。尽管 Linux 下有很多种虚拟机方案,但对于高性能开源方案显然 qemu/kvm 是最佳的。自从高考结束新笔记本电脑到来后一直苦于 Win 虚拟机性能不够,无法满足所需。直到目前基于 SR-IOV 的 Windows 虚拟显卡直通方案出来后终于拥有了一台媲美裸机性能的 Win 虚拟机。
环境
操作系统: ArchLinux
虚拟机 Windows 版本: Windows 10 22h2
虚拟机: virt-manager
设备: Thinkbook14+ 2025 Ultra7
显卡: Intel Arc 140T GPU
前置准备
- 确保你的核显支持 SR-IOV:Intel 连接
- 下载 virt-manager 和 qemu
|
|
注: 以上软件包可能不全……
- 启动虚拟网络
|
|
- 配置 virt-manager
编辑
/etc/libvirt/libvirtd.conf
添加以下内容
|
|
编辑 /etc/libvirt/qemu.conf
添加:
|
|
这里的 username 改成自己的用户名
- 启动 libvirtd
|
|
创建普通虚拟机
到这一步,已经可以开始创建普通虚拟机了
在向导最后一步不要着急去完成创建,先选择 Customize configuration before install,进行进一步配置。
在 Firmware 选择 UEFI OVMF 选项,硬盘选择 virtio 以获得最好的性能。
可以安装 virtio-win
和 spice-guest-tools-windows
方便 virtio 和 spice 驱动安装。
到目前为止,都是基本操作。现在开始配置 SR-IOV
创建虚拟显卡
安装 i915-sriov-dkms
,这个软件在 aur 上有:
|
|
编辑 /etc/default/grub
修改GRUB_CMDLINE_LINUX_DEFAULT
为 :
|
|
重启系统,而后运行 lspci | grep VGA
目前还是:
|
|
创建 /etc/sysfs.conf
,编写:
|
|
重启系统后在 root 用户下运行:
|
|
此时运行 lspci | grep VGA
将出现第二个显卡,其实就是创建的虚拟显卡
大致如下:
|
|
这个 00:02.1
就是等下要直通的显卡
直通显卡
在已经创建好的 win 虚拟机中 添加新的硬件选择 PCI 并 00:02.1 ,注意后面名称确定是否为所要直通的显卡。如果运行虚拟机没有问题后就可以安装显卡驱动。而后便可以看到任务管理器中的 GPU0 啦!
此时直通已经完成,但 virt-manager 的显示是不会调用显卡的,我们需要借由 xrdp 远程桌面来调用显卡。
远程连接
在 windows 设置中打开远程桌面,这里还略有些许复杂要解决安全性验证问题。
Linux 端我们选择的是 freerdp
运行参数在这:
|
|
将 user 修改为 win 中的用户名,将 passwd 修改为 win 的密码,将 ip 修改为虚拟机的 ip 地址。回车后就可以使用 xrdp 远程连接带有直通显卡的 win 虚拟机了
到这一步,可以自己编写脚本方便随时连接虚拟机。