背景
主要是遇到了两个问题:
- 想给两台Windows虚拟机的C盘扩容,但安装程序将恢复分区直接放在了C盘挡了路
- 安装KB5034441时遇到了
0x80070643
错误(参见微软社区的帖子),这一错误与恢复分区容量不足有关
修复和扩容恢复分区的流程其实差不多,所以在此记录一下。
操作流程
S1-创建/扩容恢复分区
此流程参考微软官方的指南。请留意磁盘和分区的索引号,错误的命令会导致数据丢失。
- 使用管理员身份启动cmd
- 执行
reagentc /info
检查WinRE状态,留意下路径和安装磁盘;如果正在运行的话执行reagentc /disable
停用WinRE - 创建或扩容恢复分区
- 运行
diskpart
- 执行
list disk
查看磁盘状况;执行select disk <index>
选中系统所在磁盘;执行list part
查看分区状况 - 如果需要扩容恢复分区的话,就需要将C盘缩小一点,然后删除并创建新的恢复分区:
- 先选中系统分区
select part <index>
,然后缩小分区大小shrink desired=250 minimum=250
- 接下来选中恢复分区
select part <index>
,并删除恢复分区delete part override
- 先选中系统分区
- 而对于我的两台VM而言,恢复分区已经不存在了,接下来便是共通的恢复分区创建步骤,MBR和GPT磁盘略有不同,可通过
list disk
检查GPT
列中是否有星号判断(有星号则为GPT磁盘)- 对GPT磁盘,执行
create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
然后gpt attributes =0x8000000000000001
;而对MBR磁盘则执行create partition primary id=27
- 格式化恢复分区
format quick fs=ntfs label=”Windows RE tools”
- 如果为MBR磁盘,追加执行
set id=27
- 对GPT磁盘,执行
- 检查一下恢复分区是否成功创建
list vol
- 运行
S2-修复恢复分区
在完成恢复分区创建/扩容后,尝试执行reagentc /enable
启用WinRE,但出现如下报错:
REAGENTC.EXE: 未找到 Windows RE 映像。
参考这篇帖子,有两种途径可以修复WinRE。
- 使用SFC(详情参考这里),执行
sfc /scannow
,Windows会尝试扫描并修复损坏文件。但这种方法对我的虚拟机并未生效。 - 从ISO安装镜像提取
winre.wim
用于修复(参考这篇教程)- 挂载Windows安装镜像ISO到X盘(假设),使用7-zip打开
X:\sources\install.wim
;这里会找到若干个数字编号的目录,可以打开[1].xml
查看每个编号对应的Windows版本 - 选择对应Windows版本的目录,对应找到
X:\sources\install.wim\<index>\Windows\System32\Recovery\winre.wim
文件,拷贝出来保留 - 将拷贝出来的
winre.wim
放到需要修复的系统的C:\Windows\System32\Recovery
目录下
- 挂载Windows安装镜像ISO到X盘(假设),使用7-zip打开
- 此时再次尝试
reagentc /enable
,若完成修复则可以启用WinRE了;如果S1中完成了对恢复分区的扩容,可以再次尝试安装Windows更新