Миграция Windows между BIOS <-> UEFI

Появляется такая задача не часто, но все-же, нужно преобразовать уже установленную систему, загружаемую в BIOS (или UEFI режиме) в UEFI режим (в BIOS соответственно).
Кому интересно, читаем далее:
К счастью, Windows 7 и старше, изначально готовы грузится в любом из режимов, нужно только изменить структуру разделов и загрузчик.
Для этого нам понадобится:

  • Установочный диск с Windows (или любой другой рабочий установочный носитель).
  • systemrescuecd
  • Новый диск, на который мы будем мигрировать (конвертацией займетесь сами, если диска нет)

Загрузимся с systemrescuecd и просмотрим наши диски:

fdisk -l


fdisk -l
a0a51d2b53df48979e99f5896c486392.png


У вас ситуация может немного отличаться, в моем случае, /dev/sda это исходный диск, а /dev/sdb на который будем переносить систему.
Начнем создавать разделы (используем gdisk для разметки в gpt, а fdisk для mbr):

gdisk /dev/sdb


Создание разделов в gdisk


Немного сожмем нашу исходную ФС на разделе /dev/sda2 (чтобы она точно влезла в новый раздел).

ntfsresize -s 126G -f /dev/sda2


Клонируем раздел, и расширяем его на все доступное пространство:

partclone.ntfs -b -I -s /dev/sda2 -o /dev/sdb4
ntfsresize -f /dev/sdb4


Теперь загрузимся с Windows установочного носителя в режиме UEFI, выберем восстановление системы, и запустим командную строку.
Утилита diskpart нам поможет найти наши диски:

diskpart
8fe36ad2a18e4577838b5456bc23cd61.png


Будьте внимательны, выбрав не тот диск, можно сделать очень больно и обидно.
В моем случае, новый диск имеет цифру 1. Его выбираем, выбираем второй раздел и форматируем его в FAT32 (для системного раздела UEFI), в конце назначаем ему букву диска S:

format quick fs=fat32 label="EFI"
assign letter="S"


Сложнее с разделами, куда установлена Windows. После клонирования, метки тома у них одинаковые (можно было и в Linux их поменять). Но нам опять поможет diskpart, мы просто выберем том, и посмотрим его детальные параметры.

Выбираем диск с копией Windows
e3d4e668f50f43c9acc37c7769c77868.png


Интересный нам раздел с буквой E, на него нужно установить загрузочные файлы:

bcdboot E:\Windows /s s: /f UEFI


Затем, проверим, что конфигурация загрузчика верна, и если это не так, пропишем правильные данные (в моем случае, загрузка указывала на неверный том, и я его переопределил, в примере идентификатор, начинающийся на 586).

Корректировка BCD
ff168a6464924d47bd15cc4ea67d4fbf.png
370fd847216744e58f7037de2a041a2a.png


Вот и все, после перезапуска, система должна загрузиться.
В обратную сторону все примерно также (помним про типы разметки), но нужно создать один загрузочный раздел с NTFS (метров 100) и раздел для самой системы. Сделать активным загрузочный раздел, а затем установить на него загрузчик и загрузочную информацию (загрузочный раздел у нас с буквой S):

bcdboot E:\Windows /s s: /f BIOS
bootsect /nt60 s: /mbr


Дальше правим загрузочную конфигурацию, и все.

© Habrahabr.ru