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