因为某些国内厂商的问题,一直无法完全使用Linux,还是需要一个win虚拟机来跑win下的软件,(不要说用什么wine,wine跑起来真的是依托答辩!)
尝试了vbox和vmware的win7虚拟机但性能一直无法很好,比如没办法有一个显卡,显示性能不佳。(
最终,我们选择了使用qemu/kvm作为跑win虚拟机的软件,并且直通了Inrel核显。
环境
操作系统:Arch Linux
核显:Intel WhiskeyLake-U GT2 [UHD Graphics 620]
虚拟机软件:Virt-manager(libvirt的gui前端)
……
Virt-manager的安装
|
|
virt-manager简单配置
- 在
/etc/libvirt/libvirt.conf
加入
|
|
- 在
/etc/libvirt/qemu.conf
加入
|
|
username
是你的用户名!!!
- 开启并自启
libvirtd
服务
|
|
- 将用户添加到
libvirt
组
|
|
编译qemu
因为我在使用qemu的过程中,如果直接用arch的qemu会有很多错误,所以我选择自己编译一个。在选定好编译参数后,用不了多少时间。
- 下载qemu源码:
|
|
- 选择编译参数
我们只编译x86-64的qemu,其它架构全部舍弃:
configure参数脚本看这!
只要跑这个所只要直通要的东西,其他架构舍弃,若有需要,请自行添加
如果有spice参数依赖报错下载:
sudo pacman -S spice spice-gtk spice-protocol
- 编译qemu
|
|
这里的-j8
依你的CPU而定
如果你跑qemu-system-x86_64 --version
输出类似:
|
|
就证明qemu已经安装了!
启动GVT-g
- 添加内核参数
编辑
/etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT
添加intel_iommu=on i915.enable_guc=0
注意空格与引号!!! - 启动内核模块
编辑/etc/modules-load.d/kvm.conf
添加:
|
|
- 添加内核模块参数
编辑/etc/modprobe.d/gvt-g.conf
添加:
|
|
然后重启系统
- 查询显卡GUID
|
|
找到显卡的GUID,类似0000:00:02.0
以后出现的
0000:00:02.0
就是这个GUID请不一样的自行修改
- 查看mdev支持的类型
|
|
如果出现文件夹就说明启动成功了!
如果没有文件,那就再重试一遍吧看看是不是哪里漏了还是我写错了……
创建一个虚拟显卡
|
|
输出如:5e85791a-76ae-4e8d-a855-2ae2621dbfb3
记住输出的内容以后要用
创建设备,如用i915-GVTg_V5_4
:
|
|
注:
这里切换成su是因为用sudo我这里显示权限不够……
创建虚拟机
在virt-manager内创建一个win10虚拟机 硬盘选择virtio win的virtio驱动下载:
|
|
其保存在/var/lib/libvirt/images/virtio-win.iso
新建一个CD加入这个即可获得virtio硬盘驱动,否则win安装程序无法加载硬盘
引导选择uefi
显卡选择VGA
…………
添加虚拟显卡
安装完成后在xml下在<devices>
元素中添加:
|
|
显示设置
在<graphics type='spice'>
下添加:
|
|
把<domain type='kvm'>
修改为:
|
|
在上面添加:
|
|
添加 IVSHMEM 设备
|
|
32使用1080p分辨率
安装显卡驱动
到Intel官网找吧,到这一步相信你可以的!!!
安装完后应该能在任务管理器看到GPU0了
安装virtio driver驱动
之前挂了个virtio的CD,去里面下载就好了
安装spice tools
下载spicetools包
|
|
镜像保存在:/usr/share/spice-guest-tools/spice-guest-tools.iso
挂载后安装就好了
安装virtiofs
到https://github.com/winfsp/winfsp下载个msi安装程序,然后在win下安装
- 启动服务
打开cmd输入:
|
|
到服务那里去把这个服务设置成自动即可
然后virt-manager添加一个叫文件系统的硬件
就完成共享文件夹啦!
自启虚拟显卡
编辑 /etc/libvirt/hooks/qemu
|
|
加入如下内容,注意GUID和虚拟机名称(win10)
最终效果: