Может ли GRUB2 совместно использовать системный раздел EFI с Windows?


30

У меня есть установленная Windows 7 GPT, в которой уже есть системный раздел EFI.

Я сейчас пытаюсь установить Linux на отдельный жесткий диск, который также отформатирован в GPT. Я не нашел никакого рабочего способа загрузить grub без системного раздела EFI, поэтому мой вопрос:

Возможно ли для grub2 использовать тот же системный раздел EFI, что и для окон? Как мне сказать 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 / 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, их стоит прочитать:


Для меня (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.