Чи може GRUB2 ділитися системним розділом EFI з Windows?


30

У мене є існуюча установка GPT для Windows 7, яка вже має розділ системи EFI.

Зараз я намагаюся встановити Linux на окремому жорсткому диску, який також відформатований GPT. Я не знайшов жодного робочого способу отримати грудне завантаження без системного розділу EFI, тому моє питання таке:

Чи можливо grub2 використовувати той самий розділ системи EFI, що і Windows? Як сказати grub2 використовувати його?

Щоб уточнити налаштування:

gpt /dev/sda:
    1 EFI System partition created by windows (100MB)
    2 "Microsoft reserved partition" (200MB)
    3 Windows root (rest of disk)

gpt /dev/sdb:
    # After answering my own question: this partition is not needed
    1 boot partition containing grub, kernels etc.(32MB)
    2 crypto LVM partition (rest of disk)

Я хочу, щоб grub2 використовував існуючий /dev/sda1розділ EFI.

PS: Моя материнська плата здатна використовувати EFI.

Відповіді:


22

Після дня дослідження я зараз можу відповісти на власне запитання: так це можливо, і ви навіть можете використовувати цей розділ як / 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, їх варто прочитати:


Для мене (Fedora24) я поставив розділ windows 10 efi mount /dev/sdXX /boot/efi, а потім дотримувався цього і перебіг bcdedit /set {bootmgr} path \EFI\fedora\shim.efiз Windows на завантажувальний EFI.
jozxyqk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.