Миграция Windows между BIOS <-> UEFI
Появляется такая задача не часто, но все-же, нужно преобразовать уже установленную систему, загружаемую в BIOS (или UEFI режиме) в UEFI режим (в BIOS соответственно).
Кому интересно, читаем далее:
К счастью, Windows 7 и старше, изначально готовы грузится в любом из режимов, нужно только изменить структуру разделов и загрузчик.
Для этого нам понадобится:
- Установочный диск с Windows (или любой другой рабочий установочный носитель).
- systemrescuecd
- Новый диск, на который мы будем мигрировать (конвертацией займетесь сами, если диска нет)
Загрузимся с systemrescuecd и просмотрим наши диски:
fdisk -l
У вас ситуация может немного отличаться, в моем случае, /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 нам поможет найти наши диски:
Будьте внимательны, выбрав не тот диск, можно сделать очень больно и обидно.
В моем случае, новый диск имеет цифру 1. Его выбираем, выбираем второй раздел и форматируем его в FAT32 (для системного раздела UEFI), в конце назначаем ему букву диска S:
format quick fs=fat32 label="EFI"
assign letter="S"
Сложнее с разделами, куда установлена Windows. После клонирования, метки тома у них одинаковые (можно было и в Linux их поменять). Но нам опять поможет diskpart, мы просто выберем том, и посмотрим его детальные параметры.
Интересный нам раздел с буквой E, на него нужно установить загрузочные файлы:
bcdboot E:\Windows /s s: /f UEFI
Затем, проверим, что конфигурация загрузчика верна, и если это не так, пропишем правильные данные (в моем случае, загрузка указывала на неверный том, и я его переопределил, в примере идентификатор, начинающийся на 586).
Вот и все, после перезапуска, система должна загрузиться.
В обратную сторону все примерно также (помним про типы разметки), но нужно создать один загрузочный раздел с NTFS (метров 100) и раздел для самой системы. Сделать активным загрузочный раздел, а затем установить на него загрузчик и загрузочную информацию (загрузочный раздел у нас с буквой S):
bcdboot E:\Windows /s s: /f BIOS
bootsect /nt60 s: /mbr
Дальше правим загрузочную конфигурацию, и все.