Loading

安卓逆向环境指北 rk3588 orangepi5b macM1 cuttlefish redroid

省流

安卓现在有若干种方案

买个pixel6 真机 随便刷 rom多,文档直接看google官方的即可 缺点 贵 刷砖了难救

windows的安卓模拟器 傻瓜式部署 但是 安卓版本低 特征多 跑不了arm的so

AVD windows or mac or linux 有多个安卓版本 但是基本没办法自定义内核 想自定义内核再替换 最高只能支持到5.10

cuttlefish (rk3588 orangepi5b) 随便自定义内核 一键启动! 坏了一键remake 方便快捷 但是不是很方便自定义rom arm版本的cvdhost文件build不出 只能从ci里面偷 而且不支持各种arm板子的gpu加速 所以很卡

redroid arm or amd64 docker一键部署 傻瓜式操作 对于rk3588 只有几个docker可以gpu加速,但是很流畅(原神双开约35帧),对于mac arm芯片 直接使用pd部署redroid官方镜像即可直接gpu加速,对于amd64的linux ,可以上arm的转义层转移到arm,但是稳定性堪忧 总的来说可以方便自定义rom,但是内核和linux内核共享,不是很方便做自定义内核

环境

win11 wsl2 ubuntu22.04

orangepi5b

macbook air M1

rk3588 orangepi5b

板子环境配置

orange5b没有pd协商,不想烧板子就老实掏官方的5v4a充电器,或者掏出99元小米充电宝 最高支持到5v3a)

请刷系统 ubuntu22.04 5.10.160-rockchip server完美支持

action中的ubuntu的mainline的 刷入不开机 建议是别搞了

只有官方网站上的几个镜像才可以直接刷入emmc中 其他的系统 如armbian什么的 都要先刷入sd卡再进入系统刷入emmc中

armbian的6.8内核的镜像,通通不识别wifi模块,但是hdmi是可以用的( 似乎挑显示器 我的没问题

armbian不会自动开启ssh,需要显示屏鼠标键盘,

所以不使用armbian)

默认启动顺序是先sd卡 再emmc,即使sd卡是空的,也不会自动启动到emmc

ubuntu22.04 5.10.160-rockchip server

刷机后会自动重启到系统,插根网线or插显示屏键盘or串口调试

如果你刷了desktop的话 必须要显示器鼠标键盘手动操作)

我使用ssh,ip通过路由器后台或

alt text

然后通过netplan来链接wifi

network:
    ethernets:
        zz-all-en:
            dhcp4: true
            match:
                name: en*
            optional: true
        zz-all-eth:
            dhcp4: true
            match:
                name: eth*
            optional: true
    wifis:                                                                      
        wlan0:
            dhcp4: true                                                                  
            access-points:                                                                                      
                void HatsuneMiku():
                    password: "12345678900"                
            optional: true    

    version: 2

使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh) 换个apt源

使用 bash <(curl -sSL https://linuxmirrors.cn/docker.sh)安装docker即可

redroid方案

redroid https://github.com/remote-android/redroid-doc

如果你用的和我同款设备和系统 那么pi的内核已经默认支持了redroid的相关配置

安装docker

然后根据官方库一键启动即可

开启gpu加速

安装相关gpu驱动

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

然后使用如下之一的docker

chisbread/rk3588-gaming:redroid-firefly

registry.cn-hangzhou.aliyuncs.com/whsyf/dobox:rk3588-202303017

docker run -itd --rm --privileged \
    -v /data:/data \
    -p 5555:5555 \
    chisbread/rk3588-gaming:redroid-firefly \
    androidboot.redroid_height=1600 \
    androidboot.redroid_width=2560 \
    androidboot.redroid_dpi=480 \
    androidboot.redroid_gpu_mode=host \
    --mount=type=bind,source=/dev/mali0,destination=/dev/mali0

注意 这个启动之后,不会默认链接adb,你应该手动使用 adb connect 127.0.0.1:5555来链接

然后 scrcpy 链接即可

https://github.com/Genymobile/scrcpy

链接

cuttlefish

参考 https://source.android.com/docs/devices/cuttlefish?hl=zh-cn

for dir in base frontend; do
  cd $dir
  debuild -i -us -uc -b -d
  cd ..
done

这一步里面

里面frontend里面调用go build,要去google拉镜像,这一步由于网络会必定报错

export http_proxy也不管用

frontend/src/goutil里面

alt text

换一个代理即可

镜像

请去 https://ci.android.com/ 里面各个分支去拉

找到对应分支后

alt text

带cf表示是cuttlefish的镜像

aosp-main-throttled 分支是arm cf 主线

aosp-android13-gsi 等分支的cf arm64也可以跑

但是gsi 14的镜像似乎有一些问题 叠加层没法载入,导致每一次启动cuttlefish镜像都是全新的 需要重新部署环境

13 和 主线镜像都是好的

但是推荐使用android13 内核较新(5.15

主线的镜像的话 使用的so版本较新,导出函数名称有一些变化 导致frida不能使用

拉一个 aosp_cf_arm64_phone-img-xxxx.zip

和 cvd-host_package.tar.gz

解压到同一目录

然后 使用

HOME=$PWD ./bin/launch_cvd --resume=true --daemon 来启动cvd

resume 为true的话 是继承以前的数据

会自动通过web服务暴露 也可以使用scrcpy来链接)

http://192.168.1.5:1080/

alt text

使用HOME=$PWD ./bin/stop_cvd来关闭cvd 但是你在安卓中的操作有几率没保存

如果你需要保存 请先使用adb reboot重启安卓再关cvd)

kernel

https://source.android.google.cn/docs/devices/cuttlefish/kernel-dev

build kernel

使用 tools/bazel run --lto=thin --config=local //common-modules/virtual-device:virtual_device_aarch64_dist

来build

build出的新内核

使用

-kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/Image \
-initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img

指定

然后注意 叠加层的数据不会在不同环境下保存,即你使用了两个kernel的话 数据是不通的(

build aosp

省流 build不出给cuttlefish用的aosp镜像 因为build不出cvd-host_package.tar.gz

aosp编译环境自己搜

嗯 如果你build了cf x86的 你应该在 /out/host/linux-x86/bin 找到cvd-host_package.tar.gz内的文件

如果你build了cf arm64的,你根本找不到cvd-host_package捏

尽管根据 https://sites.google.com/junsun.net/how-to-run-cuttlefish/home

文章所说 alt text

输出到了这里

或者根据mainline的配置文件 输出到这里
https://cs.android.com/android/platform/superproject/main/+/main:device/google/cuttlefish/host_package.mk?hl=zh-cn

alt text

但没有任何和cvd有关的文件被构建

实际上是有这个配置文件的 真的疑惑

alt text

经过搜索得知

alt text

没开源 绷不住了

但是也许可以拉ci中的host对应版本的源码来build 理论上是应该能使用的

mac m1 芯片

cuttlefish

需要支持嵌套虚拟化的linux环境 而mac上面所有的虚拟机或者docker方案都不支持嵌套虚拟化

但是Asahi Linux似乎是支持的 我的硬盘只有256g 没空间了 就没弄

redroid

直接使用pd 安装ubuntu22.04即可

使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh) 换个apt源

使用 bash <(curl -sSL https://linuxmirrors.cn/docker.sh)安装docker即可

然后sudo su

apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux

docker run -itd --rm --privileged \
    --pull always \
    -v /home/ltlly/Desktop/data:/data \
    -p 5555:5555 \
    redroid/redroid:13.0.0_64only-latest

docker镜像只能选择带64only的镜像 因为m芯片不支持arm32的了

启动之后丝滑流畅,直接支持gpu加速

想玩一些ebpf什么的 直接去改linux的内核即可

直接pd开个桥接 mac上adb connect 然后scrcpy链接即可

甚至我觉得应该安装ubuntu的server版本来省一点内存)

似乎 utm虚拟机也可以开gpu加速 显卡方案要选 mesa3d 但是我没搞了

posted @ 2024-02-13 18:13  FW_ltlly  阅读(2127)  评论(2编辑  收藏  举报