orangePi-5Plus 容器化安卓搭建

orangePi-5Plus 容器化安卓搭建

期期 9 2024-02-18

简介

在RK3588上实现 docker 容器化安卓,支持gpu加速、masgisk、GMS。

image-dvor.png

image-cxmj.png

安装系统

1、安装系统:准备sd卡 balenaEnther ,去官网下载jammy server镜像

2、插入sd到板子上,进入系统 ssh连接 root orangepi,设置系统信息后 拷贝镜像到sd卡目录home中

3、 查看emmc挂载节点

ls /dev/mmcblk*boot0 | cut -c1-12

4、清楚emmc

sudo dd bs=4M if=/dev/zero of=/dev/mmcblk0 count=1000 status=progress
sudo sync

6、cd 进入所在镜像的文件夹 使用dd命令写入emmc:

cd /home
sudo dd bs=4M if=ubuntu.img of=/dev/mmcblk0 status=progress

7、 结束

sudo sync

初始化系统

1、安装gpu驱动相关 (jammy)

sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt update
sudo apt upgrade
sudo apt install mali-g610-firmware rockchip-multimedia-config

2、安装面板(1Panel)

default:

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

安装Redroid

准备magisk环境

mkdir ~/MagiskOnRedroid
cd ~/MagiskOnRedroid
find -maxdepth 1 -iname "magisk*" -not -name "*.apk" -exec rm -r {} \;
magisk_file="app-debug.apk"
# download Magisk 9b61bdfc(25201) debug as you did i guess
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 -v magisk/libmagisk64.so magisk/magisk
mv -v magisk/libbusybox.so magisk/busybo
 tar --transform 's/.*\///g' -cf ~/magisk.tar --absolute-names $( find ~/MagiskOnRedroid | grep -E "magisk/|app-debug.apk$" )
cat <<\EOF > ~/remove.rc
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
sudo chmod 644 ~/remove.rc
sudo chown root:root ~/remove.rc
cat <<\EOF > ~/setup.sh
#!/system/bin/sh

# rm /system/fonts/NotoColorEmoji.ttf
tmpPushed=/magisk
rm -rf $tmpPushed
mkdir $tmpPushed
tar -xvf /magisk.tar --no-same-owner -C $tmpPushed
umount /magisk.tar ; rm -v /magisk.tar
mkdir /sbin
chown root:root /sbin
# chmod 0700 /sbin
chmod 0751 /sbin
cp $tmpPushed/magisk /sbin/
cp $tmpPushed/app-debug.apk /sbin/stub.apk
find /sbin -type f -exec chmod 0755 {} \;
find /sbin -type f -exec chown root:root {} \;
# add /sbin
# /sbin/
# ├── magisk
# └── stub.apk


ln -f -s /sbin/magisk /system/xbin/su
mkdir /product/bin
chmod 751 /product/bin
ln -f -s /sbin/magisk /product/bin/su
# add su (override `/system/xbin/su`)
# /product/bin/
# └── su -> /sbin/magisk

mkdir -p /data/adb/magisk
chmod 700 /data/adb
mv $tmpPushed/busybox /data/adb/magisk/
chmod -R 755 /data/adb/magisk
chmod -R root:root /data/adb/magisk
# /data/adb/
# ├── magisk
# │   └── busybox

# rm -rf $tmpPushed
EOF
sudo chmod 700 ~/setup.sh
sudo chown root:root ~/setup.sh

安装redroid

phone1

docker run -d --name phone1 --privileged  --restart=always -v ~/redroid/phone1:/data --device /dev/mali0 -p 5556:5555 -v ~/remove.rc:/vendor/etc/init/remove.rc -v ~/setup.sh:/setup.sh -v ~/magisk.tar:/magisk.tar iamqiqi/phone androidboot.use_memfd=1 androidboot.redroid_gpu_mode=mali

phone2

docker run -d --name phone2 --privileged  --restart=always -v ~/redroid/phone2:/data --device /dev/mali0 -p 5557:5555 -v ~/remove.rc:/vendor/etc/init/remove.rc -v ~/setup.sh:/setup.sh -v ~/magisk.tar:/magisk.tar iamqiqi/phone androidboot.use_memfd=1 androidboot.redroid_gpu_mode=mali

新版本一键安装(内置magisk+GMS)

docker run -d --name phone --privileged  --restart=always -v ~/redroid/phone:/data --device /dev/mali0 -p 5556:5555 iamqiqi/phone