1

У меня была идея преобразовать живую и работающую установку openSUSE из MBR в GPT/UEFI. Я следовал этому руководству и успешно конвертировал разделы хранения диска и связанные данные. Моя первоначальная настройка была следующей:

/dev/sda1 ext4 /boot
/dev/sda2 LVM
    /dev/root/root ext4 /
    /dev/root/home ext4 /home

Как я подозревал, после конвертации диска в GPT Linux не загружался. BIOS не показывал мне вариант MBR-загрузки Linux, который сейчас находится на GPT-диске. ОК, пришло время настроить grub2-efi .

Мне нужно установить grub2efi на раздел /dev/sda EFI размером 156 МБ. Во-первых, я преобразовал (читай «файлы с резервной копией, отформатированные и восстановленные файлы») /boot в VFAT, как того требует EFI. Я также дважды проверил, что тип раздела EFI Boot. Я запустил Live openSUSE, чтобы смонтировать & chroot в корневой раздел

# cryptsetup luksOpen /dev/sda2 root
# vgchange -a y suse
# mkdir /mnt/suse
# mount /dev/suse/root /mnt/suse
# mount /dev/suse/home /mnt/suse/home
# mount /dev/sda1 /mnt/suse/boot
# for i in /dev /dev/pts /sys /proc; do mount -B $i /mnt/suse$i; done
# chroot /mnt/suse

Я попытался с конфигурацией загрузчика YaST, а затем с grub2-efi-install но результат всегда следующий: когда я загружаю EFI в Linux, я получаю консоль спасения GRUB с ошибкой "неизвестная файловая система".

Моя текущая настройка раздела следующая

/dev/sda1 vfat /boot #only this changed
/dev/sda2 LVM
    /dev/root/root ext4 /
    /dev/root/home ext4 /home

Вопрос прост: как заставить grub загружать зашифрованный системный раздел?

1 ответ1

1

Нашел решение: разделить /boot в два

  1. Резервное копирование всех /boot файлов
  2. Удален раздел /dev/sda1 (в моем случае это было 156 МБ)
  3. Создан новый меньший раздел /dev/sda1 с типом загрузочного раздела EFI, отформатированный с помощью VFAT, смонтированный в /boot /efi, размером 50 МБ в моем случае
  4. Создан новый /dev/sda5 (YaST присвоил мне этот номер, это должен быть sda2) раздел между только что созданным /boot/efi и системным разделом, смонтированный как /boot и отформатированный ext4
  5. Восстановленные /boot файлы из резервной копии
  6. Настроил grub для возобновления с sda5 вместо sda2
  7. mkinitrd и grub2-efi-install
  8. Rebooted

Теперь у меня есть почти идеально работающий ноутбук с полной UEFI (Windows уже загружена из UEFI). Почти потому, что у grub отсутствует тема.

Пояснение: почему отдельные разделы?

UEFI и GRUB очень строги: незашифрованный раздел EFI необходим для загрузки GRUB, загрузчика, в память.

Если бы у меня не было зашифрованного системного тома, я мог бы легко пропустить вторую часть. Но раздел EFI содержит только загрузчик, который отличается от ядра. Чтобы загрузить ядро, нам нужен незашифрованный, другой незашифрованный раздел, содержащий файл initrd который загружается grub.

Концепция проста: grub запускается из раздела EFI и сразу ищет initrd в разделе /boot , который в итоге обнаруживает, что системный том зашифрован, и запрашивает ключ (и)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .