Lazy loaded image
细谈Android设备的DSU与GSI
00 分钟
2024-4-17
2025-1-22
类型
状态
日期
链接
描述
图标
密码
分类
标签
notion image
DSU的初衷是为了让开发者可以便捷运行不同系统版本的GSI,以便执行应用测试等开发工作。该文章面向有一定刷机基础知识和动脑能力的普通用户,对其两大用途:无损体验新的Rom无损提取boot镜像——进行尽量高效的指导并总结经验。如有错误敬请评论指出。

基础知识

💡
使用Treble信息来查看自己的设备对DSU的支持情况
DSU:动态系统更新,Android 10中引入的一项系统功能,可以在设备上将GSI作为来宾操作系统启动,使设备能在不破坏原系统和数据的情况下运行任意Android镜像
GSI:通用系统映像,一个zip或gz格式的Rom包,像Windows可以安装在任何x86平台一样,GSI可在各种Android设备上安装并运行,因此它通常是原生或类原生系统,且指纹,通话等依赖厂商驱动的功能会无法工作。GSI既能被DSU侧载,也能直接刷入设备

注意事项

⚠️
安装第三方GSI必须解锁BL,否则可能会因验证不通过而导致系统损坏
  • DSU侧载前要确保设备剩余空间≥40%,否则可能会报错提示安装失败。
  • GSI启动时会使用原系统的boot镜像,这意味着如果原系统已安装Magisk,那么GSI中直接安装面具App即可使用Su权限
  • DSU并非绝对安全,如果GSI在你的设备运行时有明显异常,立即重启并将其舍弃
  • 做好备份,没有人会为你的数据损失负责

📝GSI安装指南

原生方案-快速尝鲜

想要在大多数设备上快速体验原生Android?只需3步即可完成

需求:

支持DSU的设备,无需解锁BL
设备剩余空间≥40%

步骤:

  1. 激活开发者选项, 从中找到DSU Loader
  1. 选择一个GSI即可自动下载并安装,带GMS即为含Gapps
  1. 安装完毕后顶部出现通知,点击重启进入安装好的GSI

进阶方案-任意刷入

💡
原生方案只提供了原生的GSI, 想要体验类原生或其它Rom就要使用第三方软件
📖
刷入三方GSI必须解锁BL。如果你不解锁,可能会损坏设备,也可能出现其它特殊情况

需求:

解锁了BL且支持DSU的设备。
设备剩余空间≥40%
自行准备的GSI包
Root或adb权限

步骤:

  1. 下载安装DSU Sideload并打开,选择想要刷入的GSI包
  1. 授予Root或根据提示执行adb命令以得到dsu的权限
  1. 安装完毕后顶部出现通知,点击重启进入安装好的GSI

非必要不使用-直接覆盖

在某些奇怪的旧版本安卓设备上,原厂自带的系统可能限制功能或相当拉跨。为了能更好的利用硬件设备,或仅仅为了提取boot镜像,可以选择直接刷入GSI覆盖原系统

需求:

解锁了BL的设备,无需支持DSU
自行准备的GSI包

步骤:

  1. 设备重启至fastboot,电脑解压GSI包,提取出img文件
  1. 将所有img文件刷入到对应分区
  1. 清除data分区数据
  1. 重启设备

🔍GSI获取指南

命名规则

如果手机采用AB/VAB分区,应选择A/B类型GSI;如果手机支持System as Root(SAR),也应选择A/B类型GSI。两者均不支持则应选择A_only类型GSI——这通常是Android12前的机型
VNDK:供应商原生开发套件,支持的设备可以使用比原始系统版本更高的任何GSI系统版本,否则只能使用与原系统版本相同的GSI。
VNDK lite:有些设备VNDK为lite模式(与A/B和A_only无关),此时应该选择名称中含vndklite字样的GSI。
如果GSI包有silm,vanilla,bvN这种命名,就是不含GAPPS的包,基础套件来自AOSP。其它的命名如bgN,GMS即为含Gapps,包的体积更大。根据你使用GSI的目的选择。
CPU架构:通常分ARM32位与ARM64位,依据情况选择

一些下载站点

⭐DSU尝鲜Rom:自制简易GSI包

众多的类原生Rom可谓琳琅满目,如果你希望尽快找到自己喜欢的Rom而又不希望反复清数据刷机,使用DSU无疑是最好的解决方法。
有时你能找到的类原生官方的GSI包,有时还是需要下载适合自己设备的刷机包后手动做一个GSI包:只需从中拿出下面五个img镜像,压缩为zip或gz即可。注意不要使用Windows自带压缩,压缩等级应为仅存储。打包完就是一个简单的GSI包。
  • vendor.img
  • system_ext.img
  • system.img
  • product.img
  • odm.img
通常下载的刷机包有三种,获取上述img文件方法为:
  1. 普通Fastboot包——解压即得
  1. 含super.img的Fastboot包——使用MIO-KITCHEN-SOURCE解包super镜像到img文件取得
  1. Rec刷机包——使用payload_dumper解包payload.bin文件取得
不建议将MIUI等设备厂商高度定制的ROM按此方法制作,即使是准备安装在对应ROM的设备上。因为这可能导致系统出现严重问题,如卡logo或输入法、启动器、系统界面均无法正常运行。亦有可能设备每次重启都会回到GSI(未受粘滞模式影响且禁用粘滞模式命令不起作用),这种情况下重刷初始系统也不会解决问题,唯一的解决方案就是清除设备全部数据。

🛠️DSU提取Boot镜像以Root设备

📖
在找不到刷机包又不方便深刷的设备上。该法是提取boot获取Root的最佳方案。这是承重墙大佬的演示:1000元的山寨机系统太难用?没关系,我会出手!
userdebug版本的GSI仅需在开发者选项开启开关即支持命令行Root权限,GSI又使用原系统的boot镜像启动,这使得DSU侧载GSI提取原系统boot变得可行。
条件:已解BL锁且支持DSU的设备
首先使用adb连接设备并进入shell,取得su权限
eMMC闪存设备提取boot
UFS闪存设备提取boot
设备采取A_only分区,需要提取boot
设备采取AB或VAB分区,需要提取boot_a与boot_b
设备出厂安卓13以上,需要提取init_boot_a与init_boot_b
 
提取完成后使用Magisk修补所有提取出的镜像,再使用命令把所有镜像刷回对应分区。重启进入主系统后,直接安装Magisk即可使用。

⌨️DSU相关命令

启用粘滞模式,每次重启默认进入GSI系统
禁用粘滞模式,GSI启动失败系统会自动执行
检查设备是否支持Treble
检查设备是否支持跨版本安装。需在输出的[vendor]部分中查找namespace.default.isolated
使用adb启用DSU,文件名system_raw.gz,用户空间设置为8GB

尾注

即使问题几率再低,也务必做好备份
没有人会为你的数据损失或机子变砖负责
 
上一篇
我的设备
下一篇
记首次装机

评论
Loading...