本文介绍启动Windows实例时,操作系统进入“Preparing Automatic Repair”模式的问题原因和解决方案。
问题现象
启动Windows实例时,操作系统加载失败,进入修复模式(Preparing Automatic Repair)。
问题原因
该问题的原因有很多种,您可以使用健康诊断工具,根据下表中实例健康诊断功能返回的信息,选择具体的修复方案。关于如何使用健康诊断工具,请参见修复实例操作系统无法启动问题的操作指南。
实例健康诊断工具返回的信息 | 解决方案 |
该实例的Windows分区不存在或部分文件缺失,导致操作系统无法正常启动。 | 该问题一般发生在使用自定义镜像创建实例后,因镜像本身问题导致实例无法启动。此时,您需要重新制作镜像,并使用镜像更换该实例的操作系统。更多信息,请参见制作Windows镜像文件和更换操作系统(系统盘)。 |
该实例的Windows分区对应的文件系统类型不是NTFS,导致操作系统无法正常启动。 | |
该实例的Windows分区被分配的磁盘空间过小(小于20 GB),导致操作系统无法正常启动。 | 您可以对该磁盘进行扩容,具体操作,请参见扩容分区和文件系统(Windows)。 |
该实例的Windows分区处于只读状态,导致操作系统无法正常启动。 | |
该实例的Windows分区处于隐藏状态,导致操作系统无法正常启动。 | |
该实例的关键注册表文件不存在,可能导致操作系统无法正常启动。 | |
该实例的关键注册表文件被破坏,可能导致操作系统无法正常启动。 | |
该实例的启动配置数据(BCD)文件不存在,导致操作系统无法正常启动。 | |
该实例的启动配置数据(BCD)文件内容被破坏,导致操作系统无法正常启动。 | |
该实例的启动管理器(bootmgr)文件不存在,导致操作系统无法正常启动。 | |
该实例的启动管理器(bootmgr)的文件内容被破坏,导致操作系统无法正常启动。 | |
该实例的启动管理器(bootmgr)配置中指定的启动设备或磁盘不存在,导致操作系统无法正常启动。 | |
该实例的操作系统加载程序(bootloader)不存在,导致操作系统无法正常启动。 |
清除Windows分区的只读属性
您可以在挂载了修复盘的问题实例中,清除Windows分区的只读属性以解决该问题,具体步骤如下:
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
清除Windows分区的只读属性。
您可以根据需要,选择其中一种方式。
使用diskpart进行清除
假设目标分区的挂载盘符是D,操作步骤如下所示:
打开
DiskPart
窗口。您可以在搜索框中输入
diskpart
打开,也可以在搜索框输入Windows PowerShell
并输入diskpart
命令打开。选择目标卷。
select volume D
清除只读属性。
attribute volume clear readonly
使用PowerShell命令进行清除
假设异常磁盘序号为1,系统分区序号为1。
Set-Partition -DiskNumber 1 -PartitionNumber 1 -IsReadOnly $false
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
重启实例,使以上配置生效。
具体操作,请参见重启实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
清除Windows分区的隐藏属性
您可以在挂载了修复盘的问题实例中,清除Windows分区的隐藏属性以解决该问题。具体步骤如下:
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
清除Windows分区的只读属性,假设异常系统盘盘符是D,隐藏分区的序号是1。
您可以根据需要,选择其中一种方式。
使用diskpart进行清除
打开
DiskPart
窗口。您可以在搜索框中输入
diskpart
打开,也可以在搜索框输入Windows PowerShell
并输入diskpart
命令打开。选择目标磁盘。
select disk D
选择隐藏分区。
select partition 1
清除隐藏属性。
attribute volume clear hidden
使用PowerShell命令进行清除
在PowerShell中执行以下命令:
Set-Partition -DiskNumber D -PartitionNumber 1 -IsHidden $false
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
重启实例,使以上配置生效。
具体操作,请参见重启实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
修复损坏的注册表文件
方案一:在修复模式中修复损坏的注册表文件
当进入修复模式时,单击Startup Repair启动修复,尝试修复启动失败问题。
根据是否存在注册表备份,选择其中一种修复方式。
存在注册表备份时,使用备份替换注册表文件。
说明正常情况下,注册表备份在
C:\Windows\System32\config\regback
。没有注册表备份时,根据需要,选择以下其中一种方式修复:
执行
dism /Image:D: /Cleanup-image /Restorehealth
命令尝试修复。执行
sfc /scannow /offbootdir=D:\ /offwindir=D:\Windows /offlogfile=C:\sfclog.txt
命令尝试修复。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
方案二:在修复实例中修复损坏的注册表文件
您可以在挂载了修复盘的问题实例中,修复损坏的注册表文件以解决该问题。假设挂载盘符为D,具体步骤如下:
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
根据是否存在注册表备份,选择合适的修复方式。
根据是否存在注册表备份,选择合适的修复方式。
存在注册表备份时,使用备份替换注册表文件。
说明正常情况下,注册表备份在
D:\Windows\System32\config\regback
。没有注册表备份时,根据需要,选择以下其中一种方式修复:
执行
dism /Image:D: /Cleanup-image /Restorehealth
命令尝试修复。执行
sfc /scannow /offbootdir=D:\ /offwindir=D:\Windows /offlogfile=C:\sfclog.txt
命令尝试修复。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
配置Windows系统启动项
启动项配置异常导致系统无法正常启动时,您可以在挂载了修复盘的问题实例中重新配置启动项以解决该问题。
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
以管理员身份运行命令行工具cmd。
使用BCDboot工具重新配置启动项。
对于不同的启动方式,运行命令有所不同。假如系统分区盘符为S,Windows分区盘符为C,命令如下:
BIOS启动模式:
bcdboot C:\Windows /s S:
UEFI启动模式:
bcdboot C:\Windows /s S: /f UEFI
说明假如除C盘外,还有D盘中有可用的Windows系统,可以设置多个启动项,可按照如下方式配置:
BIOS启动模式:
bcdboot D:\Windows /s S: /d /p /addlast
UEFI启动模式:
bcdboot D:\Windows /s S: /d /p /addlast /f UEFI
配置完成后,使用以下命令查看启动项。
BIOS启动模式:
bcdedit /store S:\Boot\BCD
UEFI启动模式:
bcdedit /store S:\EFI\Microsoft\Boot\BCD
当显示类似如下所示信息时,说明启动项已配置成功。
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
启动实例。
具体操作,请参见启动实例。