多重启动:在 Windows 10 分区破坏 Windows 10 启动之前使用 sgdisk 删除 GPT 分区

多重启动:在 Windows 10 分区破坏 Windows 10 启动之前使用 sgdisk 删除 GPT 分区

使用 sgdisk 从 Debian 中删除我的第一个分区后,启动 Windows 10 时出现 BSOD:

您遇到一个问题并且已经解决了它。我们尽力为您更改坐标。错误代码:IO1_INITIALIZATION_FAILED

用英语来说就是:

您的电脑出现问题,需要重启。我们将为您重启。停止代码:IO1_INITIALIZATION_FAILED

在 Windows 10 迁移后,我有两个 WINRE 分区。第一个 WINRE 分区是 Windows 8.1 分区,第五个分区是 Windows 10 分区。系统 ESP 分区是第二个分区,Windows 10 系统是第四个分区,Microsoft 保留分区是第三个分区。我在第六个分区上有一个 Debian 系统。

sudo sgdisk -p /dev/sda
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Model: CT1000MX500SSD1 
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 3A174052-4E14-4820-A5DB-6BFF35BC13E2
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 20252532 sectors (9.7 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2050047   1000.0 MiB  2700  
   2         2050048         2582527   260.0 MiB   EF00  EFI system partition
   3         2582528         2844671   128.0 MiB   0C01  Microsoft reserved ...
   4         2844672       136246776   63.6 GiB    0700  Basic data partition
   5       136247296       137547775   635.0 MiB   2700  
   6       137549824       473094143   160.0 GiB   8300  /
   7       473094144      1899075583   680.0 GiB   8300  
   8      1919322112      1953523711   16.3 GiB    8200  

使用 sgdisk 删除第一个分区后,我得到:

sudo sgdisk -p /dev/sda
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Model: CT1000MX500SSD1 
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 3A174052-4E14-4820-A5DB-6BFF35BC13E2
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 22300532 sectors (10.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   2         2050048         2582527   260.0 MiB   EF00  EFI system partition
   3         2582528         2844671   128.0 MiB   0C01  Microsoft reserved ...
   4         2844672       136246776   63.6 GiB    0700  Basic data partition
   5       136247296       137547775   635.0 MiB   2700  
   6       137549824       473094143   160.0 GiB   8300  /
   7       473094144      1899075583   680.0 GiB   8300  
   8      1919322112      1953523711   16.3 GiB    8200 

目的是切换到 systemd-boot,它需要一个大于 260MiB 的分区来容纳我的两个内核及其 initrd,并将其放在系统 EFI 分区中,并使用 Debian initramfs-tools 配置 /etc/initramfs-tools/initramfs.conf MODULES=most(虽然这样也可以MODULES=dep)。因此,我计划删除第一个分区,并使用这个新空间扩展我的系统分区(第二个)。

答案1

我通过运行修复了这个错误: sudo sgdisk -s /dev/sda 这会按照分配的顺序对 GPT 分区重新编号,并且编号中没有任何空洞。

请注意,如果您依赖 Linux 上的分区号来挂载您的分区,这将改变这些数字(即,如果 sda1 被删除并且排序选项被传递给 sgdisk,/dev/sda3 将变成 /dev/sda2)。

另外,我测试过,这个编号变化不会影响 EFI BCD 条目。

通过反复试验,我发现 GPT 分区编号中 Windows 操作系统分区之前的任何一个漏洞都会导致上述错误,即出现 BSOD IO1_INITIALIZATION_FAILED。如果漏洞位于 Windows 操作系统分区之后,Windows 可以正常启动。

我测试了使用 WindowsDisk Management工具删除第一个分区,该工具会自行重新编号该分区(即,启动 Debian 并运行后,sudo sgdisk -p /dev/sda该分区已从 1 开始重新编号,并且没有缺少数字。

由于 GPT 分区编号中缺少数字 1,我尝试启动 WINRE,一切顺利,但“启动修复”工具无法修复此问题。“启动设置”和启动到“安全模式”也无助于解决这个问题。

Windows 10 启动“自动修复”并没有改善,最终出现“您的电脑未正确启动”。

请注意,通过在 EFI 分区上向 Microsoft BCD 添加 displaybootmenu 和 timeout 3,我得到了启动菜单,然后选择“Windows 10”,我得到了上述 BSOD 停止代码:IO1_INITIALIZATION_FAILED。因此问题出在 EFi 和 BCD 之后,即在 Windows OS 分区上。

还有其他方法会导致 IO1_INITIALIZATION_FAILED 停止代码。Windows 操作系统分区之前的 GPT 编号漏洞就是其中之一。

相关内容