我有一台运行 Windows 10 2019 年 5 月版本 18362 的电脑。
我正在尝试将小型 M2 NVME SSD 迁移到更大更快的 SSD。我尝试了不同的磁盘克隆/映像应用程序(True Image、Macrium Reflect、AOMEI Backupper、Paragon Backup & Recovery),但都没有成功,无法将旧 SSD 克隆到新 SSD。我很惊讶地发现,没有一个应用程序可以正确克隆 OEM 恢复分区。在目标 SSD 上,所有 OEM 分区都变成“正常”主分区(即使逐扇区复制且不调整大小)。
这可能是 OEM 恢复不再起作用的原因(尽管 Windows 运行良好),但我不确定。其他原因可能是错误的 BCD 信息(不知道克隆会如何影响 BCD,它是否更新了卷 ID?)
我的问题是如何正确地将这些 OEM 分区克隆到新的 SSD?
已编辑:如果我通过 M.2 转 USB 外壳连接旧 SSD,恢复功能将再次起作用。这意味着 BCD 信息以某种方式指向旧 SSD 上的分区
答案1
好的。我搞明白了。这很复杂。克隆/分区应用程序并不总是复制分区类型 ID 和 GPT 属性,这会导致一些恢复分区变成“正常”分区。在此处阅读如何解决此问题在分区上设置 WinRE(Windows 恢复环境)标志
注意:此过程还允许您将恢复分区移动到其他磁盘,释放 SSD 上的宝贵空间。如果您选择这样做,请克隆 2 个恢复分区(名为 Image 和 DELLSUPPORT 到 HDD),同时保留剩余的恢复分区。其余过程应该相同。请记住,我还没有测试过这种情况。
此处描述的过程适用于使用 GPT 磁盘的 UEFI 启动。
Windows 分区 (C:) 旁边有一个小型恢复分区(没有名称,对我来说是 839MB)。Dell OS Recovery 依赖于此分区。您需要编辑其中的文件 \Recovery\Logs\Reload.xml。
在继续之前,我建议使用映像程序(例如 Clonezilla)备份所有恢复分区。
步骤 1:挂载恢复分区: 运行 diskpart。
list disk
select disk X [select the OS disk in question]
uniqueid disk [note down/copy the GUID of the disk, you will need it]
list partition [note down the partition offsets, you might need it later]
list volume
select volume Y [select the recovery volume as stated above]
assign letter=W [choose a drive letter to assign this partition to]
exit
步骤2:获取磁盘 GUID
从命令提示符运行以下命令:
wmic 分区获取 BlockSize、StartingOffset、名称、索引
BlockSize Index Name StartingOffset
512 0 Disk #1, Partition #0 1048576
512 1 Disk #1, Partition #1 659554304
512 2 Disk #1, Partition #2 495540219904
512 3 Disk #1, Partition #3 496420327424
512 4 Disk #1, Partition #4 510962622464
512 0 Disk #0, Partition #0 135266304
查看偏移量,您可以看到我们正在寻找的恢复分区是 495540219904,因为它位于最大的 Windows 分区(分区之间最大的间隙)旁边。如果您无法确定哪个分区,请根据您之前在 diskpart 中记下的四舍五入值计算偏移量(偏移量 / 1024 = KB,偏移量 / 1024^2 = MB,偏移量 / 1024^3 = GB...)。记下/复制偏移量值。
警告:安装恢复后发现它大部分是免费的,这很可疑。一些 BCD 元素指向此分区上不存在的文件(例如,在设备对象“Windows Recovery”中,名为 SdiPath 的元素值为“\Recovery\WindowsRE\boot.sdi”)。它可能是一个映像分区,在这种情况下,使用文本编辑器编辑文件可能会损坏其中的某些部分。为了防止这种情况,可能需要磁盘/扇区编辑器,例如 BootIce 中的扇区编辑功能。不幸的是,扇区编辑非常基础,它不允许我们查找字符串,因此将其用于我们的目的很棘手。更好的程序是 Runtime 的 NTFS 磁盘资源管理器(需要许可证)。目前,我对 notepad++ 没有问题。如果需要,我会再次更新此答案。
步骤 3:编辑 \Recovery\Logs\Reload.xml
挂载恢复分区并获取磁盘 GUID 和分区偏移量后,编辑文件 W:\Recovery\Logs\Reload.xml。如果此文件不存在,则表示您获取了错误的恢复分区。
您可以在 Windows 内部执行此操作,但您需要在命令提示符中输入完整命令 [以管理员身份运行],例如:
C:\Program Files (x86)\Notepad++\notepad++.exe W:\Recovery\Logs\Reload.xml
如果您使用 Hiren 的 Boot PE,它会更容易一些,因为它包含您需要的一切。我不建议使用 notepad.exe,而是使用 notepad++。Hiren 的 Boot PE 不会在 RAID SATA 模式下检测到您的 M.2 NVME SSD,因此请转到 BIOS 并根据需要暂时将 SATA 模式设置为 AHCI。
在标签中,用您获得的值替换属性“offset”和“guid”。最好将 guid 转换为小写,因为我不知道它是否区分大小写。完成后保存文件。
步骤 4:卸载并测试
卸载恢复驱动器,运行:C:> diskpart select disk X[选择先前选择的磁盘] 列出卷选择卷 Y[选择恢复卷] 删除字母=W 退出
如果您之前将 SATA 模式设置为 AHCI,请进入 BIOS 并再次将 SATA 模式设置为 RAID。
重新启动,按 F12 并测试 SupportAssist OS Recovery。它现在应该可以工作,但如果仍然不工作,请再次仔细检查偏移量和 guid 值。
额外步骤
好的,在某些情况下,您可能需要更正 BCD 才能启动或/和使用操作系统恢复。这是因为在磁盘克隆/分区过程中更改了磁盘或分区 GUID,从而导致 BCD 记录无效。
别惊慌。这个问题是可以解决的。
我们需要的工具是BootIce。
如果您无法启动 Windows,请使用 Hiren 的 Boot PE,因为它包含您需要的一切。
步骤5:挂载EFI分区: 运行 diskpart。列出磁盘选择磁盘 X [选择相关的操作系统磁盘] 列出卷选择卷 Z [选择名为 ESP 的 FAT32 卷] 分配字母 = W [选择要将此分区分配给的驱动器号] 退出
步骤 6:编辑 EFI 分区上的 BCD 文件
如果你使用 Hiren 的 Boot PE:
运行 BootIce [在 Utilities\BCD-MBR 工具中]
选择 BCD 选项卡,在 BCD 文件部分,确保选择了“当前系统的 BCD”。
如果你可以启动 Windows,只需下载并运行 BootIce
选择 BCD 选项卡,在 BCD 文件部分,确保选择了“其他 BCD 文件”。
单击“...”按钮并选择文件 W:\EFI\Microsoft\Boot\BCD
点击“专业模式”
浏览左侧窗格中的每个条目以查找任何值为 UnknownDevice 的元素(通常元素名为:*Device),如果有关联路径,请使用此路径查找正确的卷
如果 *Device 上没有给出路径,则查找其后名为 *Path 或 SystemRoot 的元素,并记下其值
单击此 UnknownDevice 元素并使用以下规则对其进行编辑:
- 如果值/路径包含“\windows”,则将其设置为 Windows 分区(C:)
- 如果值/路径包含“\sources”,则将其设置为 DELLSUPPORT 分区
- 如果值/路径包含“\EFI”,则将其设置为 ESP 分区
- 如果值/路径包含“\Recovery”,则将其设置为恢复分区
使用相同的步骤编辑文件 W:\EFI\dell\SOS\BCD
如果您已正确完成所有操作,则 SupportAssist OS Recovery 现在应该可以正常工作。