После дня исследований я теперь могу ответить на свой вопрос: да, это возможно, и вы даже можете использовать этот раздел в качестве / boot и хранить ваши ядра / initramfs / etc. там.
Требования:
- Grub> = 2,00 (1,98 и 1,99 не работают)
- Grub должен быть установлен из ядра Linux, которое поддерживает переменные EFI (
CONFIG_EFI_VARS
скомпилированные в модуле или в виде модуля efivars
)
- Для создания загрузочной записи EFI вам понадобится
efibootmgr
Настроить:
Сначала смонтируйте раздел EFI в / boot
mount /dev/sdX1 /boot
Если вы посмотрите на запись mount, вы увидите, что это просто раздел FAT (32). Под /boot
вами должен найти каталог efi
.
Как вызовет grub efibootmgr
, вы должны загрузить evivars
, если он не скомпилирован в ядро:
modprobe efivars
Теперь вы можете установить grub:
# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grub устанавливает свои файлы как обычно /boot/grub2
. Если все работает правильно, теперь у вас также должна быть папка /boot/efi/grub2
или /boot/efi/your_distros_name
. С помощью --bootloader-id=isert_name_here
вы также можете указать имя папки самостоятельно.
Grub вызывает efibootmgr
автоматически и создает загрузочную запись с таким именем в загрузочном меню EFI (в моем случае это означает, что оно отображается как загрузочное устройство в меню EFI, но не уверен, что так на каждой плате EFI)
Дальнейшая настройка не отличается от обычной настройки grub2, grub2-mkconfig
добавит соответствующие модули для EFI к вам grub.cfg
.
Цепная загрузка Windows:
Поскольку я попросил двойную загрузку с Windows, я включу конфигурацию grub для его загрузки по цепочке:
Цепная загрузка установки Windows на EFI немного отличается от установки на диске MBR. Вам не понадобятся модули ntfs
или part_mbr
, вместо этого fat
и part_gpt
необходимы.
Кроме того, установка root не требуется, эта информация хранится в собственном загрузочном менеджере Windows. Вместо этого укажите search
команду. Параметры, необходимые для этого, могут быть определены
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Это даст вам параметры для поиска, указывающие местоположение раздела EFI, это должно выглядеть примерно так:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
Вместо того, чтобы указывать chainloader
количество секторов для чтения, вам нужно будет указать путь к загрузчику EFI Windows в разделе EFI. Это одинаково для всех установок Windows EFI. Результирующая запись должна выглядеть так:
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Источники: они охватывают еще несколько случаев, если вы хотите загрузиться с EFI, их стоит прочитать:
mount /dev/sdXX /boot/efi
, затем последовал этому и побежалbcdedit /set {bootmgr} path \EFI\fedora\shim.efi
из windows в начальную загрузку EFI.