Задача простая, и в общем случае решается одной командой bcdboot в среде восстановления:
1 | bcdboot W:\Windows |
Здесь W — условная буква диска с ОС, а реальная быстро определяется так. Команда копирует все необходимые для загрузки файлы на раздел EFI и создает конфигурацию загрузки BCD.
Но бывают нюансы. На днях решал задачу в такой постановке: в ПК несколько дисков, и если вынуть один, не грузится единственная Windows с другого. Пишет Windows failed to start — 0xc0000225 — The boot selection failed because a required device is inaccessible.
Конфигурация дисков и разделов была такой (вместо красивых скриншотов — фото с экрана, потому что основано на реальных событиях).
При этом на диске с ОС не было раздела EFI, что весьма необычно.
Но это легко исправить. Отжать у системного раздела 100MB можно в diskmgmt.msc, а все остальное уже в среде восстановления:
1 2 3 4 | sel disk 0 create partition efi size=100 format quick fs=fat32 label="System" assign letter="S" |
Однако после создания раздела EFI команда bcdboot заканчивалась сообщением Сбой при копировании файлов загрузки (Failure when attempting to copy boot files). При внимательном рассмотрении на одном из других дисков обнаружился раздел EFI, путавший все карты (Volume 6 на первой картинке)
В итоге решилось так:
1 | bcdboot W:\Windows /s S: /f ALL |
здесь:
- W — раздел Windows, S — раздел EFI
- /s S: — копирование файлов загрузки на указанный раздел S
- /f ALL — копирование файлов загрузки для UEFI и BIOS (в данном случае необязательно, но тоже можно форсировать)
- /l ru-ru — язык загрузчика (здесь не использовалось, но часто спрашивают, как его сменить)
В результате команда bcdedit рисует такую картину:
В секции Windows Boot Manager (диспетчер загрузки Windows) виден раздел загрузки EFI и полный путь к файлу управления загрузкой. В секции Windows Boot Loader (загрузчик Windows) указан раздел загружаемой системы и полный путь к загрузчику Windows. При включении ПК управление передается диспетчеру загрузки, который в свою очередь загружает Windows.
Здесь я определил проблему «на глаз». Но есть и более научный метод, который я впоследствии описал в канале Telegram.
У меня есть другая проблема. В компьютере два диска, на одном (диск 1) — ОС на GPT, на другом (диск 2) — ОС на MBR.
Компьютер не загружает ОС с диска 1, если к нему подключен диск 2. Просто не происходит передача управления загрузчику. Не помогает даже загрузка с диска вручную через Boot Menu материнской платы. Диск 2 отключаем, перезапускаем ПК — ОС с диска 1 запускается.
Загрузочные разделы на каждом диске свои (на диске 1 загрузчик для ОС на диске 1, на диске 2 загрузчик для ОС на диске 2).
Пока времени изучить проблему нет.
Изучение этой или предыдущей статьи подтолкнет в правильном направлении решения проблемы :)
Кривые прошивки такие кривые)) Обновить пробовали?
Была ситуация когда пригодилась бы информация. Есть две ссдшки, так вот при установке десятки на одну из них, системные разделы почему-то создавались на второй. В дальнейшем я про это забывал и успешно их затирал, ну и дальше полный энтузиазма отключал вторую ссдшку и переустанавливал систему с только одной подключенной.
Да, такое же решение.
Вчера целый час убил, на схожую задачу. после восстановления раздела, и при попытке добавить вторую винду словил ошибку.
Но у меня пробелма оказалась еще и в том что из PowerShell не работает bcdedit.
PS C:\Windows\system32> bcdedit
Диспетчер загрузки Windows
--------------------
идентификатор {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale ru-RU
inherit {globalsettings}
default {current}
resumeobject {df7446a3-66ce-11e7-8534-932309a77c96}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Загрузка Windows
-------------------
идентификатор {current}
device partition=C:
path \Windows\system32\winload.efi
description Windows 10
locale ru-RU
inherit {bootloadersettings}
recoverysequence {df7446a5-66ce-11e7-8534-932309a77c96}
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {df7446a3-66ce-11e7-8534-932309a77c96}
nx OptIn
bootmenupolicy Standard
PS C:\Windows\system32> bcdedit /set {current} description "Windows 11"
Недопустимая команда установки.
Для получения справки введите в командной строке "bcdedit /?"
Параметр задан неверно.
PS C:\Windows\system32>
запустил cmd от туда все ок.
Работает, но PowerShell интерпретирует фигурные скобки как блок скриптов. Поэтому проще работать с bcdedit в cmd.