环境准备
在 Unraid 7.3.1 版本上实践,无需任何额外修改和安装插件,默认内核已集成相关依赖。
只需要在 Boot Parameters → Custom Parameters 的 Add Custom Parameter 添加 psi=1,然后保存重启即可激活所有环境。
root@Tower:~# cat /proc/pressure/*
some avg10=1.65 avg60=1.82 avg300=1.20 total=355489358
full avg10=0.00 avg60=0.00 avg300=0.00 total=0
some avg10=0.20 avg60=0.25 avg300=0.59 total=347818195
full avg10=0.18 avg60=0.19 avg300=0.50 total=328382926
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0
重要注意事项
Root 权限需求判断
根据你是否需要 Root 权限,选择不同的 Docker 存储驱动:
| 场景 | Docker 存储驱动 | 说明 |
|---|---|---|
| 不需要 Root | Btrfs(默认) |
可直接运行官方原版镜像 |
| 需要 Root(游戏辅助/修改器) | overlay2 |
必须修改,否则镜像无法正常工作 |
我玩的游戏大航海时代:传说需要使用辅助工具,所以 Root 是刚需。
测试过程与问题排查
- 自制 Magisk 镜像:点击 Magisk 应用后崩溃自动卸载(redroid-script回滚git checkout 881f7f00d6a86af4f8e4947af5d587a144a1806c 可解决)
- 官方原版镜像:能够正常启动 :white_check_mark:
解决方案
AI 说 Btrfs 存储驱动与 Redroid 镜像层的兼容性问题。将 Docker 存储驱动修改为 overlay2 后,能纠结奇奇怪怪的问题,那就先听他狡辩改成这个先
- 所有镜像正常启动
- 预制 Magisk 镜像正常启动
- Root 权限正常工作
镜像选择推荐
测试了大部分Android 11-13的镜像,个人感觉erstt/redroid系列镜像表现最优:
自用Android 11新版本转译层镜像,稳定性不保证s1oz/redroid
ARM 兼容层 (Houdini): 内置 Houdini version 14.0.0_z.GoogleGame_com1.2。
ARM 兼容层 (NDK): 内置 NDK Translation Version 0.2.3。
版本选择建议
| 版本 | 兼容性 | 资源占用 | 推荐场景 |
|---|---|---|---|
| Android 11 | :white_check_mark: 更好 | :arrow_down: 更低 | 挂机优选,scrcpy 兼容性更好 |
| Android 13 | :warning: 略差 | :arrow_up: 略高 | 部分新游戏可能需要 |
转译层选择
| 镜像 | 转译层 | 适用平台 | 说明 |
|---|---|---|---|
erstt/redroid:11.0.0_houdini_magisk_ChromeOS |
Houdini | Intel 优选 | Intel CPU 优化,兼容性更广 |
erstt/redroid:11.0.0_ndk_magisk_ChromeOS |
NDK Translation | AMD 优选 | 兼容性好,部分场景下性能更优 |
个人推荐:intel处理器优先使用
houdini版本,如遇到游戏兼容性问题再切换至ndk版本。
Unraid容器创建步骤
1. 基本配置
| 配置项 | 值 |
|---|---|
| 存储库 | erstt/redroid:11.0.0_houdini_magisk_ChromeOS |
| 额外参数 | -itd -m 16G --memory-swappiness=0 |
| 网络类型 | Bridge |
| 特权 | 开启 |
| 映射端口 | 5555:5555 |
| 持久化目录 | /mnt/system/appdata/redroid:/data |
| 设备 | /dev/dri 核显 |
| 设备 | /dev/uinput 可选,关联下方模块 |
androidboot.use_memfd=1 androidboot.redroid_enable_input_subsys=1 androidboot.redroid_net_ndns=2 androidboot.redroid_net_dns1=223.5.5.5 androidboot.redroid_net_dns2=119.29.29.29 androidboot.redroid_width=720 androidboot.redroid_height=1280 androidboot.redroid_dpi=180 androidboot.redroid_fps=30 androidboot.redroid_gpu_mode=host androidboot.selinux=permissive ro.enable.native.bridge.exec64=1 ro.dalvik.vm.native.bridge=libhoudini.so
3. 配置说明
| 参数 | 作用 | 备注 |
|---|---|---|
androidboot.use_memfd=1 |
使用 memfd 替代 ashmem | 高版本内核必需 |
androidboot.redroid_net_dns1=223.5.5.5 |
DNS 解析(阿里 DNS) | 可按需修改 |
androidboot.redroid_width/height/dpi |
分辨率 & DPI | 可按需调整 |
androidboot.redroid_fps=60 |
系统帧率上限 | 游戏内可另设 |
androidboot.redroid_gpu_mode=host |
硬件加速 | 需要设备映射 |
虚拟触摸屏(精灵/无障碍注入)模块
Unraid 实现开机自动加载
nano /boot/config/go
添加
modprobe /dev/uinput
虚拟触摸屏(精灵/无障碍注入)模块
https://github.com/s1oz/s1oz.github.io/blob/main/post-images/1790040434634806300_0.jpg
下载后改名为Redroid-Touch-Magisk-v1.0.zip
adb push Redroid-Touch-Magisk-v1.0.zip /data/local/tmp/
adb shell su -c "magisk --install-module /data/local/tmp/Redroid-Touch-Magisk-v1.0.zip"
客户端连接工具
安卓端
迭代了好几个版本,现在体验完胜其他方案。
Windows 端
| 工具 | 用途 | 链接 |
|---|---|---|
| scrcpy-gui | 连接及远程操作 | kil0bit-kb/scrcpy-gui |
| QtScrcpy | 可映射方向键,用键盘控制行走 | barry-ran/QtScrcpy |
输入法推荐
搜狗输入法 — 兼容性不错,在 Redroid 环境下表现稳定。
游戏按键映射示例
《大航海时代:传说》QtScrcpy 映射脚本
将以下内容另存为 JSON 文件,放入 QtScrcpy\keymap 目录,刷新脚本后点击应用即可。按 ~ 键(反引号)开启/关闭映射。
这样就能键盘控制角色移动了,上班摸鱼更方便了!
{
"switchKey": "Key_QuoteLeft",
"keyMapNodes": [
{
"comment": "虚拟摇杆 - WASD 控制移动",
"type": "KMT_STEER_WHEEL",
"centerPos": {
"x": 0.1498,
"y": 0.7489
},
"leftOffset": 0.11468,
"rightOffset": 0.11381,
"upOffset": 0.19237,
"downOffset": 0.20701,
"leftKey": "Key_A",
"rightKey": "Key_D",
"upKey": "Key_W",
"downKey": "Key_S",
"switchMap": false
},
{
"comment": "空格键 - 交互/确认",
"type": "KMT_CLICK",
"pos": {
"x": 0.9061,
"y": 0.8195
},
"key": "Key_Space",
"switchMap": false
}
],
"width": 1064.4285888671875,
"height": 622.857177734375
}
按键说明
| 按键 | 功能 |
|---|---|
W / A / S / D |
控制角色移动(虚拟摇杆) |
Space(空格) |
交互 / 确认点击 |
| ```(反引号) | 切换映射开关 | | | | | | | |
总结
- 环境准备:Unraid 7.3.1 默认内核已就绪,只需添加
psi=1重启 - 存储驱动:需要 Root → 使用
overlay2;不需要 Root →Btrfs即可 - 镜像选择:intel推荐
erstt/redroid:11.0.0_houdini_magisk_ChromeOS - 性能调优:根据硬件调整 CPU-GPU 参数,例如降低分辨率,降低刷新率等操作,intel核显用
mesa,独显删除该参数 - 客户端:安卓用 Screen-Remote,Windows 用 QtScrcpy/scrcpy-gui
常见问题
Q:为什么必须用 overlay2?
A:Btrfs 与 Redroid 多层镜像文件存在兼容性问题,导致 Magisk 镜像无法正常启动。
Q:Android 11 和 13 怎么选?
A:挂机优选 Android 11,兼容性更好,资源占用更低。scrcpy 连接也更稳定。
Q:Houdini 和 NDK 怎么选?
A:Intel CPU 优先 Houdini,如遇游戏兼容性问题再切换 NDK。AMD CPU 优先 NDK。