Convert MBR to GPT.

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


просматриваем структуру разделов на диске с которым хотим провести процедуру конвертации

Код: Выделить всё

parted /dev/sda unit s print
Сохраняем разметку разделов в файл для последующего воссоздания структуры разделов с максимальной точностью (unit s - переводит единицы размера у parted в сектора)

Код: Выделить всё

parted /dev/sda unit s print > part-mapMBR.dump
просматривает полученный файл

Код: Выделить всё

cat part-mapMBR.dump
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 117231408s
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало    Конец       Размер      Тип      Файловая система  Флаги
 1     2048s     1050623s    1048576s    primary  xfs               загрузочный
 2     1050624s  117229567s  116178944s  primary                    lvm

Альтернативный вариант
Вы можете использовать sfdisk для этой задачи даже на дисках с GPT-разметкой:

Код: Выделить всё

sfdisk -d /dev/sdX > part_table
Восстановление с сохранением идентификаторов дисков и разделов**:

Код: Выделить всё

sfdisk /dev/sdX < part_table
Восстановление с генерацией новых идентификаторов дисков и разделов**:

Код: Выделить всё

grep -v ^label-id part_table | sed -e 's/, *uuid=[0-9A-F-]*//' | sfdisk /dev/sdY
Если существует необходимость изменить UUID у существующего раздела то можно воспользоваться следующими способами

Код: Выделить всё

tune2fs /dev/sdb1 -U 523436E9-4DA5-474F-87CA-D784E4BF345D
этот метод подходит для изменения существующего UUID на заранее известный, при необходимости воссоздать прежний UUID раздела

Код: Выделить всё

sfdisk --disk-id /dev/nvme1n1 $(uuidgen)
Изменит UUID раздела на только что сгенерированный утилитой uuidgen UUID
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Теперь запускаем parted и выполняем замену таблицы разделов на GPT

Код: Выделить всё

parted /dev/sda 
(parted) unit s 
(parted) print
(parted) mktable gpt
игнорируем сообщение о существовании разделов
i
Соглашаемся с потерей данных
yes
игнорируем ещё одно предупреждающее сообщение 
i
смотрим на результат
(parted) print
quit
выводим сохранённую информацию о разделах

Код: Выделить всё

cat part-mapMBR.dump
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 117231408s
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало    Конец       Размер      Тип      Файловая система  Флаги
 1     2048s     1050623s    1048576s    primary  xfs               загрузочный
 2     1050624s  117229567s  116178944s  primary                    lvm
Теперь создаём разделы с теми же параметрами, что были в таблицы MBR

Код: Выделить всё

parted /dev/sda
(parted) unit s 
Создаём структуру разделов заново, соблюдая размеры и типы из сохранённого дампа разделов
(parted) mkpart primary xfs 2048s 1050623s
игнорируем предупреждающее сообщение 
i
(parted) mkpart primary  1050624s 117229567s
(parted) set 2 lvm on
‘esp’ (MS-DOS, GPT) - this flag identifies a UEFI System Partition. On GPT it is an alias for boot.
(parted) set 1 esp on
(parted) q
Инициализируем таблицу разделов в системе

Код: Выделить всё

partprobe
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Переносим всю информацию с разделов boot, var и т. д. в корневую файловую систему. Поскольку нужно создавать раздел ESP, то от boot нужно избавляться
Запуститься с LiveCD и монтируем корень в каталог /mnt, а раздел с исходным boot в /media

Код: Выделить всё

cp -apx /media/* /mnt/boot
Переносим содержимое разделов var и другие (если есть) в соответствующие каталоги.
Монтируем корень в каталог /mnt, а раздел с исходным var в /media

Copy the data in var only to the new mounted filesystem:

Код: Выделить всё

cp -apx /media/* /mnt/var
Значение применяемых ключей
-a --archive
такой же как -dR --preserve=all
-p такой же как --preserve=mode,ownership,timestamps
-x --one-file-system
остаться в этой файловой системе
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


При наличии SWAP-раздела крайне желательно от него избавиться при необходимости можно создать SWAP-файл
Проверьте, сколько у вас в настоящее время места подкачки:

Код: Выделить всё

swapon -s
Создайте файл, который будет работать, как ваш файл подкачки. dd сделает это для нас (файл, состоящий из нулей будет иметь 4 ГБ).

Код: Выделить всё

dd if=/dev/zero of=/swap bs=1M count=4096
Меняем права:

Код: Выделить всё

chmod 600 /swap
И делаем из файла swap:

Код: Выделить всё

mkswap /swap
Активируем SWAP для системы:

Код: Выделить всё

swapon /swap
Почти готово. Теперь мы должны сделать изменения постоянными после перезагрузки. Итак, добавим это в fstab:

Код: Выделить всё

echo "/swap swap swap defaults 0 0" >> /etc/fstab
Убедитесь, что это сработало:

Код: Выделить всё

swapon -s
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


К этому моменту информация должна быть перенесена из раздела boot в каталог /boot и раздел boot должен быть удален. Создаём раздел ESP для хранения UEFI-загрузчиков.

Код: Выделить всё

(parted) mkpart ESP fat16 1MiB 512MiB
(parted) set 1 esp on
Рекомендуется сохранять размер ESP в 512 Мбайт, хотя меньшие/большие размеры тоже приветствуются.

Код: Выделить всё

mkfs.fat -F32 /dev/sda1
reboot
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Восстановление GRUB с LiveCD для UEFI

Создаем элемент загрузочного меню EFI с меткой Fedora

Код: Выделить всё

efibootmgr --create --disk /dev/sda --part 1 --label "Fedora" --loader \EFI\fedora\shimx64.efi
Или

Код: Выделить всё

efibootmgr -c -d /dev/sda -p 1 -L "Fedora" -l \EFI\fedora\shimx64.efi
Смотрим порядок EFI-загрузки

Код: Выделить всё

efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0005,0004,0002
Boot0002* Notebook Ethernet     BBS(128,,0x0)........................>..............................................
Boot0004* USB Hard Drive        BBS(HD,,0x500).......................................................................
Boot0005* Fedora        HD(1,GPT,a72a3c19-570a-447b-bd4e-3d319136b4dd,0x800,0x100000)/File(\EFI\fedora\shimx64.efi)
Меняем порядок загрузки с EFI-устройств

Код: Выделить всё

efibootmgr  0005,0004,0002
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0005,0004,0002
Boot0002* Notebook Ethernet
Boot0004* USB Hard Drive
Boot0005* Fedora

Код: Выделить всё

exit
umount -R /mnt
systemctl reboot
Ответить