web-dev-qa-db-fra.com

GRUB2 peut-il partager la partition système EFI avec Windows?

J'ai une installation Windows 7 GPT existante, qui dispose déjà d'une partition système EFI.

J'essaie maintenant d'installer un Linux sur un disque dur séparé, qui est également formaté de GPT. Je n'ai trouvé aucun moyen de travail pour obtenir le démarrage à Grub sans partition système EFI, alors ma question est la suivante:

Est-il possible pour Grub2 d'utiliser la même partition système EFI comme Windows? Comment puis-je dire à Grub2 de l'utiliser?

Pour clarifier ma configuration:

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)

Je veux que GRUB2 utilise l'existant /dev/sda1 Partition EFI.

PS: Ma carte mère est capable d'EFI.

31
crater2150

Après une journée de recherche, je peux désormais répondre à ma propre question: oui, il est possible, et vous pouvez même utiliser cette partition comme/Boot et stocker vos noyaux/initramfs/etc. là.

Conditions:

  • Grub> = 2,00 (1,98 et 1,99 ne fonctionne pas)
  • Grub doit être installé à partir d'un noyau Linux, qui prend en charge les variables EFI (CONFIG_EFI_VARS compilé dans ou comme module efivars)
  • Pour créer l'entrée de démarrage EFI, vous aurez besoin de efibootmgr

Installer:

Premier monter votre partition EFI à/démarrer

mount /dev/sdX1 /boot

Si vous regardez l'entrée du montage, vous verrez que c'est simplement une partition grasse (32). Sous /boot Vous devriez trouver un répertoire efi.

Comme la grub appelle efibootmgr, vous devez charger evivars, s'il n'est pas compilé dans le noyau:

modprobe efivars

Maintenant, vous pouvez installer Grub:

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

Grub installe ses fichiers comme d'habitude à /boot/grub2. Si tout fonctionnait correctement, vous devez maintenant avoir un dossier /boot/efi/grub2 ou /boot/efi/<name_of_your_distro>. Avec --bootloader-id=insert_name_here Vous pouvez également spécifier le nom pour le dossier vous-même.

APPELS DE GRUB efibootmgr automatiquement et crée une entrée de démarrage avec ce nom dans le menu de démarrage EFI (dans mon boîtier, cela signifie qu'il apparaît comme un périphérique amorçable dans le menu EFI, je ne sais pas si ceci est le cas sur chaque Board EFI)

Une configuration supplémentaire ne diffère pas de la configuration de GRUB2 habituelle, grub2-mkconfig ajoutera les modules appropriés pour l'EFI à votre grub.cfg.

Fenêtres de chargement:

Comme je lui ai demandé une double démarrage avec Windows, je comprendra la configuration de GRUB pour la chaîne de chargement:

Chainloading Une installation Windows sur EFI est légèrement différente de celle sur un disque MBR. Vous n'aurez pas besoin de ntfs ou part_mbr modules, à la place fat et part_gpt sont nécessaires.

En outre, la racine de réglage n'est pas requise, ces informations sont stockées par le gestionnaire de démarrage de Windows. Spécifiez plutôt la commande search. Les paramètres nécessaires pour cela peuvent être déterminés par

grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

Cela vous donnera les paramètres de recherche spécifiant l'emplacement de la partition EFI, il devrait ressembler à quelque chose comme:

--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28

Au lieu de dire chainloader, le nombre de secteurs à lire, vous devez définir le chemin d'accès au chargeur EFI de Windows dans la partition EFI. C'est la même chose pour toutes les installations Windows EFI. L'entrée résultante devrait ressembler à ceci:

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
}

Sources: Celles-ci couvrent d'autres cas, si vous souhaitez démarrer d'EFI, ils valent la peine de lire:

24
crater2150