EFI variables non supportées / GRUB

Bonsoir,

$ uname -a
Linux mac13 3.16.0-4-amd64 #1 SMP Debian 3.16.51-3 (2017-12-13) x86_64 GNU/Linux

Je n’arrive pas à installer grub sur ma machine.
La commande

# grub-install --target=x86_64-efi /dev/sda1

me retourne :

efibootmgr: EFI variables are not supported on this system.
efibootmgr: EFI variables are not supported on this system.
Installation terminée, sans erreur.

C’est avant tout et également ce que retourne

# efibootmgr -v

Ma configuration :

# lsblk
sda       8:0    0 465,8G  0 disk 
├─sda1    8:1    0   200M  0 part /boot/efi
├─sda2    8:2    0    50G  0 part 
├─sda3    8:3    0    60G  0 part 
├─sda4    8:4    0  59,5G  0 part 
├─sda5    8:5    0 619,9M  0 part 
├─sda6    8:6    0  59,4G  0 part 
├─sda7    8:7    0 619,9M  0 part 
├─sda8    8:8    0  18,6G  0 part /
├─sda9    8:9    0 192,8G  0 part /home
└─sda10   8:10   0   4,7G  0 part [SWAP]

Les autres partitions contiennent d’autres OS (Mac OSX et Windows 7 sur lesquels j’ai des droits). Mes recherches indiquent que le problème viendrait de l’installation du windows, celui-ci aurait “perturbé” mon efi.
Je cite (traduit en français) https://wiki.archlinux.org/index.php/GRUB/EFI_examples#ux32vd :

Mais je ne trouve pas shellx64.efi, ce qui est sans doute normal puisque Debian n’est pas Arch Linux (ce me semble en tout cas…)

