github physicsdolphin/nv-uefi-unlocker v2.1.9-diag.4
v2.1.9-diag.4 — bulk 引导项作用域解析 + 前缀分歧自诊断(issue #128)

latest releases: v2.1.12-rc3, v2.1.12-rc2, v2.1.12-rc1...
pre-release11 days ago

#128 链解析:bulk 引导项 + 前缀分歧自诊断

基于 main 49a6476(含 native-GOP 恢复、BootOrder 引导链、END 节点修复与本轮修复)。同一个 \tx-native-gop.txt 协议,其余流程与 diag.3 完全相同。

本轮两个修复

  1. bulk 引导项(无 FILE 节点)现在是可解析的作用域:空路径不再被当成文件名送进 Dir::open("")(QEMU 正控里正是它报 INVALID_PARAMETER,导致整条 bulk 项被跳过)。bulk 项现在按“固件选中的卷”处理,在该卷上跑候选扫描,最后才探该卷的通用 \EFI\BOOT\BOOTX64.EFI;自身卷照旧跳过。
  2. 前缀不匹配时的分歧转储:选项前缀的每个节点(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 xt 147 项通过,构建零警告;本资产 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

Don't miss a new nv-uefi-unlocker release

NewReleases is sending notifications on new releases.