在Linux上运行Waydroid模拟器和NVIDIA运行游戏

2026/4/14772 字

需求是在Arch Linux(Wayland/KDE)上用安卓模拟器运行プロセカ等游戏,并尝试使用独显。此外还尝试了使用独显跑其他Electron程序。

Waydroid配置

首先安装waydroid和相关的便利脚本:

paru -S waydroid waydroid-script-git

后者是一个可以方便地给waydroid安装各种常用组件的脚本,也可以直接在github上找到它自己配置运行,从aur安装就是省事一些。

waydroid的相关常用指令如下:

waydroid init # 第一次启动时的初始化
waydroid init -s GAPPS # 初始化并自动安装GApps,如果是为了运行游戏推荐安装
waydroid      # 直接启动

waydroid session start/stop/restart # 管理waydroid会话,基本上等同于模拟器的开关机
sudo waydroid container start/stop/restart # 管理容器,在waydroid会话起不来、修改waydroid配置等之后重启
sudo systemctl start/stop/restart waydroid-container.service # 管理服务,上述两个都起不来的时候重启

waydroid upgrade -o # 更新配置文件之后应用

waydroid shell # 进客户机的shell

如果是从aur安装的waydroid-script,可以使用sudo waydroid-extras 启动,安装相关扩展。第一步直接选安卓13就行。

  • libndk / libhoudini 用于在x86设备上运行arm应用的转译层,几乎必安。后者似乎对游戏的兼容性比较好,反正对プロセカ前者跑不起来,只能用后者。
  • magisk 无痛root
  • gapps 第一步没有安GApps的可以在这里安

如果你使用dae或者其他透明代理工具,务必在其配置文件(例如/etc/dae/dae.config)中绑定waydroid的网口,否则安卓设备会无法联网。例如:

global {
  lan_interface: waydroid0 # 绑定waydroid网口
  wan_interface: auto # 使用 "auto" 自动侦测 WAN 接口。
}

接下来修改waydroid的配置文件 /var/lib/waydroid/waydroid.cfg,在[properties] 段落添加内容。

先添加这两行模拟WIFI和触摸事件。如果需要对特定包启用而不是全部包,将*替换为包名,允许*的通配。

persist.waydroid.fake_touch = *
persist.waydroid.fake_wifi = *

然后修改渲染设置,如果希望使用集成显卡(我是Intel):

persist.waydroid.gpu_mode = vd
ro.hardware.vulkan = lvp  # 此处似乎可选lvp和swiftshader,需要根据waydroid设备中的驱动决定。我使用了lvp

如果希望使用nvidia显卡:

ro.hardware.gralloc = gbm
ro.hardware.egl = mesa
ro.hardware.vulkan = nvidia
ro.hardware.opengl = mesa

一般来说 nvidia-drm 应该已经启用了。最后重载Waydroid配置、重启容器应该就可以了。

waydroid upgrade -o
sudo systemctl restart waydroid-container.service
waydroid session start

使用N卡运行Electron应用

electron的渲染压力对集成显卡来说还是有点高了,好在对electron应用来说启用N卡很简单:

DRI_PRIME=1 MESA_LOADER_DRIVER_OVERRIDE=nvidia electron . --enable-features=VaapiVideoDecoder --enable-unsafe-swiftshader --disable-gpu-sandbox --enable-gpu-rasterization

设置两个环境变量,传点参数就好了。总之这个也是LLM给的,能用就行。