#128 链解析:bulk 引导项 + 前缀分歧自诊断
基于 main 49a6476(含 native-GOP 恢复、BootOrder 引导链、END 节点修复与本轮修复)。同一个 \tx-native-gop.txt 协议,其余流程与 diag.3 完全相同。
本轮两个修复
- bulk 引导项(无 FILE 节点)现在是可解析的作用域:空路径不再被当成文件名送进
Dir::open("")(QEMU 正控里正是它报 INVALID_PARAMETER,导致整条 bulk 项被跳过)。bulk 项现在按“固件选中的卷”处理,在该卷上跑候选扫描,最后才探该卷的通用\EFI\BOOT\BOOTX64.EFI;自身卷照旧跳过。 - 前缀不匹配时的分歧转储:选项前缀的每个节点(Pci/NVMe/HD 签名解码 + 原始 payload hex)与每个 SFS 卷的同类节点列表并排打印,附
first divergence node N(第一个不同节点的序号)。不再只有一句 "matched nothing"。
另:所有 CStr16 日志值改走显式 UCS-2 解码(字段日志里出现过 '')。
验证
- 本地 QEMU 两阶段正控(loader 盘 index 0、第二 ESP index 1、其 bulk 自动项在注入的 FILE 项之前):bulk → 命中第二 ESP 的 bootmgfw → 链载;第二阶段自身卷被跳过 → 再按下一项 bulk 命中通用 BOOTX64 → 进 Shell。两跳全绿。
cargo xt147 项通过,构建零警告;本资产 TX banner 已验。
期望的日志形状(一次冷启动)
CHAIN-BOOT: firmware resolve: [N] BootXXXX bulk device scope matched <handle> (vol=hd(partN,sig…)) - scanning its candidates
CHAIN-BOOT: firmware resolve: [N] BootXXXX bulk device -> '\EFI\Microsoft\Boot\bootmgfw.efi' found on the firmware's volume - chaining its choice
若仍不匹配,matched no SimpleFileSystem volume - prefix nodes: … 与其后每个 fs[i] … first divergence node N … 块就是分诊依据——请把这两类行连同完整的 loader.log 一起回帖。
sha256: 773e176a377380dbc56f58d05fe678036deef474140c7aebf2029920b2b47b9f