Skip to content

飞牛安装Docker版安卓手机redroid:虚拟手机+GPU硬件加速 ​

📺 本图文教程由视频整理而成,对应的参考视频:飞牛安装docker版安卓手机redroid~虚拟手机+GPU硬件加速。如需查看更详细、更具体的操作演示,可观看原视频。

场景:redroid 是一个用 Docker 运行的安卓手机容器。它不模拟完整硬件,而是直接使用 Linux 内核,因此效率比普通模拟器/虚拟机更高。本文以飞牛系统为例,演示从驱动准备、测试运行到 GPU 硬件加速的完整流程。

提示:本教程配套的操作文档,可在好用斋官网 → 网盘分享(提取码 604)中下载。

第一步:下载配套文档 ​

  1. 打开好用斋官网,点击「网盘分享」,输入提取码 604。
  2. 下载「操作步骤」文档并打开,本文命令均以此为准。

第二步:了解 redroid 官网与关键参数 ​

redroid 官网(GitHub):https://github.com/remote-android/redroid-doc,用着不错记得给作者点个 Star。

官网是最详细、最权威的资料,遇到问题先来这里查:

  1. 镜像列表:不同安卓版本对应不同镜像。本例使用安卓 12(12.0.0_64only-latest),作者推荐该版本、资源占用较少;设备性能强也可选更高版本(如安卓 14)。
  2. 关键参数:androidboot.redroid_width/height/dpi 控制分辨率与画面精细度;androidboot.redroid_gpu_mode 控制显卡直通,取值 auto(自动检测)、host(使用 GPU 加速)、guest(不加速,默认)。
  3. 前置条件:必须安装 BinderLinux(binder_linux)驱动。

第三步:准备 BinderLinux 驱动 ​

  1. 飞牛系统一般已内置该驱动,无需单独安装。
  2. 如果 docker 容器安装后无法运行,再到「应用中心 → 驱动 → binder_linux」单独安装即可。

注意

自行安装底层驱动存在风险。只有自己能折腾、能重装的系统(如 Ubuntu、Debian、飞牛)才建议尝试;绿联、铁威马这类成品NAS的官方系统不建议自行安装,一旦冲突可能导致设备返厂。

第四步:运行测试命令(无硬件加速) ​

务必先跑通测试命令,确认没问题后再考虑硬件加速版本;直接跑硬件加速版本可能导致 NAS 无响应。

打开飞牛终端,先输入 sudo -i 并回车,再输入管理员密码(输入时不显示),回车后右键粘贴下面的命令并回车:

bash
docker run -itd --rm --privileged \
    --name redroid \
    -v /vol1/1000/tools/redroid/data:/data \
    -p 5555:5555 \
    redroid/redroid:12.0.0_64only-latest \
    androidboot.redroid_width=1080 \
    androidboot.redroid_height=1920 \
    androidboot.redroid_dpi=480

命令各参数含义:

参数说明
docker run -d容器后台运行(-it 表示可交互,一般用不到)
--rm容器停止后自动删除,测试阶段必须保留
--privileged赋予特权,为后续硬件加速准备
--name redroid容器名称
-v /vol1/1000/tools/redroid/data:/data数据目录映射(冒号后不可改,冒号前可自定义)
-p 5555:5555端口映射(冒号后不可改,冒号前可自定义)
redroid/redroid:12.0.0_64only-latest镜像名称,换安卓版本时改这里
androidboot.redroid_width/height/dpi分辨率与 DPI,三项均可省略

关于 --rm

加上 --rm 后,容器一旦停止就会被自动删除,重启后不会残留。这正是测试阶段需要它的原因:万一导致 NAS 无响应,关机重启后容器自动清除,不会随系统再次启动。等到稳定运行一段时间后,才考虑去掉该参数。

第五步:确认容器正常运行 ​

命令执行后会自动拉取镜像并创建容器。打开「Docker → 容器」,即可看到 redroid 正在运行。

在 Docker 管理器的容器列表中确认 redroid 容器正常运行

第六步:用 QtScrcpy 连接安卓容器 ​

用 QtScrcpy 连接这个安卓容器(Windows、Linux、Mac 版本界面一致,本例用 Mac 版演示)。

  1. 在左下角「无线」处输入 NAS 的 IP 与端口(如 192.168.31.225 + 5555)。端口以你实际映射的为准。
  2. 点击「无线连接」,上方会出现 Phone-IP:端口 的设备项,双击即进入安卓桌面。
  3. 常用操作:鼠标左键即点击,右键即返回;右侧按钮为息屏、音量、截图等控制项。

