Rha*_*nys 2 hard-drive clone bcdedit uefi nvme
问题: Windows 10 克隆到同一磁盘/不同 SSD 无法启动。
原因:我有一个具有以下结构的 M.2 NVMe:
我想将 Windows 10 安装扩展到左侧,据我所知,这只能通过克隆/重新安装来完成。
尝试:我在 Linux pendrive 上启动,并对同一驱动器中未分配空间中的新分区进行 dd 克隆。然后我使用 Windows 恢复模式为新分区创建一个条目。
无法启动,黑屏。尝试 bootrec、bcdboot 复制、删除和重建所有内容都不起作用。我尝试删除指向源 Windows 10 的条目并重命名其 Windows 文件夹,以便只有克隆保留在引导中,但也没有帮助。
然后,我尝试将源克隆到另一块 SSD,其中一个新的 EFI 分区仅指向新的 Windows 10 克隆,同时从 NVMe 中删除 EFI 分区,因此只有一个可能的 EFI 系统分区可以启动,但它仍然无法启动。没用,这次让我蓝屏了。
我知道此时我应该卸下 NVMe,但需要将整个计算机拆开,因为它位于主板底部的一个非常紧凑的 mini-itx 机箱中。
优点是撤消 bcd 更改非常简单,因此原始 8.1 和 10 安装可以正常启动。
问题:我怀疑这是 Windows 到处蔓延并变得混乱的情况之一,阻止自己修复任何问题或创建正确的条目,直到它失去对最初不应该接触的安装的访问权限。
有没有办法使源 Windows 10 安装对恢复模式/克隆安装不可见,而无需物理删除磁盘或删除分区?只有当我确定克隆可以工作时,我才想删除源。
事实证明,克隆的 Windows 10 的问题与 bcd 无关,或者不仅仅与它有关。尝试以安全模式启动它可以让我到达登录屏幕(!!!)。然后事情就变得奇怪了。
尝试登录时出现Sihost.exe的“未知硬错误” 。光标不会停止闪烁和旋转。Ctrl+Shift+Esc 打开任务管理器,从那里我可以打开 cmd、资源管理器等。
查看事件查看器日志会发现无穷无尽的“DCOM 收到错误“1084”尝试使用参数“不可用”启动服务ShellHWDetection以运行服务器”错误列表,我怀疑这是光标闪烁的原因。
sfc和dism /online没有发现错误需要修复。chkdsk 也没有。
另一方面,进行正常启动会导致屏幕甚至不会显示登录屏幕,对尝试的所有快捷方式都没有响应(Crtl+Shift+Esc、Win+P、Win+L、Win+Ctrl+Shift+B ,Crtl+Alt+Del),右键单击时不会显示上下文菜单,并且通常会吃掉光标(它在移动之前不可见,并在第二次空闲后消失,根本没有旋转图标)。
Ps:在 gparted 之前,我还尝试在新分区中进行全新安装,然后在其上克隆源 Win 10。没用,并告诉我这与 BCD 无关。
克隆无法正常启动,因为它的注册表项指向旧分区。
\n自从我上次克隆 Windows(到不同的驱动器)以来已经有很多年了,但如果我没记错的话,克隆的 Windows 能够在第一次启动时自我纠正。当您将系统克隆到同一驱动器上的另一个分区时,不会发生这种情况,因为它仍然可以看到旧分区,包含原始字母和所有内容,因此克隆没有理由认为它无法访问这些文件直到它不能并陷入错误循环。
\n了解正在发生的事情使得这个问题非常容易解决!
\n要在同一驱动器上获得有效的 Windows 克隆,您需要:
\n如果需要,互联网上有很多关于如何准备这些 USB 的指南。
\n本指南涵盖 GPT/EFI 启动,示例案例有一个 Windows 8.1 安装和一个将克隆的 Windows 10 安装。我从未见过任何有关克隆到同一驱动器的指南(它们都告诉您删除带有源的驱动器),因此到目前为止,该解决方案已经由一 (01) 个人进行了测试,你好 _o/,所以继续慎用。
\n问题中问题的具体解决方案在本答案的末尾。
\n(可选,但不是一个坏主意)在继续之前更新您的 Windows 并创建系统还原点。
\n(可选安全措施)检查您的注册表项备份\\Windows\\System32\\config\\RegBack。此文件夹应包含 5 个文件:DEFAULT、SAM、SECURITY、SOFTWARE 和 SYSTEM,但从 Windows 10 版本 1803 开始,这不再自动完成。查看这篇文章了解详细信息。
如果它是空的或包含零字节的文件,您需要运行 Windows 任务或通过使用 RE 中的命令提示符或登录到其他系统时复制它们来手动备份它们。我只是在登录另一个系统时趁机复制它们。
\n关闭休眠功能。您需要确保 Windows 10 克隆源在复制时完全关闭。
\n确保您的所有操作系统都可以顺利启动。
\n(可选的安全措施)在启动之前备份 BCD 文件,因为您的启动可能会在此过程中被破坏。您可能会重建它们而不是使用备份,但拥有它们也没什么坏处。每个 Windows 安装都会有自己的启动文件,位于\\Windows\\System32\\Boot.
在磁盘上的隐藏 EFI 分区中还可以找到实际的启动文件。它通常为 100 MB,将被标识为“ EFI 系统分区”。您需要使用来自 RE/不使用相同启动的不同系统的提升命令提示符来执行此操作。
\n首先,您将使用磁盘部分分配一个字母。指南中有关于如何进一步推进这一点的解释。然后你将使用xcopy:
xcopy S:\\ D:\\EFI_Boot_BK /s /e\nRun Code Online (Sandbox Code Playgroud)\n哪里S:\\是EFI分区,哪里D:\\EFI_Boot_BK是备份目标。
Gparted。导航到包含克隆源的驱动器,格式化将放置克隆的新分区(如果尚未格式化),并记下包含克隆源和目标的分区的名称。Terminal.键入以下命令将 Windows 10 克隆到新分区:
\nsudo dd if=/dev/SOURCE of=/dev/TARGET status=progress bs=64K\nRun Code Online (Sandbox Code Playgroud)\nbs是块大小(64k 是一个不错的值),status=progress将显示一条带有克隆进度的消息。
SOURCE是您要复制的 Windows 的分区,TARGET也是您放置它的位置。克隆之前请仔细检查分区名称。此过程无法撤消;克隆到错误的目标分区将覆盖其数据。
我的系统的示例:
\n
\n (忽略分区混乱和 Fresh Win 10,它们是为了测试结果是坏建议而设计的)
完成后,克隆将具有与源系统相同的标签。您可以将Gparted它们重命名为其他名称。在本例中,我将源重命名为“Win 10 (BK)”。应用更改。
使用dd的更详细解释:
\n重新启动到原始窗口之一,然后打开提升的命令提示符,进入 RE 或 Windows 10 USB 安装驱动器。我更喜欢后者,以避免意外触发自动修复,此时自动修复可能会扰乱您之前工作的 Windows 安装的启动。
\n如果使用 USB 工具,请选择Next然后Repair your computer访问恢复屏幕,然后选择Troubleshoot > Command Prompt。在 RE 中,它会类似于Troubleshoot > Advanced options > Command Prompt.
使用 DISKPART 为 EFI 分区分配一个盘符。借此机会记下分配给您的 Windows 分区的字母。
\n就我而言,使用的命令是:
\n> diskpart\n> list disk\n(figure out which disk contains your installations from their details)\n> sel disk 2\n(my windows disk)\n> detail disk\n(get details to find out installation letters and find boot partition)\n>sel vol 9\n(my boot partition\'s volume number)\n> assign letter=S\n(you can assign whatever free letter you want)\n> exit\nRun Code Online (Sandbox Code Playgroud)\n\n类型:
\nbootsect /nt60 C: /force\nRun Code Online (Sandbox Code Playgroud)\nC:此处是分配给克隆分区的盘符。替换为您的任何字母。
(可选安全措施)。输入bcdedit所有条目并拍照,以便稍后完全重新创建标志。Windows 在重建条目方面做得非常好,但可能会分配错误的区域设置或遗漏一些原始标志,这不是问题,但并不理想。
为克隆的分区重新创建 BCD 条目。此过程类似于bootrec /rebuildbcd,其优点是即使在 /rebuildbcd 因“找不到指定路径”而失败的情况下也可以重新创建条目。
类型:
\nbcdboot C:\\Windows /s S: /f UEFI\nRun Code Online (Sandbox Code Playgroud)\nC:\\Windows是用于重建此条目的源;在本例中是克隆的分区。S:是目标,EFI 引导分区。此过程应该仅重建克隆条目。/f UEFI在这种情况下应该使用 GTP、EFI 磁盘。
类型:
\n> bootrec /fixmbr\n> bootrec /fixboot\n(don\'t worry if it says "Access is denied")\n> bootrec /rebuildbcd\n(It\'ll probably return 0 installations found \xc2\xaf\\_(\xe3\x83\x84)_/\xc2\xaf )\nRun Code Online (Sandbox Code Playgroud)\n键入bcdedit以确认所有 Windows 安装都有Windows 引导加载程序条目。您可以使用bcdedit /set {identifer} flag flagvalue调整或添加标志到条目。这是更改源窗口和克隆窗口的描述的好机会,以便您可以在启动时轻松区分它们。
克隆的窗口现在可能会成为默认操作系统。我喜欢将其更改为安全的可启动 Windows,以防万一。这可以在启动时的操作系统选择屏幕中完成,或者现在使用bcdedit /default {identifier}. shutdown -r完成后您可以使用重新启动。
要复制条目标识符(或任何其他值),请通过单击并拖动光标并右键单击来突出显示它。您可以再次右键单击进行粘贴。它看起来像这样:
\n提示:您现在有可能不小心触发了自动修复,并且您的原始 Windows 分区之一无法启动,您无法使用键盘选择操作系统或出现其他一些奇怪的情况。您可以使用bootsect /nt60 all /force修复所有分区扇区,然后执行bcdboot将 BCD 从受影响的安装复制到引导分区的过程。
其他有用的启动和 BCD 资源:
\n这是我发布问题时陷入的步骤。
\n现在您还不应该尝试登录克隆的 Windows。如果这样做,您将无法访问登录页面。您将看到一个黑屏,其中的光标在您停止移动时不断消失。Windows 不会对您使用的任何快捷方式做出反应。我不建议尝试,通过执行以下操作更容易立即确认并解决问题:
\nbcdedit /set {identifier} safebootalternateshell Yes将克隆设置为安全模式或启动到原始 Windows 安装之一,然后使用Win+R打开“运行”msconfig框,在其中键入以更改设置。选择克隆并检查Safe boot。如果您使用的是源 Windows 10 安装,除了分配给源 Windows 的字母外,您还可以看到在使用克隆安装本身时克隆所采用的字母。记下它们。
如果您还没有这样做,您还可以使用该屏幕将不同的 Windows 安装设置为默认设置。
\n等待屏幕变黑。您的光标应该闪烁并疯狂加载,错误框将保留在那里。
\n按框上的“确定”。用于Ctrl+Shit+Esc打开任务管理器。转到File > Run new task并键入cmd,选中“使用管理权限创建此任务”(如果有选项)。
您必须快速键入,因为 Windows 所处的错误状态会导致所有输入不断失去焦点。最小化任务管理器,这至少可以减轻在提示符下输入时失去焦点的问题。
\n(可选)您可以通过检查事件查看器和磁盘管理来进一步确认您的问题与我的问题完全相同。
\n要检查事件类型eventvwr并转到Windows Logs > System。您应该看到每秒都会弹出多个 DistributedCOM 10005 错误,显示诸如“DCOM 出现错误“1084”试图使用参数“不可用”启动服务 ShellHWDetection 以运行服务器”之类的内容。
要确认克隆正在访问源 Windows 分区,请diskmgmt在 cmd 中键入。您将看到Page File源分区上不应该出现的可能还有其他标志。克隆将是引导系统,但缺少页面文件。
这意味着克隆知道它位于不同的分区中,其字母不是源系统的字母,它是当前启动的系统,其注册表正在被使用,但这些密钥仍然指向源系统。它可能拒绝访问,导致黑屏和所有这些错误。
\n要修复此问题,您需要更改旧系统的盘符,并将其原始盘符分配给克隆,同时登录到克隆系统。不要通过磁盘管理来执行此操作。它会尝试更正注册表(如果字母交换,注册表就已经正确)并破坏一切。您必须重新克隆系统。
\n在此示例中,原始源 Windows 10 在分区 Win 10 (BK) 中具有字母C:。该克隆具有字母F:。您希望源具有任何其他字母,而克隆是 C:。
\n要更正字母,请最小化所有内容,请返回到 cmd 并键入regedit以打开注册表编辑器。去HKEY_LOCAL_MACHINE\\SYSTEM\\MountedDevices。你应该看到这样的东西:
返回 cmd 并输入\\DosDevices\\(ANY LETTER NOT IN USE):。例子:\\DosDevices\\X:。突出显示它,然后右键单击进行复制。不要按 Enter 键。您这样做的原因是因为提示比任何其他窗口失去焦点的次数更少。尝试直接在注册表项中键入该内容是地狱,但粘贴很容易!
返回注册表窗口,右键单击带有源 Windows 10 安装分区盘符的条目。就我而言,这是 C:。选择Rename并粘贴您刚刚在 cmd 中准备的字符串。
重复 cmd 技巧,现在输入您想要克隆分区的字母,该字母应该是原始系统拥有且您刚刚释放的分区。就我而言,是\\DosDevices\\C:. 复制、右键单击并重命名指向克隆系统的键 ( \\DosDevices\\F:),然后粘贴新值。
恭喜你,你做到了!您可以打开msconfig、禁用安全启动并重新启动到克隆系统。现在应该可以正常运行了。
MS 关于通过 regedit 更改启动驱动器盘符的文章:
\n\n| 归档时间: |
|
| 查看次数: |
10018 次 |
| 最近记录: |