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

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

Я теперь пытаюсь установить Linux на отдельном жестком диске, который является также отформатированным GPT. Я не нашел, что любой прокладывающий себе путь получил личинку, загружающуюся без системного раздела 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.

31
27.09.2012, 09:35
1 ответ

После дня исследования я могу теперь ответить на свой собственный Вопрос: да это возможно, и можно даже использовать тот раздел, поскольку / загружают и хранят kernels/initramfs/etc. там.

Требования:

  • Личинка> = 2.00 (1.98 и 1.99 не работают),
  • Личинка должна быть установлена от ядра Linux, которое имеет поддержку переменных EFI (CONFIG_EFI_VARS скомпилированный в или как модуль efivars)
  • Для создания записи загрузки EFI Вам будет нужно efibootmgr

Установка:

Сначала смонтируйте свой раздел EFI к начальной загрузке /

mount /dev/sdX1 /boot

При рассмотрении записи монтирования Вы будете видеть, что это - просто FAT (32) раздел. Под /boot необходимо найти каталог efi.

Поскольку личинка будет звонить efibootmgr, необходимо загрузиться evivars, если это не компилируется в ядро:

modprobe efivars

Теперь можно установить личинку:

# Replace x86_64 with i386 for 32 bit installations
grub2-install --target=x86_64-efi

Личинка устанавливает свои файлы, как обычно, на /boot/grub2. Если бы все работало правильно, то у Вас должна теперь также быть папка /boot/efi/grub2 или /boot/efi/<name_of_your_distro>. С --bootloader-id=insert_name_here можно также указать название папки сами.

Вызовы личинки efibootmgr автоматически и создает запись загрузки с тем именем в меню начальной загрузки EFI (в моем случае, который означает, что это обнаруживается как загрузочное устройство в меню EFI, не уверенном, если это верно, в каждой плате EFI),

Дальнейшая установка не отличается от обычной установки grub2, grub2-mkconfig добавят соответствующие модули для EFI к Вашему grub.cfg.

Windows Chainloading:

Как я попросил двойную загрузку с Windows, я буду включать конфигурацию личинки для chainloading он:

Chainloading установка Windows на EFI немного отличается от одного на диске MBR. Вам не будет нужно ntfs или part_mbr модули, вместо этого fat и part_gpt необходимы.

Кроме того, установка корня не требуется, эта информация хранится собственным диспетчером начальной загрузки 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, их стоит считать:

24
27.01.2020, 19:38

Теги

Похожие вопросы