优雅的Linux显卡直通Windows虚拟机方案演示
由于经常被Windows气晕所以21年底组装PC时用了ArchLinux(其实是Manjaro)作为桌面系统,但是又有Windows游戏和软件的需求,再加上我是N卡...与其折腾Linux下的wine、N卡驱动之类的不如直接搞台Windows虚拟机。
Linux下虚拟化的最佳方案是KVM,我大概在22年初就开始用libvirt+qemu运行Win10的KVM,并用looking-glass*这个项目作为画面输出。
经过一年多的使用与改良,目前搞出了一套我用这比较舒服的方案。
CPU:绑定核心以适配13代的大小核架构,大核全部分给VM,小核留给Host
内存:加到32GB,对半分
硬盘:VirtIO协议 主硬盘和游戏盘用qcow2虚拟硬盘,物理位置在NVMe高速固态里;两块垃圾硬盘接在同一个SATA控制器上,PCI直通控制器给VM
网络:libvirt预设没怎么改,NAT模式并VM绑定了本地ip而已
显卡:PCI直通显卡设备,patch了显卡的vbios
视频输出:这套方案的重点,looking-glass项目通过ivshmem设备,实现了走内存低延迟传输原始frame。
音频输出:一直都是用的scream*项目,走局域网输出给VM(也支持ivshmem,但好像会影响到looking-glass?);顺便用looking-glass客户端自带的SPIECE音频输出
音频输入:用looking-glass协议自带的SPIECE音频输入,但似乎有奇怪的BUG:运行一段时间后会丢失音频输入,需要在Windows侧禁用麦克风再启用
*1: https://looking-glass.io/
*2: https://github.com/duncanthrax/scream
此外为了优雅地切换host和vm,我还搞了快捷键和脚本
目前差不多完善了,准备有时间写一篇文章详细分享我的方案......毕竟是一年多的体验和改良