Les autre solutions proposées que l’on trouve sur le web n’expliquent rien. Exemple ici, avec une manipulation qui intervient au dernier message et qui résout le problème mais sans en expliquer l’origine. C’est en tout cas ce que j’ai compris. (https://bbs.archlinux.org/viewtopic.php?id=223874).

Mes paquets grub :

- os-prober
- grub-efi-amd64 
- grub-common
- grub2-common
- grub-efi-amd64-bin

Pour ne pas changer, il s’agit de GPT et MBR hybride :

# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Et, bien entendu, il s’agit d’un mac (macbookpro 13 pouces de 2008).

Je me suis demandé, considérant que ce macbook date de 2008, si l’amorcage se faisait bien par efi chez Apple à cette époque (ce qui me semblait avoir toujours été le cas mais je pouvais me tromper) et voici ce que j’ai trouvé sur wikipédia :

Je continue à chercher,

Je vous remercie de m’avoir lu,

Si jamais une idée passait par la…

Merci à tous.

La formulation n’est peut-être pas très claire ; elle signifie copier grubx64.efi en tant que shellx64.efi.

Comment as-tu installé ce système Debian ?

Une installation réseau gravée sur un cd-rom. Ce support m’a déjà permis de faire fonctionner de multiple Jessie sans problème. A priori et selon mon expérience, il est parfaitement fonctionnel.

Et comment démarres-tu ce système ? Apparemment il démarre en mode BIOS alors qu’il a été installé en mode EFI, ce qui semble paradoxal.

D’aprés https://wiki.debian-fr.xyz/Debian_%26_UEFI, il faut un:
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
Bon, mais sauf que chez moi, je n’ai aucun /boot/efi/EFI/boot/.
Mais bon, si l’info peut aider.

Au démarrage de la machine, c’est le dernier système mac à avoir été installé qui prend la main selon la procédure “naturelle” de ce matériel. Avec la touche alt au demarrage je peux accéder aux autres os mac et à W7, mais pas à Debian. Pour ce faire je dois passer par un grub sur cd sur lequel je boot : https://www.supergrubdisk.org/super-grub2-disk/

Je n’ai pas non plus. Je regarde le wiki à ce sujet.

Il y a peut-être un détail à prendre en compte. A l’issue de l’installation de Jessie, fstab ne contenait pas la ligne permettant de monter sda1 au démarrage. J’ai dû la rajouter manuellement. Si l’installeur de Jessie ne l’a pas fait, c’est peut-être dû à mon MBR hybride. Si je le rétabli en MBR protective avec gdisk, je sais déjà que je ne pourrais pas plus booter sur W7. En l’occurence, l’idée est d’avoir un bootloader pour accéder aux os qui se portent tous très bien.

Je pense de plus en plus que ça vient de Windows et de mon MBR hybride.

La seule fois où j’ai eu cette situation, c’était précisement lorsque j’avais voulu faire la même manipulation, c’est-à-dire faire cohabiter les trois OS, mais cette fois en ayant utilisé Windows XP 64 bits seule version capable de lire du GPT. Le sujet « Grub, efi et windows XP 64 bits » datée de juin 2017 (Grub, efi et windows XP 64 bits) présente quelques symptômes identiques :

  1. Les os étaient tous fonctionnels et l’installeur de Jessie n’avait pas pu installer grub et inclure sda1 dans le fstab.
  2. @PascalHambourg, tu t’étais étonné à juste titre de la présence fonctionnelle des trois os, cela rendu possible par un MBR hybride, comme c’est le cas ici.

La seule différence vient de ceci que j’avais un grub parfaitement fonctionnel à ceci près qu’il ne me permettait pas de booter sur Windows XP : incapacité tout à fait logique puisque savoir lire du GPT ne signifie pas pouvoir être amorcé par efi, et XP 64 bits contenait bien les fichiers ntldr d’amorçage classique par bios et non ceux par efi.

La situation, si elle est analogue, demeure néanmoins différente en ceci qu’il ne s’agit plus de Windows XP 64 bits mais de Windows 7 dont il me semble bien qu’il est amorçable en mode efi.

Je ne veux pas enfoncer une porte ouverte mais c’est toujours windows qui pose problème. Linux et mac OSX se marient très bien ensemble et sans même avoir besoin de pilotes additionnels (ou très peu, dans 75% des cas selon mon expérience, c’est-à-dire avec ce que j’ai concrètement testé, 3 mac 4, deux 13 pouces et deux 15 pouces). Tout devient franchement plus compliqué dès qu’il y a Windows…

Il suffit de créer ce répertoire.
Attention, ne pas confondre le shell EFI shell<arch>.efi et le chargeur d’amorçage EFI par défaut boot<arch>.efi.

Note : on peut aussi installer GRUB EFI dans l’emplacement du chargeur EFI par défaut avec la commande suivante :

grub-install --target=x86_64-efi --removable

Cela peut expliquer pourquoi les variables EFI ne sont pas disponibles, si le CD a été amorcé en mode legacy (émulation BIOS). N’est-il pas possible d’amorcer ce CD en mode EFI natif ? Ou un système live sur clé USB ?

Donc a priori l’installateur Debian n’avait pas été amorcé en mode EFI non plus, sinon il aurait utilisé automatiquement la partition EFI existante et pérennisé son montage dans /etc/fstab. Du coup se pose la question : pourquoi grub-efi est-il installé au lieu de grub-pc ?

Pour quoi faire ?

Cela m’étonnerait, mais pourquoi pas.

J’en déduis que Windows est installé pour démarrer en mode legacy, ce qui impose qu’il voie une table de partition au format DOS, d’où le MBR hybride quand une table de partition GPT existe déjà.

1 J'aime

Je vais voir ça.

Au démarrage du mac, je n’ai la main sur rien pour ainsi dire… Soit je le laisse bosser tout seul et il boot sur un OS X, soit je lui demande de m’afficher l’ensemble des volumes bootables, partitions et cd.

Maintenant que tu me poses cette question, je me rends compte de quelque chose : lorsqu’un cd est inséré, le mac me propose toujours deux modes, le mode “efi boot” et le mode “windows” pour le même cd. J’ai installé windows avec le mode “Windows” qui si mon raisonnement est correct correspond au mode de compatibilité BIOS. Je l’ai fais parce que je n’arrivais pas à monter le cd avec le mode “EFI boot”.

Par habitude, par expérience et sûrement un peu par bêtise, il est très très possible que j’ai amorcé l’installeur de Jessie en mode BIOS.

Parce que j’ai viré GRUB-PC. Ça fait parti de la manipulation que j’effectue toujours lorsque j’ai une configuration similaire. Sur mac, il y a un efi, et je mets un GRUB-EFI. Je suis quasiment certain que c’est une bonne chose, c’est sans doute plus mon ignorance qui est en cause dans ce dysfonctionnement de grub car elle m’a fait faire des choses incohérentes lors de l’amorçage des installeurs.

Et bien oui, du coup mon raisonnement ne tient plus…

L’installeur de Windows n’a pas voulu s’amorcer complètement en mode “efi boot”. J’ai donc été forcé de le booter avec le mode de compatibilité BIOS (=mode legacy ?).

Important : Je viens de booter sur linux avec le grub-cd mais en l’amorcant par le mode “efi-boot” cette fois. Je n’ai désormais plus d’erreur concernant les variables de Grub en retour de la commande # grub-install --target=x86_64-efi /dev/sda1.

Mais je vois venir le problème suivant : Il n’y a plus les erreurs, donc grub doit être fonctionnel désormais. Il va me suiffire de créer moi-même les entrés mac et j’aurais tout mes OS bootables sauf… Windows 7. Puisque celui-ci a été installé en mode compatibilité BIOS sans que j’ai vraiment eu le choix (quoi que j’aurais pu persévérer en redémarrant et tentant plusieurs fois d’amorcer l’installeur avec le mode “efi-boot”) je vais peut-être rencontrer de sérieuses difficultés pour le rendre bootable par une entrée grub(-efi), si tant est que cela soit possible.

# efibootmgr -v 
BootCurrent: 0000
BootOrder: 0000,0080
Boot0000* debian        HD(1,28,64000,d1325e45-9e4a-45ee-a945-0631012f7188)File(\EFI\debian\grubx64.efi)
Boot0080* Mac OS X      ACPI(a0341d0,0)PCI(b,0)SATA(0,0,0)HD(6,154e4800,76ca0d8,d0f5d812-cf35-4d01-b3d6-d0b04d26f551)
Boot0082*       ACPI(a0341d0,0)PCI(b,0)SATA(0,0,0)HD(6,154e4800,76ca0d8,d0f5d812-cf35-4d01-b3d6-d0b04d26f551)
BootFFFF*       ACPI(a0341d0,0)PCI(4,1)USB(0,0)HD(3,5e5,1397,None)File(\System\Library\CoreServices\boot.efi)

J’ai un total de cinq OS sur cette machine, trois mac OS X, le W7 et Jessie. Je ne suis pas inquiet pour les macs mais je ne vois pas le Windows 7.

Je confirme : J’ai une entrée de Windows 7 mais non fonctionnelle.

J’ai créé les entrés mac OSX et mon grub est complètement fonctionnel. Du coup, le problème posé par ce sujet est résolu. Une mauvaise compréhension et de fait une mauvaise utilisation de l’EFI du mac, notamment par le mode de compatibilité BIOS ont créé ce problème.

Merci à tous.

Reste une question : Wndows 7 est-il capable de s’amorcer en mode EFI alors qu’il a été installé par un support amorcé via le mode de compatibilité BIOS ? Et donc, puis-je simplement créer une entrée grub pour l’amorcer ou dois-je le réinstaller en forçant l’installeur à s’amorcer en mode EFI ?

Comme quoi ça aide de poser les bonnes questions.

Note que

  • si le système a été amorcé en mode EFI, l’option --target est facultative puisque par défaut grub-install installera la variante de GRUB pour la cible détectée

  • le paramètre spécifiant le périphérique, ici /dev/sda1, est ignoré lors de l’installation du chargeur GRUB EFI car ce dernier est implicitement installé dans la partition EFI montée sur /boot/efi (ou autre répertoire spécifié par l’option --efi-directory)

Dans le menu de GRUB ? Elle a été créée par update-grub lorsqu’il a été exécuté en mode BIOS/legacy. Si tu l’exécutes à nouveau, cette entrée devrait disparaître.

Non, pas à ma connaissance. Mais il est vrai que je connais très mal Windows. Du coup impossible de le lancer depuis GRUB EFI.
Windows 7 peut être installé en mode EFI, mais il faut que ce soit une version 64 bits pour fonctionner avec un firmware UEFI 64 bits.

1 J'aime

C’est tout à fait ça :grinning:
Ok, je comprends mieux, merci pour les infos.

Pourtant, une recherche à la racine de la partition Windows 7 me ressort entre autres choses ceci :

# find -type f -name "*.efi"
./Windows/Boot/EFI/bootmgfw.efi
./Windows/Boot/EFI/bootmgr.efi
./Windows/Boot/EFI/memtest.efi
./Windows/System32/Boot/winload.efi
./Windows/System32/Boot/winresume.efi
./Windows/System32/winload.efi
./Windows/System32/winresume.efi

La présence de nombreux fichiers *.efi n’indique-t-elle pas que l’amorcage EFI serait possible ?
Je suis entrain de tester ces fichiers afin de trouver celui qui permet de booter Windows 7. Pour l’instant bootmgr.efi n’a pas fonctionné.

Cet UUID te parait-il d’un format correct (pour une partition NTFS) : 24877E4763D63986 ?

Possible si Windows avait été installé en ce sens. Mais ces fichiers ne sont pas suffisants, vu tout le bazar qu’il y a dans le répertoire Microsoft de la partition EFI après l’installation de Windows en mode EFI. D’autre part, pour s’installer en mode EFI, Windows exige que le disque système soit au format GPT. J’ignore si c’est uniquement une exigence de l’installateur ou bien aussi du Windows installé.

Oui. Un identifiant de 64 bits en hexadécimal.

Ok. Merci. Effectivement, si je veux l’amorcer en mode EFI et non en mode legacy, il faut que je m’oriente vers la version 64 bits. Je vais réfléchir, ça me plairait bien mais ce serait du vernis quasiment futile. Après tout, mon W7 est fonctionnel. Je ne peux simplement pas y accéder par Grub mais juste par le mode legacy.

Merci.