免责声明
本人不推荐破解学生机,请让设备认真完成它的使命!本文仅用于技术研究,请在毕业后进行操作!
介绍
经过我与 Claude sonnet 4.5 和 GPT 5.6 Terra 的不懈奋斗下,成功通过修补 recovery,在 recovery的 init 实现通过switch_root 启动真实 system 分区以外的 Android 系统,并做到数据隔离。
大致启动路径:
Bootloader -> Recovery -> Init Wrapper -> Shell 脚本
此时,Shell脚本(init_wrapper.sh)将:
- 挂载 /proc、/sys、/dev、/data。
- 将 /data/dualboot/data.img 和 /data/dualboot/system.img 安装到 loop 设备,挂载 system.img(loop)到 /mnt/dualboo。
- 挂载 /vendor,备份并修改 /vendor/etc/fstab,将 /data 的设备改为 data.img 对应的 loop 设备,注入 SELinux 规则(展讯的 SELinux 是真的咬人啊)
- 卸载 /vendor,卸载(lazy)/data,卸载/proc、/sys 和 /dev。
- 执行 switch_root 到 /mnt/dualboot,之后的一切交给新 rootfs 里的 init。
我们已成功在 iClass C8Pro 上双启动 GSI 系统。
这里感谢我们团队的负责人祖机枪同志多次帮助我测试,提供了宝贵的 TTL 日志,这个项目得以完成少不了他的帮助。
如何使用
项目已经开源,如上。理论上适用于一部分 SAR 的 SPRD 设备,是否支持 AB 分区未知,是否支持原 Android 9 之外的设备也未知,我的测试环境是 iClass C8Pro:
- Soc:Spreadtrum UD710
- OS:Android 9
- 分区布局:NonAB SAR
根据 README 中的说明,修补 recovery,放置 system.img 到指定位置后重启到 recovery 即可食用。
附上照片:


发表回复