我有一个驱动器在崩溃后出现启动故障,BSOD 错误代码为 0xc0000098。这是那种完全抵抗我所知道的每种 BCD 恢复技术的崩溃之一(重新格式化 EFI 启动分区,运行 bootsect、bcdboot、bcdedit,但都无济于事),但幸运的是,它上面真的没有任何重要的东西。我已经恢复了我需要的东西,现在我只是在做一些摆弄。
我目前正在尝试仅使用 Windows CLI 命令在磁盘上的特定位置手动构建新的 EFI 启动分区,即 Windows 安装将放置它的驱动器的前 100mb。另一个固定约束是,我不会丢失任何已经存在的数据分区,也不会丢失 Windows 恢复分区。
目前,该空间尚未分配,没有任何分区信息。据我所知,这意味着无法在 diskpart 中使用通常的“create partion efi”命令手动分配新的 EFI 分区,因为这无法让我控制要创建分区的确切位置。
我发现实现它的唯一方法是稍微作弊,使用 GUI 磁盘管理实用程序从该空间创建一个简单的卷,然后在 diskpart 中格式化它。从那里,我知道我需要设置分区类型(即 C12A7328-F81F-11D2-BA4B-00A0C93EC93B),但这似乎不足以使其可用于创建 BCD。
我知道这不是必须的,但我对它很感兴趣,因为它是一个思想实验,可以加深我对 EFI 启动分区的底层知识。更具建设性的是,我现在正在我的一门课上教授启动修复技术,我正在尝试开发一个练习,让他们只使用 CLI 命令和 diskpart 等实用程序来制作一个可启动的 Windows 驱动器。这里的级别越低越好!
答案1
这是一个相当简单的过程:
- 在 diskpart 中,运行
create part efi size=100
假设驱动器开头有 100MB 的可用空间,diskpart 将在那里创建新的分区否则,它将被创建在其他地方(任何有空间的地方)。EFI 分区实际上没有必要位于磁盘的开头,这样会更整洁。
请注意,Windows 确实喜欢有一个保留分区至少 16MB。这需要在安装 Windows 的分区之前。
format fs=fat32 quick
现在选择一个尚未使用的卷号,并将其分配给新分区。在此示例中,我们使用字母 r。
assign letter r
(或者,您可以让 diskpart 通过运行选择一个字母assign
,然后用找到哪个字母list vol
)
现在让 Windows 在 EFI 分区上安装其启动文件。假设 Windows 安装在的分区为 C:
- 运行(不在 diskpart 中)
bcdboot c:\windows /s r: /f uefi
:。
这就是全部了!(通常)
答案2
- 让校验从分配中删除坏扇区。
- 删除启动分区中剩余的内容(如果有)。
- 从重建启动分区 Windows 10 ISO USB或者使用第三方工具,例如Macrium 反射。