先说结论: **真正的报错点不是“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的博客"