gistfile1.txt
· 11 KiB · Text
Raw
先说结论:
**真正的报错点不是“odm 大小算不出来”,而是系统根本没能在 `/data/gsi/dsu/dsu/aui/` 下面创建 `odm_gsi.img` 这个文件,所以后面自然就“无法确定 odm 最大大小”,整次 DSU 安装被 `ERROR_IO` 直接终止了。**
---
## 1. 日志里关键几行在说什么
我用你贴的日志串一下流程:
1. **你的设备环境**
* Device: `PKG110` → 一加 Ace 5 国行。([百度知道][1])
* 出厂系统:ColorOS 15,底层是 Android 15,后续更新到你现在的 Android 16(SDK 36)。([中关村在线][2])
* DSU 工具:`DSU-Sideloader 2.03-8`,模式 `ROOT`。
2. **用户设置**
```text
userSelectedUserdata=10737418240 // 10GB userdata
allocPercentage=0.4
hasAvailableStorage=false
maximumAllowedForAllocation=23
checkUnavaiableStorage=false
```
* 你手动指定 DSU userdata 为 **10GB**。
* App 算出来理论最多可分配 23GB,但 `hasAvailableStorage=false`,
你又把 “检查可用空间” 关掉了,所以依然强行开始安装。
3. **创建 userdata 分区是成功的**
```text
I/DynamicSystemService: startInstallation -> /data/gsi/dsu/dsu
...
partition name: userdata, progress: 0/10737418240 → 10737418240/10737418240
I/gsid: [libfs_mgr] Created logical partition userdata_gsi on device /dev/block/dm-0
```
* 这说明 **userdata_gsi 这 10GB 已经成功创建**,并挂在了 dm-0 上,没有因为空间问题失败。
tmemory 那两行基本可以忽略:
```text
I/gsid: close tmemory to flush writes to userdata.
E/gsid: [libfs_mgr] findTmemoryPath opendir error: No such file or directory
```
这是 Android 15/16 新加的 tmemory(虚拟 A/B / 更新相关的一个组件)在你这台机子上找不到挂载点的警告,类似报错在别的 Android 15 设备用 DSU-Sideloader 时也能看到。([GitHub][3])
4. **真正失败的地方:odm 分区**
```text
E/gsid : Failed to create file at: /data/gsi/dsu/dsu/aui/odm_gsi.img: No such file or directory
E/gsid : Could not determine maximum file size for /data/gsi/dsu/dsu/aui/odm_gsi.img
E/gsid : Could not create userdata image
I/DynamicSystemService: Failed to create partition: aui/odm
E/gsid : image incomplete; expected 1667260416 bytes, waiting for 1667260416 bytes
E/gsid : Installation failed: install_dir=/data/gsi/dsu/dsu/, dsu_slot=dsu, partition_name=aui/odm
```
逐条解释:
* **`Failed to create file … odm_gsi.img: No such file or directory`**
→ 这里不是“空间不足”,而是 **连空文件都建不出来**(父目录不存在 / 或路径逻辑出问题),内核返回的就是 `ENOENT`(No such file or directory)。
* **`Could not determine maximum file size`**
gsid 通常会先创建一个文件,再根据底层设备/fiemap 估算能给这个逻辑分区分配多大空间。
但现在连文件都没有,当然就 “无法确定最大大小”。
* **`expected 1667260416 bytes`**
说明元数据里对 `aui/odm` 的预期大小是 **1667260416 字节 ≈ 1.55 GB**(1667260416 ÷ 1024³ ≈ 1.55)。
* 后面那串 “Could not create userdata image / Failed to create partition: aui/odm” 是连锁反应:
odm 分区没建起来,整个 DSU session 就算失败,只能清理。
**所以:核心问题是 `aui/odm` 这个逻辑分区创建阶段,系统在 `/data/gsi/dsu/dsu/aui` 下根本没能创建 `odm_gsi.img` 文件,而不是你手动给 odm 设错了多大。**
---
## 2. 为什么会这样(可能的原因)
结合你设备是一加 Ace 5 + 最新 Android 版本、工具是 DSU-Sideloader 现有版本,再对比 GitHub 上其他 Android 15 设备的报错,可以大致推测几个方向:([GitHub][3])
### 2.1 DSU 包本身的问题(aui.zip)
你选的是:
```text
DsuPackage(uri=.../aui.zip, type=DSU_PACKAGE)
```
DSU_PACKAGE 类型的 zip 里一般有:
* `gsi.json` / `dsu.json` 等元数据
* 一个或多个分区镜像:`system.img`, `product.img`, `vendor.img`, `odm.img` 等
* 有时还有 `super_empty.img` + lp_metadata 描述动态分区结构
从日志来看:
* 元数据里确实声明了一个 `aui/odm`,大小约 1.55GB。
* 但在创建对应的 `odm_gsi.img` 文件时就直接挂了。
这比较像下面几种情况之一:
1. **包里定义了 `odm` 分区,但镜像文件路径/名字不符合当前 Android 16 的 gsid 期望**
(例如以前版本用的命名或目录结构,在你这套新系统上解析错了)。
2. **包是为 Pixel 或别的厂适配的 DSU 包**,
里面的动态分区布局、组名(这里是 `aui`)和你手机的 super 分区布局有冲突,
一加这边改过 DSU 实现,导致 gsid 在创建 `aui/odm` 目录/文件时翻车。
### 2.2 Android 15/16 + 厂商魔改的 DSU 实现 Bug
* 从 DSU-Sideloader 的 issue 看,**Android 15 开始**,很多机型在 DSU 安装时都会出现
tmemory 相关报错、`/data/gsi/dsu/dsu/...` 路径异常、lp_metadata 异常等,
这都是 **系统自带的 gsid** 弄出来的,而不是 DSU-Sideloader 代码本身。([GitHub][3])
* 你的日志和这些很像:
先是 tmemory 找不到目录,再到对某个分区的 image 文件路径处理失败。
在这种情况下,本质上就是:
> **一加/ColorOS 在 Android 16 上对 Dynamic System Updates 做了改动,
> DSU-Sideloader 现版本 + 你这个 aui.zip 的 DSU 包组合,触发了 gsid 的一个兼容性 bug。**
### 2.3 空间 / 文件系统碎片的问题可能性较小
* 一些 DSU 失败日志会出现 `too many extents`、`No space left on device` 之类的字样,那确实是 F2FS 碎片化或空间不足。([GitHub][4])
* **你的日志没有这些,只是 `No such file or directory`,而且 10GB 的 userdata 已经创建成功**。
所以这次失败 **更像是路径/元数据逻辑问题,而不是单纯空间问题**。
---
## 3. 你可以尝试的几个方向
下面的步骤我按“从最简单到最折腾”的顺序排一下,你可以挑自己愿意折腾的程度来做:
---
### 3.1 先排除最基本的:清理旧 DSU、关掉“跳过存储检查”、减小 userdata
1. 在系统「开发者选项 → 动态系统更新」里看看有没有残留的 DSU,会的话先删掉/退出。
2. 在 DSU-Sideloader 里:
* 把“禁用存储检查/忽略可用空间”**关掉**,让它自己判断一次。
* 把 userdata 先改成 **2GB 或 4GB** 试一次,看能不能走得更远一点。
这一步主要是排除“空间、分配策略”带来的额外干扰;
虽然日志不像是空间问题,但先简化环境总是有好处的。
---
### 3.2 换成「单系统镜像」GSI 试一遍
如果你只是想体验 GSI,而不是非得用这个 aui.zip:
1. 换一个常规的 GSI(`.img` 或 `.img.gz/.xz`),选 DSU-Sideloader 里的
**Single System Image / 单系统镜像** 模式,而不是 DSU_PACKAGE。
2. 一般只会创建 `system_gsi` + `userdata_gsi` 两个逻辑分区,**不会单独搞一个 odm 分区**,
就能绕过这次卡在 `aui/odm` 上的问题。
一加 Ace 系列是支持 GSI 的,社区里也有人用过 GSI,只是日用体验会有各种 bug。([gledos.science][5])
如果单镜像 GSI 能成功,而 aui.zip 一直死在 odm,那基本可以确定问题就出在 **这个 DSU 包/多分区方案本身**。
---
### 3.3 检查 aui.zip 的结构(偏进阶)
如果你本来就是从论坛 / 群里拿到的一个「专门给某机型的 DSU 包」,又确实想搞清楚它的问题,大概可以:
1. 在电脑或手机上解压 `aui.zip`,看根目录下有什么:
* 是否有 `gsi.json` / `dsu.json` / `lp_metadata` 之类文件;
* 是否有 `odm.img` / `odm_a.img` 之类的镜像。
2. 如果 **元数据里写着有 odm 分区,但 zip 里压根没有对应 odm 镜像**,
那就说明包本身有问题(或者只适配过别的系统版本)。
再往下就比较折腾了,比如:
* 编辑 `gsi.json` / `dsu.json` 之类的配置,把 `odm` 从分区列表里删掉;
* 或者干脆从这个包里只抽出 `system.img`,自己当单系统镜像来刷。
这些操作一旦搞错,轻则 DSU 起不来,重则刷机 / 回原厂 ROM,
所以如果你不熟悉动态分区和 super 布局,不太建议硬上。
---
### 3.4 从 adb 自查一下路径(需要 root / adb)
如果你愿意自己再观察细节,可以在 **失败之后**:
```bash
adb shell
su # 如果你用的是 KernelSU / Magisk 等
ls -R /data/gsi
```
你想看的重点是:
* 有没有 `/data/gsi/dsu/dsu/aui/` 这个目录;
* 里面有没有别的 `*_gsi.img`,只有 `odm_gsi.img` 不存在,还是整个 `aui` 目录都没建出来。
如果连 `aui` 目录都没有,那几乎可以确定:
> 是 **系统 gsid 在处理 DSU_PACKAGE + 动态分区组(aui)时自身出了 bug**,
> 而不是简单地“包里少了个文件”。
---
### 3.5 认栽:当前版本的 DSU-Sideloader + Android 16 兼容性问题
结合:
* 其它 Android 15 设备在 DSU-Sideloader 仓库有类似 tmemory + 动态分区相关报错;([GitHub][3])
* 你这台是一加 Ace 5,ColorOS 定制也很重;([中关村在线][2])
* 报错发生在系统自带的 gsid,DSU-Sideloader 本身只是把包丢进去调用系统接口;
如果:
* 换成单系统镜像 GSI 没问题;
* 或者你试过几种不同 DSU 包都在某个分区上类似地崩;
那基本可以认为:
> **这是 Android 16 + 一加自家 gsid 实现,对“带多分区(特别是 odm)DSU 包”的兼容性问题,
> 普通设置层面已经没法绕过去了。**
这时候更现实的路线就剩两条:
1. **继续玩 GSI** → 优先用「单系统镜像」模式(只 system + userdata)。
2. **真要类原生 / 别的系统** → 走解 BL + fastboot / recovery 刷机那条路,不走 DSU。
---
## 4. 小结一句人话版
* 你的 DSU 不是因为 “空间不够” 挂的,而是 **在创建 aui/odm 分区时,系统连 `odm_gsi.img` 这个文件都没创建成功**,
所以后面的错误才会说 “无法确定 odm 大小”。
* 在一加 Ace 5 这种新机 + Android 16 上,这更多是 **DSU 包结构 + 一加改过的 gsid 的兼容性问题**,
跟你点错哪个按钮关系不大。
* 如果只是想试 GSI,**先用“单系统镜像”模式**,避开带 odm 的 DSU 包,会简单可靠很多。
如果非得用 aui 这种多分区 DSU 包,那就要深入拆包、改配置,或者等工具专门适配这一代系统了。
如果你愿意贴一下 aui.zip 里解压出来的大致目录结构(不含私密信息),我可以帮你一起判断一下这个包本身有没有明显的问题。
[1]: https://zhidao.baidu.com/question/1959645631137783868.html?utm_source=chatgpt.com "pkg110是什么型号手机 - 百度知道"
[2]: https://detail.zol.com.cn/2118/2117416/param.shtml?utm_source=chatgpt.com "一加Ace 5 (16GB/512GB)参数 - 中关村在线"
[3]: https://github.com/VegaBobo/DSU-Sideloader/issues/244?utm_source=chatgpt.com "Unknown error · Issue #244 · VegaBobo/DSU-Sideloader - GitHub"
[4]: https://github.com/VegaBobo/DSU-Sideloader/issues/166?utm_source=chatgpt.com "Installation failing constantly · Issue #166 · VegaBobo/DSU-Sideloader"
[5]: https://gledos.science/oneplus-ace-5-pro-superuser.html "一加 Ace 5 Pro 的 root 及其自定义玩法 - gledos的博客"
| 1 | 先说结论: |
| 2 | **真正的报错点不是“odm 大小算不出来”,而是系统根本没能在 `/data/gsi/dsu/dsu/aui/` 下面创建 `odm_gsi.img` 这个文件,所以后面自然就“无法确定 odm 最大大小”,整次 DSU 安装被 `ERROR_IO` 直接终止了。** |
| 3 | |
| 4 | --- |
| 5 | |
| 6 | ## 1. 日志里关键几行在说什么 |
| 7 | |
| 8 | 我用你贴的日志串一下流程: |
| 9 | |
| 10 | 1. **你的设备环境** |
| 11 | |
| 12 | * Device: `PKG110` → 一加 Ace 5 国行。([百度知道][1]) |
| 13 | * 出厂系统:ColorOS 15,底层是 Android 15,后续更新到你现在的 Android 16(SDK 36)。([中关村在线][2]) |
| 14 | * DSU 工具:`DSU-Sideloader 2.03-8`,模式 `ROOT`。 |
| 15 | |
| 16 | 2. **用户设置** |
| 17 | |
| 18 | ```text |
| 19 | userSelectedUserdata=10737418240 // 10GB userdata |
| 20 | allocPercentage=0.4 |
| 21 | hasAvailableStorage=false |
| 22 | maximumAllowedForAllocation=23 |
| 23 | checkUnavaiableStorage=false |
| 24 | ``` |
| 25 | |
| 26 | * 你手动指定 DSU userdata 为 **10GB**。 |
| 27 | * App 算出来理论最多可分配 23GB,但 `hasAvailableStorage=false`, |
| 28 | 你又把 “检查可用空间” 关掉了,所以依然强行开始安装。 |
| 29 | |
| 30 | 3. **创建 userdata 分区是成功的** |
| 31 | |
| 32 | ```text |
| 33 | I/DynamicSystemService: startInstallation -> /data/gsi/dsu/dsu |
| 34 | ... |
| 35 | partition name: userdata, progress: 0/10737418240 → 10737418240/10737418240 |
| 36 | I/gsid: [libfs_mgr] Created logical partition userdata_gsi on device /dev/block/dm-0 |
| 37 | ``` |
| 38 | |
| 39 | * 这说明 **userdata_gsi 这 10GB 已经成功创建**,并挂在了 dm-0 上,没有因为空间问题失败。 |
| 40 | |
| 41 | tmemory 那两行基本可以忽略: |
| 42 | |
| 43 | ```text |
| 44 | I/gsid: close tmemory to flush writes to userdata. |
| 45 | E/gsid: [libfs_mgr] findTmemoryPath opendir error: No such file or directory |
| 46 | ``` |
| 47 | |
| 48 | 这是 Android 15/16 新加的 tmemory(虚拟 A/B / 更新相关的一个组件)在你这台机子上找不到挂载点的警告,类似报错在别的 Android 15 设备用 DSU-Sideloader 时也能看到。([GitHub][3]) |
| 49 | |
| 50 | 4. **真正失败的地方:odm 分区** |
| 51 | |
| 52 | ```text |
| 53 | E/gsid : Failed to create file at: /data/gsi/dsu/dsu/aui/odm_gsi.img: No such file or directory |
| 54 | E/gsid : Could not determine maximum file size for /data/gsi/dsu/dsu/aui/odm_gsi.img |
| 55 | E/gsid : Could not create userdata image |
| 56 | I/DynamicSystemService: Failed to create partition: aui/odm |
| 57 | E/gsid : image incomplete; expected 1667260416 bytes, waiting for 1667260416 bytes |
| 58 | E/gsid : Installation failed: install_dir=/data/gsi/dsu/dsu/, dsu_slot=dsu, partition_name=aui/odm |
| 59 | ``` |
| 60 | |
| 61 | 逐条解释: |
| 62 | |
| 63 | * **`Failed to create file … odm_gsi.img: No such file or directory`** |
| 64 | → 这里不是“空间不足”,而是 **连空文件都建不出来**(父目录不存在 / 或路径逻辑出问题),内核返回的就是 `ENOENT`(No such file or directory)。 |
| 65 | |
| 66 | * **`Could not determine maximum file size`** |
| 67 | gsid 通常会先创建一个文件,再根据底层设备/fiemap 估算能给这个逻辑分区分配多大空间。 |
| 68 | 但现在连文件都没有,当然就 “无法确定最大大小”。 |
| 69 | |
| 70 | * **`expected 1667260416 bytes`** |
| 71 | 说明元数据里对 `aui/odm` 的预期大小是 **1667260416 字节 ≈ 1.55 GB**(1667260416 ÷ 1024³ ≈ 1.55)。 |
| 72 | |
| 73 | * 后面那串 “Could not create userdata image / Failed to create partition: aui/odm” 是连锁反应: |
| 74 | odm 分区没建起来,整个 DSU session 就算失败,只能清理。 |
| 75 | |
| 76 | **所以:核心问题是 `aui/odm` 这个逻辑分区创建阶段,系统在 `/data/gsi/dsu/dsu/aui` 下根本没能创建 `odm_gsi.img` 文件,而不是你手动给 odm 设错了多大。** |
| 77 | |
| 78 | --- |
| 79 | |
| 80 | ## 2. 为什么会这样(可能的原因) |
| 81 | |
| 82 | 结合你设备是一加 Ace 5 + 最新 Android 版本、工具是 DSU-Sideloader 现有版本,再对比 GitHub 上其他 Android 15 设备的报错,可以大致推测几个方向:([GitHub][3]) |
| 83 | |
| 84 | ### 2.1 DSU 包本身的问题(aui.zip) |
| 85 | |
| 86 | 你选的是: |
| 87 | |
| 88 | ```text |
| 89 | DsuPackage(uri=.../aui.zip, type=DSU_PACKAGE) |
| 90 | ``` |
| 91 | |
| 92 | DSU_PACKAGE 类型的 zip 里一般有: |
| 93 | |
| 94 | * `gsi.json` / `dsu.json` 等元数据 |
| 95 | * 一个或多个分区镜像:`system.img`, `product.img`, `vendor.img`, `odm.img` 等 |
| 96 | * 有时还有 `super_empty.img` + lp_metadata 描述动态分区结构 |
| 97 | |
| 98 | 从日志来看: |
| 99 | |
| 100 | * 元数据里确实声明了一个 `aui/odm`,大小约 1.55GB。 |
| 101 | * 但在创建对应的 `odm_gsi.img` 文件时就直接挂了。 |
| 102 | |
| 103 | 这比较像下面几种情况之一: |
| 104 | |
| 105 | 1. **包里定义了 `odm` 分区,但镜像文件路径/名字不符合当前 Android 16 的 gsid 期望** |
| 106 | (例如以前版本用的命名或目录结构,在你这套新系统上解析错了)。 |
| 107 | |
| 108 | 2. **包是为 Pixel 或别的厂适配的 DSU 包**, |
| 109 | 里面的动态分区布局、组名(这里是 `aui`)和你手机的 super 分区布局有冲突, |
| 110 | 一加这边改过 DSU 实现,导致 gsid 在创建 `aui/odm` 目录/文件时翻车。 |
| 111 | |
| 112 | ### 2.2 Android 15/16 + 厂商魔改的 DSU 实现 Bug |
| 113 | |
| 114 | * 从 DSU-Sideloader 的 issue 看,**Android 15 开始**,很多机型在 DSU 安装时都会出现 |
| 115 | tmemory 相关报错、`/data/gsi/dsu/dsu/...` 路径异常、lp_metadata 异常等, |
| 116 | 这都是 **系统自带的 gsid** 弄出来的,而不是 DSU-Sideloader 代码本身。([GitHub][3]) |
| 117 | |
| 118 | * 你的日志和这些很像: |
| 119 | 先是 tmemory 找不到目录,再到对某个分区的 image 文件路径处理失败。 |
| 120 | |
| 121 | 在这种情况下,本质上就是: |
| 122 | |
| 123 | > **一加/ColorOS 在 Android 16 上对 Dynamic System Updates 做了改动, |
| 124 | > DSU-Sideloader 现版本 + 你这个 aui.zip 的 DSU 包组合,触发了 gsid 的一个兼容性 bug。** |
| 125 | |
| 126 | ### 2.3 空间 / 文件系统碎片的问题可能性较小 |
| 127 | |
| 128 | * 一些 DSU 失败日志会出现 `too many extents`、`No space left on device` 之类的字样,那确实是 F2FS 碎片化或空间不足。([GitHub][4]) |
| 129 | * **你的日志没有这些,只是 `No such file or directory`,而且 10GB 的 userdata 已经创建成功**。 |
| 130 | 所以这次失败 **更像是路径/元数据逻辑问题,而不是单纯空间问题**。 |
| 131 | |
| 132 | --- |
| 133 | |
| 134 | ## 3. 你可以尝试的几个方向 |
| 135 | |
| 136 | 下面的步骤我按“从最简单到最折腾”的顺序排一下,你可以挑自己愿意折腾的程度来做: |
| 137 | |
| 138 | --- |
| 139 | |
| 140 | ### 3.1 先排除最基本的:清理旧 DSU、关掉“跳过存储检查”、减小 userdata |
| 141 | |
| 142 | 1. 在系统「开发者选项 → 动态系统更新」里看看有没有残留的 DSU,会的话先删掉/退出。 |
| 143 | 2. 在 DSU-Sideloader 里: |
| 144 | |
| 145 | * 把“禁用存储检查/忽略可用空间”**关掉**,让它自己判断一次。 |
| 146 | * 把 userdata 先改成 **2GB 或 4GB** 试一次,看能不能走得更远一点。 |
| 147 | |
| 148 | 这一步主要是排除“空间、分配策略”带来的额外干扰; |
| 149 | 虽然日志不像是空间问题,但先简化环境总是有好处的。 |
| 150 | |
| 151 | --- |
| 152 | |
| 153 | ### 3.2 换成「单系统镜像」GSI 试一遍 |
| 154 | |
| 155 | 如果你只是想体验 GSI,而不是非得用这个 aui.zip: |
| 156 | |
| 157 | 1. 换一个常规的 GSI(`.img` 或 `.img.gz/.xz`),选 DSU-Sideloader 里的 |
| 158 | **Single System Image / 单系统镜像** 模式,而不是 DSU_PACKAGE。 |
| 159 | 2. 一般只会创建 `system_gsi` + `userdata_gsi` 两个逻辑分区,**不会单独搞一个 odm 分区**, |
| 160 | 就能绕过这次卡在 `aui/odm` 上的问题。 |
| 161 | |
| 162 | 一加 Ace 系列是支持 GSI 的,社区里也有人用过 GSI,只是日用体验会有各种 bug。([gledos.science][5]) |
| 163 | 如果单镜像 GSI 能成功,而 aui.zip 一直死在 odm,那基本可以确定问题就出在 **这个 DSU 包/多分区方案本身**。 |
| 164 | |
| 165 | --- |
| 166 | |
| 167 | ### 3.3 检查 aui.zip 的结构(偏进阶) |
| 168 | |
| 169 | 如果你本来就是从论坛 / 群里拿到的一个「专门给某机型的 DSU 包」,又确实想搞清楚它的问题,大概可以: |
| 170 | |
| 171 | 1. 在电脑或手机上解压 `aui.zip`,看根目录下有什么: |
| 172 | |
| 173 | * 是否有 `gsi.json` / `dsu.json` / `lp_metadata` 之类文件; |
| 174 | * 是否有 `odm.img` / `odm_a.img` 之类的镜像。 |
| 175 | 2. 如果 **元数据里写着有 odm 分区,但 zip 里压根没有对应 odm 镜像**, |
| 176 | 那就说明包本身有问题(或者只适配过别的系统版本)。 |
| 177 | |
| 178 | 再往下就比较折腾了,比如: |
| 179 | |
| 180 | * 编辑 `gsi.json` / `dsu.json` 之类的配置,把 `odm` 从分区列表里删掉; |
| 181 | * 或者干脆从这个包里只抽出 `system.img`,自己当单系统镜像来刷。 |
| 182 | |
| 183 | 这些操作一旦搞错,轻则 DSU 起不来,重则刷机 / 回原厂 ROM, |
| 184 | 所以如果你不熟悉动态分区和 super 布局,不太建议硬上。 |
| 185 | |
| 186 | --- |
| 187 | |
| 188 | ### 3.4 从 adb 自查一下路径(需要 root / adb) |
| 189 | |
| 190 | 如果你愿意自己再观察细节,可以在 **失败之后**: |
| 191 | |
| 192 | ```bash |
| 193 | adb shell |
| 194 | su # 如果你用的是 KernelSU / Magisk 等 |
| 195 | ls -R /data/gsi |
| 196 | ``` |
| 197 | |
| 198 | 你想看的重点是: |
| 199 | |
| 200 | * 有没有 `/data/gsi/dsu/dsu/aui/` 这个目录; |
| 201 | * 里面有没有别的 `*_gsi.img`,只有 `odm_gsi.img` 不存在,还是整个 `aui` 目录都没建出来。 |
| 202 | |
| 203 | 如果连 `aui` 目录都没有,那几乎可以确定: |
| 204 | |
| 205 | > 是 **系统 gsid 在处理 DSU_PACKAGE + 动态分区组(aui)时自身出了 bug**, |
| 206 | > 而不是简单地“包里少了个文件”。 |
| 207 | |
| 208 | --- |
| 209 | |
| 210 | ### 3.5 认栽:当前版本的 DSU-Sideloader + Android 16 兼容性问题 |
| 211 | |
| 212 | 结合: |
| 213 | |
| 214 | * 其它 Android 15 设备在 DSU-Sideloader 仓库有类似 tmemory + 动态分区相关报错;([GitHub][3]) |
| 215 | * 你这台是一加 Ace 5,ColorOS 定制也很重;([中关村在线][2]) |
| 216 | * 报错发生在系统自带的 gsid,DSU-Sideloader 本身只是把包丢进去调用系统接口; |
| 217 | |
| 218 | 如果: |
| 219 | |
| 220 | * 换成单系统镜像 GSI 没问题; |
| 221 | * 或者你试过几种不同 DSU 包都在某个分区上类似地崩; |
| 222 | |
| 223 | 那基本可以认为: |
| 224 | |
| 225 | > **这是 Android 16 + 一加自家 gsid 实现,对“带多分区(特别是 odm)DSU 包”的兼容性问题, |
| 226 | > 普通设置层面已经没法绕过去了。** |
| 227 | |
| 228 | 这时候更现实的路线就剩两条: |
| 229 | |
| 230 | 1. **继续玩 GSI** → 优先用「单系统镜像」模式(只 system + userdata)。 |
| 231 | 2. **真要类原生 / 别的系统** → 走解 BL + fastboot / recovery 刷机那条路,不走 DSU。 |
| 232 | |
| 233 | --- |
| 234 | |
| 235 | ## 4. 小结一句人话版 |
| 236 | |
| 237 | * 你的 DSU 不是因为 “空间不够” 挂的,而是 **在创建 aui/odm 分区时,系统连 `odm_gsi.img` 这个文件都没创建成功**, |
| 238 | 所以后面的错误才会说 “无法确定 odm 大小”。 |
| 239 | * 在一加 Ace 5 这种新机 + Android 16 上,这更多是 **DSU 包结构 + 一加改过的 gsid 的兼容性问题**, |
| 240 | 跟你点错哪个按钮关系不大。 |
| 241 | * 如果只是想试 GSI,**先用“单系统镜像”模式**,避开带 odm 的 DSU 包,会简单可靠很多。 |
| 242 | 如果非得用 aui 这种多分区 DSU 包,那就要深入拆包、改配置,或者等工具专门适配这一代系统了。 |
| 243 | |
| 244 | 如果你愿意贴一下 aui.zip 里解压出来的大致目录结构(不含私密信息),我可以帮你一起判断一下这个包本身有没有明显的问题。 |
| 245 | |
| 246 | [1]: https://zhidao.baidu.com/question/1959645631137783868.html?utm_source=chatgpt.com "pkg110是什么型号手机 - 百度知道" |
| 247 | [2]: https://detail.zol.com.cn/2118/2117416/param.shtml?utm_source=chatgpt.com "一加Ace 5 (16GB/512GB)参数 - 中关村在线" |
| 248 | [3]: https://github.com/VegaBobo/DSU-Sideloader/issues/244?utm_source=chatgpt.com "Unknown error · Issue #244 · VegaBobo/DSU-Sideloader - GitHub" |
| 249 | [4]: https://github.com/VegaBobo/DSU-Sideloader/issues/166?utm_source=chatgpt.com "Installation failing constantly · Issue #166 · VegaBobo/DSU-Sideloader" |
| 250 | [5]: https://gledos.science/oneplus-ace-5-pro-superuser.html "一加 Ace 5 Pro 的 root 及其自定义玩法 - gledos的博客" |
| 251 |