背景:
在了解到我的一个 nvme 驱动器可能存在固件问题后(搜索:Samsung 980/990 pro read-only bricking 2023 February)。我决定将适当的固件更新应用于三星驱动器。最简单的方法是从 Windows 使用三星魔术师软件。
在执行任何操作之前,我决定将 win11 系统克隆到 SATA 驱动器,并将我的 Linux 系统克隆到 SATA 驱动器。简而言之,克隆过程可以描述如下:
nvme1 (force mp600) -> sata1 { Windows 11 }
nvme2 (evo 980 pro) -> sata2 { Linux }
所有有问题的驱动器都具有相同的 2TB 容量。我使用 dd_rescue 将原始驱动器克隆到 SATA 驱动器。该过程中没有出现 I/O 错误。
原始 Linux(980 Pro)和克隆版运行良好,尽管在 980 nvme 上发现了大量令人震惊的 SMART 错误,但它似乎运行良好。已应用固件补丁,问题已解决。
问题:
像往常一样从 mp600 nvme 启动“隔离的 Windows 系统”后,打算下载三星魔术师并将补丁应用到其他 980-nvme 驱动器,但发生了以下情况:
Windows 决定使用克隆驱动器中的克隆分区作为 C: 驱动器。大概是因为在此 BIOS 和主板(x570 pro4 by asrock)中,SATA 驱动器在 NVME 驱动器之前被发现。因此,在经历了痛苦而缓慢的启动过程和大量咒骂之后,我意识到 Windows 现在正在使用速度慢得多的 C:克隆驱动器,而不要使用原装驱动器。
对此,我想,这没什么大不了的。我只需拔下克隆并照常启动即可。不。
蓝屏死机。
Recovery
Your PC/Device needs to be repaired
A required device isn't connected or can't be accessed
Error code: 0xc000000e {0x c000 000e}
You'll need to use recovery tools (bla, bla, bla)
我尝试使用“常规”修复安装介质的方法。但失败了:
蓝屏死机。
Startup Repair couldn't repair your PC.
Press "advanced options" to try other options to repair your PC or "Shut down" to turn off your PC.
Log file: \System32\Logfiles\Srt\SrtTrail.txt
从那时起,我尝试从 SATA 克隆回 NVME,最终结果仍是相同的 BSOD。
奇怪的是,原始系统可以从克隆的驱动器正常启动,并且源中的 C、D、E 分区也被替换,而原始分区被分配给“较晚”的字母,例如 h、e、f。
我还尝试手动将 C 字母 ( *
) 应用于原始驱动器,然后从安装 USB 执行修复系统步骤。但是,操作系统或 BIOS 似乎更喜欢 SATS 驱动器,如果未连接 SATA 驱动器,我就会得到第一个 BSOD。
总结一下:
当启动时存在原始和克隆时,将选择克隆。当启动时不存在克隆时,Windows 会报告设备丢失并停止并显示 BSOD。
据推测,迁移到新驱动器是一种常见的用例,所以很可能发生了这种情况。但是,我想从原始 nvme 启动,而不是从 sata 克隆启动。你遇到过这个问题吗?我需要一些建议。
日志输出:
Startup Repair diagnosis and repair log
---------------------------
Last successful boot time: 2/14/2023 2:16:36 PM (GMT)
Number of repair attempts: 1
Session details
---------------------------
System Disk = \Device\Harddisk2
Windows directory = D:\Windows
AutoChk Run = 0
Number of root causes = 1
Test Performed:
---------------------------
Name: Check for updates
Result: Completed successfully. Error code = 0x0
Time taken = 0 ms
Test Performed:
---------------------------
Name: System disk test
Result: Completed successfully. Error code = 0x0
Time taken = 0 ms
Test Performed:
---------------------------
Name: Disk failure diagnosis
Result: Completed successfully. Error code = 0x0
Time taken = 93 ms
Test Performed:
---------------------------
Name: Disk metadata test
Result: Completed successfully. Error code = 0x0
Time taken = 407 ms
Test Performed:
---------------------------
Name: Disk metadata test
Result: Completed successfully. Error code = 0x0
Time taken = 78 ms
Test Performed:
---------------------------
Name: Target OS test
Result: Completed successfully. Error code = 0x0
Time taken = 15 ms
Test Performed:
---------------------------
Name: Volume content check
Result: Completed successfully. Error code = 0x0
Time taken = 1735 ms
Test Performed:
---------------------------
Name: Boot manager diagnosis
Result: Completed successfully. Error code = 0x0
Time taken = 0 ms
Test Performed:
---------------------------
Name: System boot log diagnosis
Result: Completed successfully. Error code = 0x0
Time taken = 15 ms
Test Performed:
---------------------------
Name: Event log diagnosis
Result: Completed successfully. Error code = 0x0
Time taken = 125 ms
Test Performed:
---------------------------
Name: Internal state check
Result: Completed successfully. Error code = 0x0
Time taken = 0 ms
Test Performed:
---------------------------
Name: Check for installed LCU
Result: Completed successfully. Error code = 0x0
Time taken = 20250 ms
Test Performed:
---------------------------
Name: Check for installed driver updates
Result: Completed successfully. Error code = 0x0
Time taken = 735 ms
Test Performed:
---------------------------
Name: Check for pending package install
Result: Completed successfully. Error code = 0x0
Time taken = 1828 ms
Test Performed:
---------------------------
Name: Boot status test
Result: Completed successfully. Error code = 0x0
Time taken = 16 ms
Root cause found:
---------------------------
Boot status indicates that the OS booted successfully.
---------------------------
---------------------------
*
将 c 盘符应用于原始驱动器
USB 启动媒体 -> 高级工具
-> cmd 提示符
-> diskpart
-> 选择磁盘 3
-> 选择卷 4
-> 分配字母=c
两个驱动器上的分区
PS C:\Users\jaro> Get-PhysicalDisk | Where-Object -Property FriendlyName -Match "(Force|ST2000)" | Select-Object -Property MediaType,Model,Size
MediaType Model Size
--------- ----- ----
SSD Force MP600 2000398934016
HDD ST2000DX001-1CM164 2000398934016
PS C:\Users\jaro> Get-Partition -DiskNumber 2
DiskPath: \\?\scsi#disk&ven_&prod_st2000dx001-1cm1#7&2e1550d9&0&050000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
PartitionNumber DriveLetter Offset Size Type
--------------- ----------- ------ ---- ----
1 1048576 100 MB System
2 105906176 16 MB Reserved
3 C 122683392 361.28 GB Basic
4 388041277440 625 MB Recovery
5 A 388697686016 80.05 GB Basic
6 474649460736 1 GB Unknown
7 G 475724251136 1.39 TB Basic
PS C:\Users\jaro> Get-Partition -DiskNumber 4
DiskPath: \\?\scsi#disk&ven_nvme&prod_force_mp600#5&eb22283&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
PartitionNumber DriveLetter Offset Size Type
--------------- ----------- ------ ---- ----
1 1048576 100 MB System
2 105906176 16 MB Reserved
3 122683392 361.28 GB Unknown
4 388041277440 625 MB Recovery
5 E 388697686016 80.05 GB Basic
6 474649460736 1 GB Unknown
7 F 475724251136 1.39 TB Basic
BCD 内容
PS C:\Windows\system32> .\bcdedit.exe
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume11
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {4c5f0d94-502c-11ed-ba51-f3bde6dbb2bd}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.efi
description Windows 11
locale en-US
inherit {bootloadersettings}
recoverysequence {4c5f0d96-502c-11ed-ba51-f3bde6dbb2bd}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {4c5f0d94-502c-11ed-ba51-f3bde6dbb2bd}
nx OptIn
bootmenupolicy Standard
更新:
我尝试让两个 Windows 安装都出现在 BCD 中,但该步骤也失败了,大概是因为这些驱动器上的 fs-id 相同。
X:\sources>bootrec /rebuildbcd
Scanning all discs for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations:2
[1] \\?\GLOBALROOT\Device\HarddiskVolume28\Windows
Add installation to bootlist? Yes(Y)/No(N)/All(A):Y
[2] D:\Windows
Add installation to bootlist? Yes(Y)/No(N)/All(A):Y
The requested system device cannot be identified due do multiple indistinguishable devices potentially matching the identification criteria
我做了一些其他的事情来尝试保存这个系统,比如使用该工具更改文件系统的系统 ID volumeid.exe
,但最终却出现了 BSOD:
Error Code 0xc0000185 is caused by a corruption of files
related to the boot function of a Windows PC.
我猜还是有可能修复引导加载程序的,但由于这方面的信息很难获得。我可能会放弃,继续前进,并为未来做笔记:
请勿使用位于不同磁盘和控制器上的相同克隆来启动 Windows,因为操作系统可能会破坏您的原始安装。
答案1
A)使用一些专用的克隆软件可能会更好
B)下次启动原始操作系统之前尝试旋转 fs-id,但可能会导致克隆处于无法启动的状态,因为 fs-id 可能在 Windows 引导加载程序中使用
C)