在上一篇文章中我们为 Windows 11 虚拟机配置了 GPU 直通,你大概会想立马就在虚拟机上玩一些游戏来测试一下性能吧。但遗憾的是,如果你要玩的游戏带有 Easy Anti-Cheat (EAC) 组件(比如 Apex Legends、Hell Let Loose、VRChat 等),那么你将会得到游戏无法在虚拟机中启动的警告。难道折腾了这么久还是不能愉快的玩游戏么!(摔)
经过大量的搜索和尝试,千夏也是终于可以在虚拟机下通过 EAC 检测了,为了避免大家在 EAC 上浪费过多时间,在这里和大家分享一下方法。
防杠声明:本文仅做技术交流使用,请勿用于其它用途。我就只是想活用硬件玩个游戏而已。如果你是为了一些不正当用途来参考本文章的话那我要送你一句:开挂全家必暴毙!!!
免责声明:本文章只是让你能在虚拟机中通过 EAC 检测,由于 EAC 和 Windows 版本更新等因素本文介绍的方法随时可能会不起作用,并且我无法保证通过这种方法游玩游戏时你的账号不会被封禁(尽管你没有使用非法程序,但由于 EAC 会记录并分析各种信息,所以指不定它觉得哪里有问题呢),所有风险请自行承担
最终测试时间:2024年7月19日
主板:ASRock B550 Pro4
BIOS:P3.40
CPU:AMD Ryzen 7 5700X
虚拟化平台:Proxmox Virtual Environment 8.2.4
虚拟机系统:Windows 11 Pro 23H2
想要在虚拟机中通过 EAC 检测,主要思路无非就是隐藏虚拟化和将物理机信息传递进去
所以我们可以先在物理机上的 WIndows 11 里看看设备信息都有哪些(可选)
使用快捷键 Win+R 打开运行,输入 msinfo32 来查看系统信息,可以截个图或者保存成文本文件方便后续参考,然后去 Windows 网络设置里记录下自己网卡的 MAC 地址,后面要用到
创建 Windows 11 虚拟机
回到 Proxmox 控制台,来为 Windows 11 创建一个新的虚拟机,Type 选择 Microsoft Windows,不要勾选 Add additional drive for VirtIO drivers 选项,我们不需要加载 VirtIO 驱动
点击下一步后我们来配置系统选项,机器类型 q35、BIOS OVMF,添加 EFI Storage 和 TPM Storage,并将 SCSI Controller 更改为 LSI 53C895A,确保不要选中 Qemu Agent
接下来配置磁盘,将 Bus/Device 设置为 SATA,其余选项可以根据自己需要更改
CPU 部分可以按照自己的需求给虚拟机分配和核心数,Type 记得选择 host 即可
内存也可以按照自己的需求设置,如果你要玩游戏则可以给多一些,然后取消勾选 Advanced 菜单中的 Ballooning Device
网络配置 Model 选择 Intel E1000,MAC address 暂时保持 auto 即可
最终效果大概是这样的,不要勾选 Start after created
接下来我们去刚刚创建好的 Windows 虚拟机的 Hardware 页面,找到 Network Device 并编辑它的 MAC address,还记得我们最初记录下的物理网卡的 MAC 地址嘛,现在派上用场了
假设你的物理网卡 MAC 地址为 1C:83:41:C9:1D:DA,而虚拟机网卡的 MAC 地址为 BC:24:11:69:F3:A9
那我们只需要更改虚拟机网卡的前 24 字节,也就是蓝色的部分更改为物理网卡的前 24 字节即可,红色部分保持不变,在此处我们应该更改为 1C:83:41:69:F3:A9 并保存
修改 SMBIOS 信息
接下来使用 dmidecode -t 0 命令查询 BIOS 信息,大概会看到这样的信息,我们需要其中的 Vendor: American Megatrends International 和 Version: P3.40 以及 Release Date: 01/18/2024 这三条信息
BIOS Information
Vendor: American Megatrends International, LLC.
Version: P3.40
Release Date: 01/18/2024
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
然后使用 dmidecode dmidecode -t 1 命令 System 信息,大概是这样的,把这些信息都记录下来
System Information
Manufacturer: To Be Filled By O.E.M.
Product Name: B550 Pro4
Version: To Be Filled By O.E.M.
Serial Number: To Be Filled By O.E.M.
UUID: xxxxxxxx-xxxx-xxxx-xxxx-000000000000
Wake-up Type: Power Switch
SKU Number: To Be Filled By O.E.M.
Family: To Be Filled By O.E.M.
在 proxmox 的 shell 中编辑 /etc/pve/qemu-server/<your_vmid>.conf
替换 <your_vmid>为你虚拟机的 id,比如这里就是 100
在最上面添加我们刚刚通过 dmidecode -t 0 找到的信息
args: -cpu host,-hypervisor,kvm=off -smbios type=0,vendor="American Megatrends International",version="P3.40",date="01/18/2024"
然后将下面几行中的 cpu: host 更改为 cpu: host,hidden=1 并保存
完成后看起来应该是这样的
args: -cpu host,-hypervisor,kvm=off -smbios type=0,vendor="American Megatrends International",version="P3.40",date="01/18/2024"
...
cpu: host,hidden=1
...
让我们回到刚刚创建好的 Windows 11 虚拟机的 Options 页面
选择 SMBIOS settings (type 1) 并编辑它为刚刚用 dmidecode dmidecode -t 1 找到的信息,To Be Filled By O.E.M. 的信息可以就这样填上去或者查看主板盒子上的信息(比如我就找到 Serial 填了进去),UUID 显示 Not Settable 的话可以填 00000000-0000-0000-0000-000000000000
如果你还没有配置 GPU 直通,则可以按照我上一篇 打造 All in One 主机之为 Proxmox VE 配置 GPU 直通 中的教程进行配置
启动并验证虚拟机
保存后启动虚拟机,正常安装 Windows 即可,完成后可以打开任务管理器,检查 CPU 统计中是否有 Virtual machine: Yes 字样,如果没有那么恭喜你已经很接近成功了
接下来运行 msinfo32,看看信息是否和你输入进去的一致(也可以对比物理机的 msinfo32 看看是不是差不多的),并检查有无任何与 QEMU 或者 VM 有关的信息,如果没有,那么恭喜你成功了!接下来便可以运行游戏进行测试啦!
通过 Parsec 游玩虚拟机中的 APEX(好吧其实我自己并不玩 APEX,只是 APEX 是我测试虚拟机性能时首先遇到的不给运行的游戏)
参考资料
Windows 11 VM for gaming setup guide – Proxmox forum
Anti-Cheat KVM Settings – Proxmox forum
EAC “Cannot run under Virtual Machine” – reddit
如果你觉得这篇文章有帮助,欢迎使用下面的链接在 OFUSE 上给千夏打赏