不了解 QtScrcpy 的用法可观看参考视频:电脑操作安卓手机屏幕镜像 QtScrcpy。

第七步:观察无加速时的表现 ​

此时 Android 容器已能正常使用,但操作会明显卡顿,因为它全靠 CPU 硬算:打开「资源管理」可以看到,无论怎么操作,CPU 占用几乎拉满(可达 90% 以上),而 GPU 始终没有任何反应。

第八步:运行硬件加速命令 ​

硬件加速命令与测试命令整体非常接近,只在末尾新增三行参数:

bash
docker run -itd --rm --privileged \
    --name redroid \
    -p 5555:5555 \
    -v /vol1/1000/tools/redroid/data:/data \
    --device /dev/dri:/dev/dri \
    redroid/redroid:12.0.0_64only-latest \
    androidboot.redroid_gpu_mode=host \
    androidboot.use_memfd=1

其中最关键的两行:

  1. --device /dev/dri:/dev/dri:把宿主机的显卡驱动映射进容器(熟悉 Emby/Jellyfin 硬件加速的会认得这个参数),容器才能读取显卡驱动。
  2. androidboot.redroid_gpu_mode=host:指定使用 GPU 加速。默认 guest 不加速,auto 为自动检测(一般仍是 guest),host 才会真正调用 GPU。

androidboot.use_memfd=1 是共享内存相关的可选参数,用于提升稳定性与兼容性,建议一并加上。

注意

如果运行硬件加速命令后 NAS 直接失联(网页与 SSH 都无法连接),必须手动按下设备关机键关机,再重启 NAS 才能恢复。这种情况说明该硬件加速参数不适合你的设备,请直接使用上面的无加速命令。

第九步:确认 GPU 加速效果 ​

重新用 QtScrcpy 连接容器,再次打开「资源管理」并操作安卓页面(如滚动网页),可以看到 GPU 占用升到 80% 左右,而 CPU 明显下降(从 90% 降到 40%~50%)。这是因为页面渲染改由 GPU 承担,整体操作也随之流畅许多,接近本地操作体验。

开启 GPU 硬件加速后,资源管理中 GPU 占用明显上升、CPU 占用下降

第十步:基本操作——设置中文与安装 APK ​

设置语言:按住鼠标左键上滑 → 「设置(Setting)」→ 滑到底部「系统(System)」→「语言」→ 添加语言 → 选「简体中文」并选「中国」→ 把中文拖到第一位,界面即变为中文。

安装程序:直接把 .apk 文件拖拽进容器窗口,出现绿色加号后松手即可自动安装,随后上滑即可看到新装的图标并打开使用。

第十一步:稳定后去掉 --rm 参数(可选) ​

先用 --rm 跑几天,确认 NAS 稳定不出问题后,把容器停掉(此时容器会自动删除),去掉 --rm 并加上 --restart=unless-stopped,重新执行:

bash
docker run -itd --privileged \
    --restart=unless-stopped \
    --name redroid \
    -p 5555:5555 \
    -v /vol1/1000/tools/redroid/data:/data \
    --device /dev/dri:/dev/dri \
    redroid/redroid:12.0.0_64only-latest \
    androidboot.redroid_gpu_mode=host \
    androidboot.use_memfd=1

这样容器停止后不再被删除,之后点「启动」即可恢复,与普通容器用法一致。

总结 ​

  1. redroid 直接使用 Linux 内核运行安卓容器,效率高于普通模拟器/虚拟机,但前置条件是安装 binder_linux 驱动(飞牛已内置)。
  2. 命令分两步走:先跑通测试命令(--rm、无加速、端口 5555),确认无误再跑硬件加速命令。
  3. 硬件加速的核心是两行参数:--device /dev/dri:/dev/dri 与 androidboot.redroid_gpu_mode=host,androidboot.use_memfd=1 用于增强稳定性。
  4. --rm 是测试期的“安全绳”,容器停止即删除、重启不残留;确认稳定后再去掉,并改用 --restart=unless-stopped。
  5. 硬件加速命令若导致 NAS 失联,手动关机重启后改用无加速命令即可。

参考视频 ​

好用斋官网 ​