使用 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 编号漏洞就是其中之一。