甲骨文 ARM Debian 12 搭建 Magisk + Redroid + scrcpy-web 完整教程
本教程将指导你在甲骨文云(OCI)的 ARM Debian 12 实例上,通过 Docker 运行带 Magisk 的 Android 11 容器(Redroid),并配合 scrcpy-web 实现浏览器远程控制。整个过程全程可在 SSH 终端完成,适合云手机、自动化测试等场景。
准备工作
- 甲骨文云 VM.Standard.A1.Flex 实例(ARM 架构,4核24G 免费额度最佳)
- 系统已安装 Debian 12(可通过下方 DD 脚本快速重装)
- 具备 SSH root 访问权限
一、快速安装 Debian 12(可选)
如果你的实例当前不是 Debian 12,可使用以下脚本一键重装:
# 下载重装脚本
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
# 或使用 wget
wget -O reinstall.sh https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
# 安装 Debian 12(默认 root 密码随机,会显示在屏幕上)
bash reinstall.sh debian12
# 推荐:同时指定 SSH 公钥和端口(避免密码登录)
bash reinstall.sh debian12 --ssh-key github:你的GitHub用户名 --ssh-port 2222重装后使用新的 SSH 端口和密钥重新连接。
二、安装 Docker 环境
如果你已有宝塔面板或其他环境,可跳过此步。否则执行:
# 安装 Docker(官方脚本)
curl -fsSL https://get.docker.com | bash
# 将当前用户加入 docker 组(避免每次 sudo)
usermod -aG docker $USER
newgrp docker验证安装:docker --version
三、准备 Magisk 集成文件
Redroid 官方镜像不带 Magisk,我们需要手动提取 Magisk 二进制并注入容器。
3.1 创建工作目录
mkdir -p /www/wwwroot/anzhuo/MagiskOnRedroid
cd /www/wwwroot/anzhuo/MagiskOnRedroid3.2 下载 Magisk Debug APK
cat > download_magisk.sh << 'EOF'
#!/bin/bash
find . -maxdepth 1 -iname "magisk*" -not -name "*.apk" -exec rm -rf {} \;
magisk_file="app-debug.apk"
if [ ! -f "$magisk_file" ]; then
wget "https://cdn.jsdelivr.net/gh/topjohnwu/magisk-files@1cea72840fbf690f9a95512d03721f6a710fe02e/app-debug.apk"
fi
unzip -j "$magisk_file" "lib/arm64-v8a/libmagisk64.so" -d magisk
unzip -j "$magisk_file" "lib/arm64-v8a/libbusybox.so" -d magisk
mv magisk/libmagisk64.so magisk/magisk
mv magisk/libbusybox.so magisk/busybox
EOF
chmod +x download_magisk.sh
./download_magisk.sh3.3 打包 Magisk 文件
tar --transform 's/.*\///g' -cf /www/wwwroot/anzhuo/magisk.tar \
--absolute-names $(find /www/wwwroot/anzhuo/MagiskOnRedroid | grep -E "magisk/|app-debug.apk$")3.4 创建 Android init 脚本(magisk.rc)
cat > /www/wwwroot/anzhuo/magisk.rc << 'EOF'
on early-init
export PATH /sbin:/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
chmod 0700 /magisk.tar
chown root root /magisk.tar
chmod 0700 /setup.sh
chown root root /setup.sh
exec root root -- /setup.sh
service magisk-d /sbin/magisk --daemon
user root
oneshot
on boot
start magisk-d
on post-fs-data
start logd
rm /dev/.magisk-unblock
start s1
wait /dev/.magisk-unblock 5
rm /dev/.magisk-unblock
service s1 /sbin/magisk --post-fs-data
user root
oneshot
service s2 /sbin/magisk --service
class late_start
user root
oneshot
on property:sys.boot_completed=1
exec /sbin/magisk --boot-complete
on property:init.svc.zygote=restarting
exec /sbin/magisk --zygote-restart
on property:init.svc.zygote=stopped
exec /sbin/magisk --zygote-restart
EOF
chmod 644 /www/wwwroot/anzhuo/magisk.rc
chown root:root /www/wwwroot/anzhuo/magisk.rc3.5 创建 setup 脚本(setup.sh)
cat > /www/wwwroot/anzhuo/setup.sh << 'EOF'
#!/system/bin/sh
tmpPushed=/magisk
rm -rf $tmpPushed
mkdir $tmpPushed
tar -xvf /magisk.tar --no-same-owner -C $tmpPushed
rm -f /magisk.tar
mkdir /sbin
chown root:root /sbin
chmod 0751 /sbin
cp $tmpPushed/magisk /sbin/
cp $tmpPushed/app-debug.apk /sbin/stub.apk
chmod 0755 /sbin/magisk /sbin/stub.apk
ln -sf /sbin/magisk /system/xbin/su
mkdir /product/bin
chmod 751 /product/bin
ln -sf /sbin/magisk /product/bin/su
mkdir -p /data/adb/magisk
chmod 700 /data/adb
mv $tmpPushed/busybox /data/adb/magisk/
chmod 755 /data/adb/magisk/busybox
chown -R root:root /data/adb/magisk
rm -rf $tmpPushed
EOF
chmod 700 /www/wwwroot/anzhuo/setup.sh
chown root:root /www/wwwroot/anzhuo/setup.sh四、加载 Android 内核模块
modprobe binder_linux devices=binder1,binder2,binder3,binder4,binder5,binder6
chmod 666 /dev/binder*五、运行带 Magisk 的 Redroid 容器
docker run -itd --privileged \
--name a11 \
-v /dev/binder1:/dev/binder \
-v /dev/binder2:/dev/hwbinder \
-v /dev/binder3:/dev/vndbinder \
-v /www/wwwroot/anzhuo/setup.sh:/setup.sh \
-v /www/wwwroot/anzhuo/magisk.tar:/magisk.tar \
-v /www/wwwroot/anzhuo/magisk.rc:/vendor/etc/init/magisk.rc \
-v /www/wwwroot/anzhuo/redroid:/data \
-p 5555:5555 \
redroid/redroid:11.0.0-latest \
ro.secure=0 \
androidboot.redroid_gpu_mode=guest \
androidboot.hardware=mt6891 \
ro.boot.hwc=GLOBAL \
ro.ril.oem.imei=861503068361145 \
ro.ril.oem.imei1=861503068361145 \
ro.ril.oem.imei2=861503068361148 \
ro.ril.miui.imei0=861503068361148 \
ro.product.manufacturer=Xiaomi \
ro.build.product=chopin六、运行 scrcpy-web 实现浏览器远程控制
docker run -d --privileged \
-v /www/wwwroot/anzhuo/scrcpy:/data \
--name scrcpy-web \
-p 8015:8000/tcp \
--link a11:myphone1 \
emptysuns/scrcpy-web:v0.1
docker exec scrcpy-web adb connect myphone1:5555访问 http://你的服务器公网IP:8015 即可。
七、验证 Magisk
docker exec a11 su -c "magisk -c"八、常见问题
· 容器退出:检查 ls -l /dev/binder 和 chmod 666 /dev/binder
· adb 连接失败:放行端口 5557(安全组 + ufw)
· Magisk 未生效:检查 /vendor/etc/init/magisk.rc 挂载是否正确
九、总结
本教程已在甲骨文 ARM Debian 12 上成功运行带 Magisk 的 Android 11 容器,并可通过浏览器远程控制。可用于云手机、自动化测试等场景。
评论 (0)