Сразу к сути: Если ваша Windows RE стояла на том же диске, что и система, то у вас это обновление уже было установлено и у вас нет проблемы, обновление не установится и просто исчезнет из центра обновления. А если есть маленький отдельный раздел, то обновление не устанавливается с ошибкой (0x80070643).
Чтобы всё это исправить, запустите CMD от имени администратора и пересоздайте раздел не меняя параметры загрузчика.
Чтобы определить куда подключен раздел восстановления введите:
в командной строке reagentc /info
Информация о конфигурации среды восстановления Windows и
сброса системы:
Состояние среды восстановления Windows: Enabled
Расположение среды восстановления Windows: \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
Идентификатор данных конфигурации загрузки: efd963f9-afa6-11ee-8020-84c5a61716fe
Расположение образа для восстановления:
Индекс образа для восстановления: 0
Расположение пользовательского образа:
Индекс пользовательского образа: 0
REAGENTC.EXE: операция выполнена успешно.
ПРИМЕР: У меня WinRE находится на диске 0, раздел 4. Чтобы убедиться, что это она, можно ввести команду:
Get-Partition -DiskNumber 0 -PartitionNumber 4
Указав соответствующие номера для диска и раздела.
Отключите WinRE:
reagentc /disable
Удалите раздел через diskpart
сначала введите команду DISKPART
DISKPART> select disk 0
DISKPART> select partition 4
DISKPART> delete partition override
Уменьшите раздел системного ( Не recovery!!!) раздела так, чтобы можно было создать раздел восстановления размером в 990 мегабайт. Если смотрите через оснастку "управление дисками", то свободно в неразмеченной области должно быть 992 мегабайта. В моем случае, раз раздел восстановления имел номер 4, значит уменьшаем раздел 3 ,системный(!!!). Например, если раздел был изначально 554 мегабайта, то нужно высвободить 436. Это можно сделать в графическом интерфейсе через управление дисками или через diskpart:
DISKPART> select disk 0
DISKPART> select partition 3
DISKPART> shrink desired=436 minimum=436
ВАЖНО: Если команда не работает и выдает ошибку о невозможности сжатия - вы выбрали не тот раздел. Или повторяйте внимательно, или, как вариант, воспользуйтесь утилитой MiniTool Partition Wizard Однако волшебных инструментов нет и консолью Windows воспользоваться всё равно придется...
После этого должно было освободиться достаточное количество свободного места. Затем нужно создать раздел восстановления заново. Для этого нужно сначала определить используемый тип таблицы разделов MBR или GPT. В diskpart это делается так:
DISKPART> list disk
Диск ### Состояние Размер Свободно Дин GPT
-------- ------------- ------- ------- --- ---
Диск 0 В сети 953 Gбайт 1024 Kбайт *
DISKPART>
То что стоит звездочка в колонке GPT говорит о том, что таблица разделов имеет формат GPT, если звёздочки нет, значит формат MBR. Создание раздела восстановления на GPT и MBR разное.
Введите list disk и проверьте, GPT или MBR используется (наличие звездочки (*) в столбце Gpt означает GPT).
Выберите диск ОС, введя sel disk [индекс диска ОС]
Если 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"
После выполненных команд раздел будет вновь создан с тем же номером. Это можно увидеть так:
DISKPART> list partition
Раздел ### Тип Размер Смещение
------------- ---------------- ------- -------
Раздел 1 Системный 150 Mб 1024 Kб
Раздел 2 Зарезервирован 128 Mб 151 Mб
Раздел 3 Основной 952 Gб 279 Mб
Раздел 4 Восстановление 990 Mб 952 Gб
ВАЖНО! Нельзя делать размер раздела выше чем 1GB, потому что если вы так сделаете, то вам снова не хватит места:
https://learn.microsoft.com/en-us/troubleshoot/windows-client/windows-security/disk-partition-requirement-use-windows-re-tool
1. Если раздел ниже 500МБ, то свободно должно быть 50 МБ для старых версий ОС и 200МБ для новых
2. Если раздел ниже 500МБ-999МБ, то свободно должно быть 320 МБ
3. Если раздел выше 1ГБ, то свободно должно быть не менее 1ГБ
Если вы решили переборщить с размером раздела восстановления, то делайте 2ГБ ( то есть команда будет shrink desired=2048 minimum=2048)
После того как вы всё это проделали вам нужно снова включить WinRE обратно:
reagentc /enable
Не забудьте после всех манипуляций выйти из режима DISKPART, написав exit
И после этого перезагрузить компьютер. Только после перезагрузки это обновление поставится.
Внимательно следите за номерами дисков и разделов, чтобы случайно не удалить что-то нужное - например раздел целиком. Как сделал я сам - отсюда и эта инструкция 😃
***
ВАЖНО. Если у вас по какой-то причине WinRE обратно не включается, то вам придётся его (WinRE) переустановить заново. Для этого вам потребуется WinRE.wim. Если вы его потеряли и reagentc /info сообщает, что он не найден, то:
- На смонтированном диске или подключённой флешке в папке «sources» найдите файл install.wim или install.esd, откройте его с помощью архиватора. Например, такие файлы умеет открывать бесплатный архиватор 7-Zip.
- Внутри этого файла перейдите к папке Windows\System32\Recovery (или 1\Windows\System32\Recovery\) и извлеките из него файл Winre.wim.
- Скопируйте его в C:\Windows\System32\Recovery на вашем компьютере.
Запустите командную строку от имени администратора и по порядку введите следующие две команды:
reagentc /setreimage /path C:\windows\system32\recovery
reagentc /enable
Если последнее не сделать, то при перезагрузке раздел восстановления не включится и работать не будет.
Индийское видео про восстановление утраченного образа WinRE:
P.S. Если при включении у вас возникает WinRE у вас возникает таинственная ошибка "7b", то это означает что у вас скорее всего ноутбук, и в нем его производитель понаделал кучу кастомных опций для WinRE. Это значит что вам нужно перед включением вычистить все строчки из bcdedit, который отвечают за режим восстановления.
Проверяйте через "bcdedit /enum all", ищите и удаляйте строчки "Загрузка Windows" у которых идентификатор имеет GUID, а не {current} и у которых атрибут winpe имеет значение yes. Это и будут ваши GUID-ы. Удаляется командой:
bcdedit /delete {efd963f9-afa6-11ee-8020-84c5a61716fe}
И главное, помните, что bcdedit не работает в оболочке PowerShell и вам нужно запустить именно cmd от имени администратора.
В общем, спасибо, Microsoft. Год начался прекрасно...