问题描述

环境

PVE Debian 虚拟机,conda 虚拟环境,python 3.8

现象

运行 SadTalker 等一些特定 python 项目时会出现错误

Illegal instruction

没有任何其他的输出

解决方法

CPU 问题,需要更新虚拟机的 CPU 设置

我原先设置的 CPU 型号是 PVE 默认的 kvm64,修改为和宿主机相同的 host 类型即可

默认的 kvm64 是类似奔腾 4 的处理器,为了兼容性削减了很多功能性的 CPU flag

https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines#_cpu_type

如果清楚 python 项目需要哪些 CPU 功能,可以直接在虚拟机设置中开启对应的 CPU flag

设置成 host 比较方便(无脑),开启所有宿主机 CPU 支持的功能

PVE 下 Windows 虚拟机直通 Tesla P40 显卡,通过远程桌面游玩赛博朋克 2077

仅供娱乐(一种整活 PoC),不推荐日常长期使用

环境

硬件

  • 技嘉 Z370M DS3H
  • i5-8400
  • Tesla P40
  • 32GB 2400 DDR4

系统

  • 宿主机:Proxmox VE 7.3
  • 虚拟机:Windows 10 Pro 22H2

步骤

以下步骤默认 Windows 虚拟机已经直通 P40 显卡、安装好驱动

关于直通可以查看:Proxmox VE 显卡(Tesla P40)直通

配置显卡输出

配置方法和 Tesla P40 Windows 下配置核显输出 一样,都是通过改注册表开启 Grid 驱动功能

不同的是上述链接是输出到核显,这里需要输出到微软远程显示适配器(Microsoft Remote Display Adapter):

编辑 ControlSet001 下的注册表时,进入远程显示适配器的目录(可以通过查看 DriverDesc 的值来确定目录位置),然后在该目录下新建 DWORD 32 位条目,命名为 EnableMsHybrid,值为 2

重启系统使配置生效

测试游戏运行

开启远程桌面,建议分辨率设置为 1080p,更高的分辨率会消耗更多的 CPU 资源,导致帧率不理想

Steam 启动参数添加 --launcher-skip 跳过 RED 启动器

配置无误的话此时已经可以运行游戏了,但是鼠标不会固定在远程桌面内,导致体验非常痛苦

安装 RdpGamepad

鼠标的问题可以通过使用手柄解决,但是 RDP 本身不支持远程连接手柄

RdpGamepad 可以将本地手柄映射到远程机器,但是仅支持 Xbox 手柄

如官方页面(https://github.com/microsoft/RdpGamepad)所示,安装过程很简单

首先下载 RdpGamepad 安装包(https://github.com/microsoft/RdpGamepad/releases)和 ViGEmBus 驱动( https://github.com/ViGEm/ViGEmBus/releases

在远程机器上安装 ViGEmBus 驱动后安装 RdpGamepadReceiver

然后在本地机器上安装 RdpGamepadClient

不需要进行其他设置,直接开启新的远程桌面会话,在本地连接手柄,该手柄就可以连接到远程机器

效果

查看视频

https://www.bilibili.com/video/BV1vT411r748/