Redroid部署
本篇为 x86_64 架构的 Linux 系统部署 Redroid 的教程。 使用天钡 R7-8745HS 处理器的迷你主机测试通过。
安装 Debian 13
这只是我自己常用的代码片段
apt update && NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt full-upgrade -y -o Dpkg::Options::="--force-confold" -o Dpkg::Options::="--force-confdef" \
&& apt update && apt install -y git git-lfs nano screen screenfetch htop btop net-tools zip unzip fastfetch aria2 jq lsof python3-pip \
&& apt autoremove -y \
&& python3 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
编译并安装内核模块
# 查看内核版本
uname -r # 6.12.41+deb13-amd64
# 安装必要的源码和头文件
apt install linux-source-6.12
apt install linux-headers-$(uname -r)
# 解压源码并进入目录
cd /usr/src
tar -xvf linux-source-6.12.tar.xz
cd linux-source-6.12/
# 配置编译环境,复制当前内核的配置和符号表
cp /usr/src/linux-headers-$(uname -r)/Module.symvers .
cp /boot/config-`uname -r` .config
nano .config
在 .config 文件添加以下内容,也可以找到这部分并修改
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y # 主要是这一行
CONFIG_ANDROID_BINDER_DEVICES="binder"
准备并编译内核模块
make modules_prepare
应该会输出一段,直接回车即可。
Compile also drivers which will not load (COMPILE_TEST) [N/y/?] n
Compile the kernel with warnings as errors (WERROR) [N/y/?] n
Local version - append to kernel release (LOCALVERSION) []
Automatically append version information to the version string (LOCALVERSION_AUTO) [N/y/?] n
Build ID Salt (BUILD_SALT) [] (NEW)
# 编译模块
make M=drivers/android modules
# 将编译好的 .ko 文件复制到系统模块目录,更新依赖
cp drivers/android/binder_linux.ko /lib/modules/$(uname -r)/kernel/drivers/android/
depmod -a
加载模块
modprobe binder_linux
# 查看设备
ls /dev/bin* # /dev/binder
lsmod | grep -e binder_linux # 不需要安装 ashmem_linux
生成 Binder 设备
mkdir -p /dev/binderfs
mount -t binder binder /dev/binderfs
信息
每次启动均需要执行:
modprobe binder_linux
mkdir -p /dev/binderfs
mount -t binder binder /dev/binderfs
可以添加为服务:
/etc/systemd/system/mount-binderfs.service
[Unit]
Description=Mount binderfs after loading binder_linux
After=systemd-modules-load.service
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mount_binderfs.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
/usr/local/bin/mount_binderfs.sh
#!/bin/bash
modprobe binder_linux
mkdir -p /dev/binderfs
mount -t binder binder /dev/binderfs
安装显卡驱动
添加 non-free-firmware 源。
nano /etc/apt/sources.list.d/debian.sources
添加如下这段,主要是复制 debian 源,在 Components 的 main 后加一个 non-free-firmware 。
Types: deb deb-src
URIs: mirror+file:///etc/apt/mirrors/debian.list
Suites: trixie trixie-updates trixie-backports
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
安装驱动,并重启。
apt install firmware-amd-graphics libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers
reboot
查看设备
ls /dev/dri
cat /sys/kernel/debug/dri/*/name
安装 btop GPU 支持(可选)
apt install rocm-smi
安装 Redroid
警告
你需要有 Docker !
安装 ADB
apt install adb # from android-sdk-platform-tools
services:
redroid-arknights:
image: erstt/redroid:12.0.0_houdini_MUMU
container_name: redroid-arknights
privileged: true
ports:
- "5630:5555"
volumes:
- redroid-arknights-data:/data
command: [
"androidboot.redroid_width=1080",
"androidboot.redroid_height=1920",
"androidboot.redroid_dpi=320",
"androidboot.redroid_gpu_mode=host",
"androidboot.redroid_fps=60",
"ro.enable.native.bridge.exec64=1",
"ro.dalvik.vm.native.bridge=libhoudini.so",
"ro.product.brand=samsung",
"ro.product.manufacturer=samsung",
"ro.product.model=SM-G998B",
"ro.product.name=p3sxxx",
"ro.product.device=p3s",
"ro.product.locale=zh-CN",
"ro.build.display.id=p3sxxx-user 13 TQ2B.230505.005.A1 jenkins08312143 release-keys",
"ro.build.fingerprint=samsung/p3sxxx/p3s:13/TQ2B.230505.005.A1/jenkins08312143:user/release-keys",
#"ro.build.characteristics=",
"ro.serialno=c9bg5bec5b98",
#"ro.hardware=exynos2100",
"ro.secure=1",
"ro.build.type=user",
"ro.build.id=TQ2B.230505.005.A1",
"ro.board.platform=universal2100_r",
]
stdin_open: true
tty: false
restart: unless-stopped
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
volumes:
redroid-arknights-data:
driver: local