Convert MBR to GPT.

Установка, настройка, эксплуатация.

Модератор: sergey

Convert MBR to GPT.

Сообщение sergey » 18 июл 2018, 12:04

Оглавление


Темы
 Постановка задачи 
 Сбор информации о разметке диска 
 Конвертация MBR в GPT 
 Перенос информации 
 SWAP-файл 
 Раздел ESP 
 Установка загрузчика GRUB 
Дополнительные материалы
Перенос системы на другой диск (rsync)
Перенос системы на другой диск (xfs_copy)
XFS: Файловая система


 Постановка задачи 
Преобразовать таблицу разделов из MBR в GPT без потери данных. А так же, по возможности не прибегая к переносу данных на иные носители.


 Сбор информации о разметке диска 
просматриваем структуру разделов на диске с которым хотим провести процедуру конвертации
Код: выделить все
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



 Конвертация MBR в GPT 
Теперь запускаем 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



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


Переносим содержимое разделов 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
остаться в этой файловой системе



 SWAP-файл 
При наличии 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



 Раздел ESP 
К этому моменту информация должна быть перенесена из раздела boot в каталог /boot и раздел boot должен быть удален. Создаём раздел ESP для хранения UEFI-загрузчиков.
Код: выделить все
(parted) mkpart ESP fat16 1MiB 512MiB
(parted) set 1 esp on

Рекомендуется сохранять размер ESP в 512 Мбайт, хотя меньшие/большие размеры тоже приветствуются.
Код: выделить все
mkfs.fat -F32 /dev/sda1
reboot



 Установка загрузчика GRUB 
Запуск системы с носителя необходимо производить в режиме UEFI
Код: выделить все
mount /dev/mapper/fedora-root /mnt/
mount /dev/mapper/fedora-home /mnt/home
mount /dev/sda1 /mnt/boot/efi/

Подготавливаем запущенную систему к chroot, пробрасывая файловые системы устройств и т. д. в смонтированную файловую систему подопытной операционной системы
Код: выделить все
mount -t proc /proc /mnt/proc
mount -R /dev /mnt/dev
mount --make-rslave /mnt/dev
mount -R /sys /mnt/sys
mount --make-rslave /mnt/sys
mount -R /run /mnt/run
mount --make-rslave /mnt/run
chroot /mnt /bin/bash



Установка загрузчика
Код: выделить все
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub2 --recheck

Создаем элемент загрузочного меню EFI с меткой Grub2
Код: выделить все
efibootmgr --create --disk /dev/sda --part 1 --label "Grub2" --loader \\EFI\\grub2\\grubx64.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



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

Номер Начало Конец Размер Файловая система Имя Флаги
1 2048s 411647s 409600s fat16 EFI System Partition загрузочный, esp
2 411648s 1435647s 1024000s xfs
3 1435648s 67106815s 65671168s lvm


Номер Начало Конец Размер Файловая система Имя Флаги
1 1049kB 211MB 210MB fat16 EFI System Partition загрузочный, esp
2 211MB 735MB 524MB xfs
3 735MB 34,4GB 33,6GB
============================================================
Переустанавливаем компоненты grub2-efi shim
dnf reinstall grub2-efi-x64 shim-x64
Если нужны дополнительные модули для grub то устанавливаем
dnf install grub2-efi-x64-modules (При необходимости)
Инсталлируем загрузчик граб
grub2-install /dev/sdX
обновляем конфигурацию загрузочного меню grub
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Пересобираем initramfs
dracut /boot/initramfs-$(uname -r).img $(uname -r) --force
==================================================================
mount /dev/fedora/root mnt/
mount /dev/sda2 mnt/boot
mount /dev/sda1 mnt/boot/efi
mount -B /dev mnt/dev
mount -B /proc mnt/proc
mount -B /sys mnt/sys
mount -B /run mnt/run
chroot mnt/
ls /boot
# глядим последнюю версию ядра
KERNELVER=4.16.15-300.fc28.x86_64 #Например
dracut --force --kver "${KERNELVER}" --kernel-image "/boot/vmlinuz-${KERNELVER}" --fstab /boot/initramfs-${KERNELVER}.img
grub2-mkconfig -o '/boot/efi/EFI/fedora/grub.cfg'
exit
umount mnt/* mnt
systemctl reboot
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
sergey
Администратор
 
Сообщений: 132
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron