Windows 10 1903 更新过程中遇到的一系列硬盘问题及解决过程

微软昨天终于给我推送了1903更新,由于想要尝试WSL2和Windows Terminal很久了,立即就在设置中选择更新。但是没有想到的是提示更新不成功:

QQ图片20190629021513.jpg

“无法安装Windows,因为这台电脑的磁盘布局不受UEFI固件支持。”

上网查询,网上给出了原因所在:BIOS开启了UEFI,在这一情况下硬盘分区表必须为GPT格式而非MBR格式才能够安装。用DiskGenius一看,果然作为系统盘的SSD和存储盘HDD的分区格式都是MBR格式。网上也给出了两个解决方案:一是关闭UEFI,将BIOS设置为传统模式;二是将硬盘分区表转换为GPT格式。

前者是我不太愿意看到的,UEFI毕竟是相对较新的特性,早晚会完全替代掉传统的BIOS。尝试着进入BIOS设置,根本没有找到开启传统模式的方法,似乎是主板型号太新了。这个方法行不通。

那就尝试第二种方案吧。网上给出的解决方案是用DiskGenius转换分区类型从MBR到GPT,再用命令行分出一个新区,并划分为EFI分区。但是又有说法称DiskGenius的免费版在转换分区类型时会清空所有硬盘内数据(实际上应该不会,但是我当时并不清楚),于是没敢采取这套方案,决定另找解决方案。

之后我又找到了另一个工具:微软官方推出的分区类型转换工具MBR2GPT.exe,随系统附带,可以无损地转换分区类型。这样就可以一试了。

在管理员权限下运行命令提示符,输入命令mbr2gpt /validate /allowfullos /disk:1验证硬盘是否能够进行分区。这里的参数中,/validate表示进行验证,/allowfullos表明强制在完整版操作系统下运行程序(这是因为MBR2GPT.exe本身是为WinRE设计的),/disk:1则表示对磁盘1进行操作(磁盘1是我的操作系统所在的SSD,输入diskpartlist disk查看要进行操作的硬盘编号)。

发现系统抛出了类似于下面的错误:

MBR2GPT: Attempting to validate disk 1
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
Disk layout validation failed for disk 1.

增加参数/logs保存日志文件,发现了具体的错误所在:

ValidateLayout: Last partition too close to the end of the disk. Should end at offset 120034106880 or below, found at 120034123776

以这一错误日志为参数搜索,立即找到了原因与解决方案:GPT分区表需要占用一定的空间,但我的SSD没有空闲空间供分区表使用了。用WinPE启动系统,从SSD中划出1个G的空闲空间,再运行MBR2GPT:mbr2gpt /convert /allowfullos /disk:1。这次成功了。

重启系统,发现系统蓝屏,显示系统引导错误。再一次启动WinPE,用引导修复工具重建了系统引导,这次成功地进入了系统。在系统中查看硬盘,发现分区表已经变成了GPT格式,Windows自动更新也可以运行了。Mission complete!

(然而HDD的分区表仍然是MBR。就先放着不管吧,似乎也没什么影响……)

你可能感兴趣的:(Windows 10 1903 更新过程中遇到的一系列硬盘问题及解决过程)