在ArchLinux上,我安装了Bottles用于管理Wine,并尝试运行绝区零。然而,它在启动时就会崩溃,从后台可以看出是一次Page Fault。
zzz-error.txt (22.4 KB)
一次偶然断网启动Bottles让我发现zzz能够在无网络连接情况下启动,进一步研究发现在Bottles断网或者配置了无法联通的网络代理情况下均能够正常启动。推测可能是由于反作弊的组成部分中包含一个依赖网络验证的部分,而Linux下无法通过这个验证。
现在有两条路子可走,一是看看有没有别的方法来解决(在别的帖子里也看到zzz断网启动的问题,换lts内核?);其次就是从网络这块patch一下,启动zzz时临时断开wine的网络连接?或是hosts里把某个特定域名屏蔽掉?
请各位大佬不吝赐教。
系统配置信息:
OS: Arch Linux x86_64
Host: 82RC (Legion Y7000P IAH7)
Kernel: Linux 6.17.5-zen1-1-zen
Display (CSO1509): 2560x1440 @ 1.25x in 16", 165 Hz [Built-in]
DE: KDE Plasma 6.5.1
WM: KWin (Wayland)
CPU: 12th Gen Intel(R) Core(TM) i5-12500H (16) @ 4.50 GHz
GPU 1: NVIDIA GeForce RTX 3050 Ti Mobile [Discrete]
GPU 2: Intel Iris Xe Graphics @ 1.30 GHz [Integrated]
Memory: 7.25 GiB / 31.07 GiB (23%)
Swap: 27.08 MiB / 8.00 GiB (0%)
依云
(lilydjwg)
2
我以为大家对米家游戏断网启动应该很熟练了……
我是用systemd-run运行之前用nft给对应的cgroup断网,几秒后再删掉规则。
patch wine的方案也是有的。
依云
(lilydjwg)
3
脚本核心代码:
sudo -v
systemd-run --user --scope --slice=genshin --unit=genshin -p MemoryMax=15G -p MemorySwapMax=0 env DXVK_FRAME_RATE=60 mangohud wine genshin.bat &
sudo sh <<SH
nft -f - <<NFT
table inet genshin {
chain output {
type filter hook output priority 0;
socket cgroupv2 level 4 "user.slice/user-1000.slice/user@1000.service/genshin.slice" counter drop
}
}
NFT
sleep 5
nft destroy table inet genshin
SH
wait
1 Like
要屏蔽的域名应该是globaldp-prod-cn01.juequling.com,一段时间没玩了不知道有没有换。可以通过检查dns请求来确定要屏蔽的域名。
最简单的办法还是断网。像楼上依云大佬那样可以将断网的范围控制在wine进程,不影响主机上的其它程序。如果使用bottles这样的启动器,不方便隔离单个进程的,还可以使用支持屏蔽特定网站的代理服务器。我自己用python简单写了一个:https://github.com/chenxiex/filter-proxy
1 Like
还是这个域名,屏蔽了就能跑了
btw,其他米家游戏在wine上跑有啥特殊要求吗?特别是原和铁,据说要打补丁?
原神要断网启动、铁要补丁,但是补丁名字是没法公开说的