文章目录
- 背景
- 编译
- 安装
- 运行
- 限制
- 使用场景
- 总结
- 参考
背景
Looking Glass 是一款开源应用程序,可以直接使用显卡直通的windows虚拟机。
常见环境是Linux host+windows guest,基本部署结构图:
编译
git clone --recursive https://github.com/gnif/LookingGlass.git
编译client
mkdir client/build
cd client/build
cmake ../
make
编译后生成looking-glass-client可执行程序。
编译host
mkdir host/build
cd host/build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw64.cmake ..
make
编译后生成looking-glass-host.exe可执行程序。
安装
host安装:
- 安装IVSHMEM设备驱动
- 安装Looking Glass服务或者直接拷贝looking-glass-host.exe可执行程序到桌面
更方便的方法是从https://looking-glass.io/downloads下载最新的安装包安装,后面如果自己有重新编译的话直接替换looking-glass-host.exe即可。
client安装:
无需安装,直接执行looking-glass-client程序即可启动
运行
采用virt-manager工具
- 安装 qemu-system、virt-manager
- virt-manager新建Windows 10桌面
- 透传显卡,可以参考:linux下vfio显卡透传
- 添加ivshmem
<shmem name='looking-glass'><model type='ivshmem-plain'/><size unit='M'>32</size>
</shmem>
- 取消memballoon
<memballoon model="none"/>
- 添加一个virtio的keyboard
<input type='keyboard' bus='virtio'/>
- 选择透传的pci设备,主要是显卡
其他需要注意的地方:需要手动设置下cpu的拓扑,默认是4socket,Windows只能认2socket
- 启动win10虚拟机
- linux端运行client程序连接window使用
最终的使用效果:
在1080P的分辨率下播放视频,windows虚拟机cpu占用率很低(有物理gpu的加持)。
限制
笔者使用的物理显卡是NVIDIA GTX1060,测试下来发现windows虚拟机必须要连接屏幕或者hdmi欺骗器后looking-glass才能显示画面。
使用场景
本地是linux主机,有核显和独显,依赖windows上吃GPU性能的软件(比如steam游戏),利用looking-glass方案就不需要来回切换系统了,直接Linux上启动windows虚拟机,用客户端连上使用。
总结
looking-glass主要利用了以下几点来实现本地使用windows虚拟机:
- qemu ivshmem设备实现host和guest之间的内存共享
- 透传显卡带来的guest图形能力提升
- spice协议带来的键鼠声音同步
当然,它本质上就是一个桌面屏幕共享工具,网上的方案也很多。
它的优点:
- 开源,可定制
- 性能不错
它的缺点:
- 只能本地部署
参考
https://looking-glass.io/docs/B5.0.1/install/
https://blog.csdn.net/level_code/article/details/123271626
Ubuntu+KVM显卡透传