Для загрузки с gpt диска с помощью grub-pc вам надо создать пустой
раздел размером 1-2 МБ
тип BIOS Boot и устанавливать grub на весь диск, без этого современные
BIOS не грузятся
с gpt диска.
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 229375 225280 110M EFI System
/dev/sda3 229376 393365503 393136128 187,5G Linux filesystem
/dev/sda4 393365504 1172123534 778758031 371,3G Linux filesystem
Такая разбивка диска позволяет грузиться и с efi и с legacy bios (в
случае проблем).
Схема каталогов после монтирования меняться не должна, т.е.
--Создаете раздел---
update-initramfs -u -k all -t
tar -C /boot -cf /boot.tar *
mount /dev/disk/by-id/ata-Micron-partN /boot
tar -C /boot -xf /boot.tar
grub-install /dev/disk/by-id/ata-Micron
update-grub
umount /boot
19.03.2018 23:31, artiom пишет:
Поставил Stretch на шифрованный ZFS root, образующий зеркало на двух SSD.
На SSD GPT с тремя разделами типа 0x83: ext4 - /boot, luks1, luks2.
Всё более ли менее, но grub-pc не хочет грузиться с отдельного ext4
раздела ни в какую.
Делаю так:
- tar -C / -cf boot.tar
- Монтирую /dev/disk/by-id/ata-Micron-part1 в /boot
- tar -C -xf boot.tar
- update-initramfs -u -k all -t
- update-grub.
- Делаю grub-install /dev/disk/by-id/ata-Micron .
- umount /boot
Проходит, всё ok.
Перезагружаю - облом.
Чёрный экран, и мигает курсор: меню граба нет.
Вариант два:
- grub-install --boot-directory /
Вариант три:
- Монтирую /dev/disk/by-id/ata-Micron-part1 в /mnt
- mkdir /mnt/boot
- mount -bind /mnt/boot /boot
- Дальше всё тоже самое.
Не работает.
Самое смешное, что когда я ничего не монтирую, граб ругается на то, что
я хочу установить его для загрузки с шифрованного раздела и требует
установить опцию в /etc/default/grub.
После установки таковой, всё грузится, разблокируя _оба_ диска зеркала
на этапе запуска граба, запрашивая пароль, причём грузится с /boot на ZFS.
При этом, установка grub разрушает первый ext4 раздел.
Что для меня было открытием: grub может грузиться напрямую с
шифрованного раздела.
Но не работает загрузка с обычного ext4.
Что я делаю не так, по пунктам, и как это исправить?