Win7升级Win10加装M.2硬盘的启动项问题 微星 Legacy/uefi SATA 自带工具mbr2gpt
关键词:win7 win10 自带 微星 主板 M.2 SATA legacy+UEFI MBR GPT 系统迁移
本文完全倒叙(结论——原理——排查),强调只用自带工具,可能只有参考示意图甚至没有配图,不要问第三方工具有没有毒。

问题描述:加装M.2硬盘后,原安装在sata系统盘上的win10无法启动,其中win10由win7升级而来
结论:利用mbr2gpt将原系统盘MBR分区无损转为GPT分区
简要版:一些主板上强制M.2接口为UEFI设备,并且legacy+UEFI引导时UEFI优先,并且没有legacy only模式。而win7升win10时保留了原SATA系统盘的MBR分区,故无论是否手动选择启动盘,SATA接口/MBR系统盘启动项顺位永远无法超过M.2盘,永远不能正常启动。
解决:win10 1703后自带Mbr2gpt.exe工具,可以将不超过三个主分区【含隐藏分区】或【没有逻辑分区】+有足够空间(100M~1G)的SATA接口/MBR系统盘无损转为GPT分区,由此可以使用UEFI引导,并设置启动项顺位高于M.2盘。
所有排查和解决都可以用win10自带工具解决,无需任何第三方软件,别问我中了多少次毒。
下面都是遇到的坑

主板:微星MSI X99A RAIDER
原系统盘:Samsung 850 EVO SATA接口 win10系统
新加装盘:WD PC SN530 M.2接口
外部启动介质:win10安装U盘 所需空间大于4.01GB

首先认识两个对子:UEFI引导+GPT分区(win8.1以后+2TB以上硬盘)/legacy引导+MBR分区(旧OS+2TB以下硬盘)
其中,UEFI只能引导GPT分区的系统盘,而MBR分区的系统盘只能以legacy引导。非系统盘则不论。

一些主板默认M.2盘为第一启动项,但实现的方法是:在legacy+uefi引导时UEFI引导优先+M.2接口为UEFI设备,故M.2盘(UEFI Hard disk)顺位永远最高。只有UEFI设备不存在,才能轮到到legacy引导的MBR分区系统盘(Hard disk)。
故即使将M.2盘转为MBR*,或在boot option手动选择MBR盘启动(legacy+uefi模式/Hard disk),也无法恢复SATA接口系统盘的优先启动。因为仍存在一个UEFI设备,结果还是黑屏。

问题在于,win10本身是不能在MBR分区的硬盘上安装的,这本来不成问题。但如果用户的win10是从win7升级而来,则系统盘完全可能仍是MBR分区。用户也许根本没有注意到,自己平时的bios模式(legacy+UEFI)实质上是legacy。而SATA接口的GPT分区硬盘是不会与同为SATA接口的系统盘抢启动项顺位的。(win7后期已更新GPT硬盘支持)

并且,x79以后的主板很可能根本没有legacy only模式,或无法实现legacy only**。

同时,也无法通过“系统备份与还原”实现MBR系统盘迁移到M.2盘,因“该系统映像是在使用BIOS的计算机上创建的,而此计算机使用的是EFI。”由此可知,M.2盘被主板强制认定为UEFI设备,无论其分区格式为何。


因此,可以用Mbr2gpt.exe将MBR系统盘无损转换为GPT分区,win10 1703后就内置了此工具
具体方法如下:
0,在cmd中键入msinfo32,检查bios模式是否为“传统(legacy)”

微软官方说明文件
https://docs.microsoft.com/zh-cn/windows/deployment/mbr-to-gpt
1,进入win re界面:
不装M.2盘正常启动,点击【关机-重启】时按住SHIFT,或制作win10安装U盘/恢复驱动器***,以U盘引导启动,并在安装界面选择【修复此电脑】


2,按下【SHIFT+F10】,或选择【高级选项-命令提示符】

3,键入以下命令(如不在win re下则加上 /allowfullos):
mbr2gpt /validate 验证硬盘结构是否能转为gpt,该步骤默认选择系统盘。
假设disk 0为系统盘

提示Validation completed successfully说明可以无损转换,键入mbr2gpt /convert

返回Conversion completed successfully则成功。
不成功的方法看后文,如Disk layout failed for disk(系统盘)
4,在bios中选择UEFI模式

此时可以发现,下面的UEFI Hard Disk Drive BBS Priorities有一个[windows boot manager (转换后的GPT系统盘)]的选项,调整到最上方,并在boot order prioritie里设为更靠前的选项。
5,在cmd输入msinfo32,查看结果

以上每一步都完全可以在win10官方功能中实现,但实际操作中可能存在一些问题,特别困扰系统较老的用户。
比如,当MBR2GPT /validate时,返回Disk layout failed for disk(系统盘)

查看微软官方的说明,其中最常见的如下:

在老设备上,最常见的原因就是MBR系统是装在SSD盘上,而用SSD时实际上是分过区的,拿来放软件之类。这就意味着很可能有存在于MBR盘中的逻辑分区。此时只能对逻辑分区采取【删除卷】的方式,将其转为未分配空间。

还有一种情况,实际上是因为EFI系统分区在使用现有MBR分区时,MBR系统分区可能小于100M或大于1G,则Mbr2gpt无法将其直接创建为EFI系统分区。如果不懂的不要往下操作了。我也不懂。

另外,超过四个主分区可能会返回Cannot find room for the EFI system partition,而装系统本身就会产生三个分区。

硬盘剩余空间不足也会返回,可以压缩卷腾空间。腾出来100M~1G的空间即可,个人推荐1G。



*在win re的Diskpart中使用convert GPT/convert MBR命令,需格式化。
主要用于新装win10时提示只能装在gpt上

方法:win re或win10安装界面下按【SHIFT+F10】呼出cmd:
输入diskpart,回车,再输入list disk

选择要转换的磁盘号,输入select disk (磁盘号)

输入clean,将磁盘格式化与删除所有分区。
输入convert gpt转为gpt分区/convert mbr转为mbr分区。
输入create partition primary(主分区)/extended(扩展分区)/logical(逻辑分区)
加上size = MB数字即可创建新分区,不加这半条则全部为前述分区。其中后两者不能出现在mbr2gpt无损转换的MBR盘中。GPT盘也不能无损转回MBR(真的有人这么闲吗)
输入exit退出diskpart。
**在boot option中删除/Disabled所有uefi启动项,部分主板无效,比如微星 X99A RAIDER。
***解压win10原版IOS到U盘,或到微软官网下MediaCreationTool制作U盘介质。


后面都是凑字数

老电脑是2015年购置的,加装了M.2硬盘后出现只有一个光标、不能启动win10的情况
首先排除boot option启动项顺序问题:重启,在自检页logo进入boot selection(本主板为F11),选择系统盘(三星850evo),仍然不能启动。
然后排除系统盘掉盘:拆除M.2硬盘,系统盘win10正常启动。
然后检查系统盘SATA接口位置:根据说明书,M.2安装时SATA5/6接口不可用,很多主板都是这样。但是系统盘没有插在SATA5/6上。
此时已经知道是M.2抢启动,重启,打开bios页面(本主板为自检页logo按F7),选择SETTING-system status/系统状态,发现SATA5/M.2 Port显示为“Not Present/不存在”。但M.2是靠CPU识别的,所以不成问题。
然后排除M.2硬盘问题:用win10安装U盘*进入安装页面,到选择安装盘时,发现了新加的M.2驱动器卷。并且可以在M.2上完成格式化、新建分区和安装win10。重启,选择原系统盘(三星850evo),仍然不能启动。
此时面临三个选择:1,在M.2盘新装系统。2,将系统迁移到M.2盘。3,坚持用原系统启动。
其中新装不可接受,那有没有可能在完全使用win10自带功能,实现迁移或启动原系统呢?
迁移系统到M.2:官方的系统迁移方法,主要是创建原系统的系统映像,然后在win re中系统映像还原,其中win re是内置在win10安装U盘里的,或者在【windows管理工具】找到【恢复驱动器】刻一个win re盘,后者体积要大于只有安装程序的前者。
因此可以外部引导启动同时装有M.2盘和原系统盘的设备。但还原映像时提示“该系统映像是在使用BIOS的计算机上创建的,而此计算机使用的是EFI。”
考虑可能是引导模式不对,先尝试将M.2转为bios,在安装界面发现可以给M.2装win10并正常启动,启动项为UEFI windows boot manager WD PC SN530,这可能是win10的新功能。重启,选原系统盘,仍然不能启动。
此时查到M.2出厂为GPT分区,同时观察原系统盘,发现在安装界面提示不能安装win10,原以为是空间问题,但给系统盘的空分区腾出空间后也不能安装,提示是win10不能装在MBR分区上。同时发现系统盘也是MBR。
分区表不同很可能需要格盘,保守起见只能先对M.2盘尝试转为mbr:使用convert mbr,并create partition primary,否则无法实现转分区。重启原系统盘,仍然不能启动。
为MBR后的M.2还原系统映像,返回仍然是“该系统映像是在使用BIOS的计算机上创建的,而此计算机使用的是EFI。”
再试给M.2还原系统备份,这需要给M.2安装新系统,再convert gpt。还原备份后发现只是还原了一些文件,设置注册表都没有还原。
回想”BIOS“和'EFI”的关系,进bios界面发现启动模式有legacy+UEFI和UEFI,选择UEFI则硬盘启动只剩下了新装好的UEFI windows boot manager WD PC SN530。
那么存在一种可能:主板设计上UEFI高于legacy,考虑到UEFI只能显示装了win10的盘(GPT),则要想用原系统盘(MBR)启动只能使用legacy/传统模式引导。
要实现legacy only启动,尝试将所有UEFI设备和M.2盘都Disabled,仍然不能启动。那么只能认为,M.2设备只能被视为UEFI设备并且无法通过现有bios更改,无论其是否为MBR。
因此只剩下一种方法,将系统盘转GPT。查询得知正好win10是自带有无损转换的mbr2gpt工具的。
验证的时候返回failed,看到返回错误有很多种原因,其中提到不能超过三个分区,再观察原系统盘,在安装系统时就多产生了两个隐藏的分区,同时还有一个以前放软件的分区,正巧还是逻辑分区。
拆掉M.2以原系统盘启动,进入磁盘管理删掉多余的逻辑分区。再运行mbr2gpt,转换成功。
插上M,2,启动模式设为UEFI,Boot Option1 = UEFI windows boot manager Samsung 850 EVO(系统盘,新增选项),启动成功。
