Після дня дослідження я зараз можу відповісти на власне запитання: так це можливо, і ви навіть можете використовувати цей розділ як / boot та зберігати ваші ядра / initramfs / тощо. там.
Вимоги:
- Grub> = 2,00 (1,98 і 1,99 не працюють)
- Grub повинен бути встановлений з ядра Linux, що має підтримку змінних EFI (
CONFIG_EFI_VARS
компільований у або як модуль efivars
)
- Для створення запису для завантаження EFI вам знадобиться
efibootmgr
Налаштування:
Спочатку встановіть свій EFI-розділ до / завантаження
mount /dev/sdX1 /boot
Якщо ви подивитесь на запис для монтування, то побачите, що це просто розділ 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
щоб вказувати кількість прочитаних секторів, вам потрібно буде встановити шлях до завантажувача Windows EFI у розділі 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.