admin管理员组

文章数量:1130349

orangepi 5 plus 刷了2404的版本,内核也更新了。

GitHub - Joshua-Riek/ubuntu-rockchip: Ubuntu for Rockchip RK35XX Deviceshttps://github/Joshua-Riek/ubuntu-rockchip在这个上面安装redroid 时

redroid-modules/README.md at master · remote-android/redroid-modules · GitHubhttps://github/remote-android/redroid-modules/blob/master/README.md下面命令就不好用了,因为内核变了

# Ubuntu 20.04+ (kernel 5.0+)
sudo modprobe ashmem_linux
sudo modprobe binder_linux devices=binder,hwbinder,vndbinder

明白 ✅。你是在 RK3588 + Ubuntu 24.04 上想跑 reDroid (一个 Android in Docker 的实现)。

我帮你梳理一套专门针对 RK3588 / Ubuntu 24.04 的安装流程,顺便解释跟 ashmem/binder 的关系。


1. reDroid 的运行条件

reDroid 本质是一个 Android GSI 内核补丁 + 容器运行环境,依赖以下几点:

  • 内核必须支持 Android binder(binderfs/binder_linux)

  • ashmem 以前需要,但新版本可用 memfd 替代(你遇到 ashmem_linux not found 就是因为内核没带 ashmem,Ubuntu 24.04 默认也不用它了)

  • Docker 或 Podman 作为容器运行环境

  • GPU 驱动/硬件加速:RK3588 上要结合 Mali GPU 驱动 + drm/kms 才能硬解码显示


2. 检查内核支持

 容器场景通常只需要 binder(binderfs),ashmem 可由 memfd 兼容层替代。先检查 binder:

# 看配置(存在其一就行)
zcat /proc/config.gz 2>/dev/null | grep -E 'BINDER|BINDERFS' || \
grep -E 'BINDER|BINDERFS' /boot/config-$(uname -r)

# 看能否加载 binder 模块
sudo modprobe binder_linux 2>/dev/null || true

# 尝试挂载 binderfs
sudo mkdir -p /dev/binderfs
sudo mount -t binder none /dev/binderfs 2>/dev/null || sudo mount -t binder binder /dev/binderfs

# 验证
ls -l /dev/binderfs

运行下面的脚本,确认 binder 是否启用:

zcat /proc/config.gz | grep BINDER || grep BINDER /boot/config-$(uname -r)

ls /dev | grep binder
ls /dev/binderfs
  • 如果能看到 binder/binderfs → OK

  • ashmem 不出现没关系,reDroid >= 11 可以直接用 memfd,不会影响


3. 安装依赖

sudo apt update
sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

检查 Docker:

docker run hello-world

4. 拉取 reDroid 镜像

reDroid 官方提供 Android 各版本镜像(arm64 也支持):

# Android 13 示例
docker pull redroid/redroid:13.0.0-arm64

常见版本:12.0.0-arm64, 13.0.0-arm64, 14.0.0-arm64


5. 启动 reDroid 容器

运行命令示例:

sudo docker run -d --name redroid-gpu-rk \
  --privileged --restart unless-stopped \
  -v /dev/binderfs:/dev/binderfs \
  -v /opt/gpu-acc/android12-redroid-data:/data \
  --device /dev/dri:/dev/dri \
  --device /dev/mali0:/dev/mali0 \
  -p 55559:5555 \
  redroid/redroid:12.0.0_64only-latest \
  androidboot.redroid_gpu_mode=guest \
  androidboot.redroid_memfd=true \
  androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480

参数说明:

  • --privileged → 容器需要访问 binderfs

  • -v /dev/binderfs:/dev/binderfs → 挂载主机的 binderfs

  • androidboot.redroid_gpu_mode=guest → 使用 RK3588 的 GPU(host 需要 Mali 驱动)guest相当于没有用,另外使用guest时,连adb连不上,还在排查原因 

  • androidboot.redroid_memfd=true → 告诉 reDroid 用 memfd 替代 ashmem


6. 连接并使用

启动后,你可以通过 ADB 连接:

adb connect localhost:5555
adb shell

你应该能进入 Android 容器的 shell。


7. 显示/图形输出

在 SBC(RK3588)上,reDroid 默认是 headless(无界面)。常见做法有两种:

  • 用 scrcpy 或 VNC:在 reDroid 内跑 VNC server,然后用客户端连接

  • 直通 GPU:RK3588 内核+Docker 驱动允许时,可以跑 androidboot.redroid_gpu_mode=host,这样性能更好(但依赖 Mali GPU 驱动是否正确安装)


8. 总结

  • 不需要 ashmem → reDroid 用 memfd 替代

  • 只要保证 binderfs 可用 就能跑

  • GPU 加速在 RK3588 上可能要额外配置(比如装 Rockchip Mali 驱动、修改 Docker 参数) reDroid)?这样你只要运行脚本,就能直接起来一个 Android 容器。

 安装Docker + reDroid

以下是基于ubuntu2404的

sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

nano /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://docker.1ms.run"
    ]
}

另外要加上代理才可以下载镜像

 终端命令行临时代理(仅当前终端有效):
export http_proxy=http://10.10.10.215:7897
export https_proxy=http://10.10.10.215:7897

终端永久代理设置(适用于所

orangepi 5 plus 刷了2404的版本,内核也更新了。

GitHub - Joshua-Riek/ubuntu-rockchip: Ubuntu for Rockchip RK35XX Deviceshttps://github/Joshua-Riek/ubuntu-rockchip在这个上面安装redroid 时

redroid-modules/README.md at master · remote-android/redroid-modules · GitHubhttps://github/remote-android/redroid-modules/blob/master/README.md下面命令就不好用了,因为内核变了

# Ubuntu 20.04+ (kernel 5.0+)
sudo modprobe ashmem_linux
sudo modprobe binder_linux devices=binder,hwbinder,vndbinder

明白 ✅。你是在 RK3588 + Ubuntu 24.04 上想跑 reDroid (一个 Android in Docker 的实现)。

我帮你梳理一套专门针对 RK3588 / Ubuntu 24.04 的安装流程,顺便解释跟 ashmem/binder 的关系。


1. reDroid 的运行条件

reDroid 本质是一个 Android GSI 内核补丁 + 容器运行环境,依赖以下几点:

  • 内核必须支持 Android binder(binderfs/binder_linux)

  • ashmem 以前需要,但新版本可用 memfd 替代(你遇到 ashmem_linux not found 就是因为内核没带 ashmem,Ubuntu 24.04 默认也不用它了)

  • Docker 或 Podman 作为容器运行环境

  • GPU 驱动/硬件加速:RK3588 上要结合 Mali GPU 驱动 + drm/kms 才能硬解码显示


2. 检查内核支持

 容器场景通常只需要 binder(binderfs),ashmem 可由 memfd 兼容层替代。先检查 binder:

# 看配置(存在其一就行)
zcat /proc/config.gz 2>/dev/null | grep -E 'BINDER|BINDERFS' || \
grep -E 'BINDER|BINDERFS' /boot/config-$(uname -r)

# 看能否加载 binder 模块
sudo modprobe binder_linux 2>/dev/null || true

# 尝试挂载 binderfs
sudo mkdir -p /dev/binderfs
sudo mount -t binder none /dev/binderfs 2>/dev/null || sudo mount -t binder binder /dev/binderfs

# 验证
ls -l /dev/binderfs

运行下面的脚本,确认 binder 是否启用:

zcat /proc/config.gz | grep BINDER || grep BINDER /boot/config-$(uname -r)

ls /dev | grep binder
ls /dev/binderfs
  • 如果能看到 binder/binderfs → OK

  • ashmem 不出现没关系,reDroid >= 11 可以直接用 memfd,不会影响


3. 安装依赖

sudo apt update
sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

检查 Docker:

docker run hello-world

4. 拉取 reDroid 镜像

reDroid 官方提供 Android 各版本镜像(arm64 也支持):

# Android 13 示例
docker pull redroid/redroid:13.0.0-arm64

常见版本:12.0.0-arm64, 13.0.0-arm64, 14.0.0-arm64


5. 启动 reDroid 容器

运行命令示例:

sudo docker run -d --name redroid-gpu-rk \
  --privileged --restart unless-stopped \
  -v /dev/binderfs:/dev/binderfs \
  -v /opt/gpu-acc/android12-redroid-data:/data \
  --device /dev/dri:/dev/dri \
  --device /dev/mali0:/dev/mali0 \
  -p 55559:5555 \
  redroid/redroid:12.0.0_64only-latest \
  androidboot.redroid_gpu_mode=guest \
  androidboot.redroid_memfd=true \
  androidboot.redroid_width=1080 androidboot.redroid_height=1920 androidboot.redroid_dpi=480

参数说明:

  • --privileged → 容器需要访问 binderfs

  • -v /dev/binderfs:/dev/binderfs → 挂载主机的 binderfs

  • androidboot.redroid_gpu_mode=guest → 使用 RK3588 的 GPU(host 需要 Mali 驱动)guest相当于没有用,另外使用guest时,连adb连不上,还在排查原因 

  • androidboot.redroid_memfd=true → 告诉 reDroid 用 memfd 替代 ashmem


6. 连接并使用

启动后,你可以通过 ADB 连接:

adb connect localhost:5555
adb shell

你应该能进入 Android 容器的 shell。


7. 显示/图形输出

在 SBC(RK3588)上,reDroid 默认是 headless(无界面)。常见做法有两种:

  • 用 scrcpy 或 VNC:在 reDroid 内跑 VNC server,然后用客户端连接

  • 直通 GPU:RK3588 内核+Docker 驱动允许时,可以跑 androidboot.redroid_gpu_mode=host,这样性能更好(但依赖 Mali GPU 驱动是否正确安装)


8. 总结

  • 不需要 ashmem → reDroid 用 memfd 替代

  • 只要保证 binderfs 可用 就能跑

  • GPU 加速在 RK3588 上可能要额外配置(比如装 Rockchip Mali 驱动、修改 Docker 参数) reDroid)?这样你只要运行脚本,就能直接起来一个 Android 容器。

 安装Docker + reDroid

以下是基于ubuntu2404的

sudo apt install -y docker.io uidmap curl unzip
sudo systemctl enable docker
sudo systemctl start docker

nano /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://docker.1ms.run"
    ]
}

另外要加上代理才可以下载镜像

 终端命令行临时代理(仅当前终端有效):
export http_proxy=http://10.10.10.215:7897
export https_proxy=http://10.10.10.215:7897

终端永久代理设置(适用于所

本文标签: Orangepiredroid