59 votes

Comment réinstaller GRUB2 EFI ?

Après avoir réussi à mettre à jour mon bios, quelque chose a mal tourné et je me suis retrouvé avec un curseur clignotant dans le coin supérieur gauche d'un écran noir. Aucune erreur, rien. Le bios ne listait plus qu'un SATA: <disc name> à la place de l'option de démarrage habituelle de l'UEFI ubuntu un. J'utilise un schéma de partitionnement GPT.

J'ai finalement trouvé que la solution était de réinstaller correctement grub-efi-amd64 . Alors, comment dois-je faire ?

PS : En fait, j'ai réussi à réinstaller GRUB2 EFI par moi-même et je vais poster ma réponse ici car je n'ai pas réussi à trouver un mode d'emploi complet à ce sujet.

95voto

Igor Katson Points 904
  • Démarrez votre ordinateur à l'aide d'une clé USB ou d'un CD. en mode UEFI . J'avais deux options de démarrage <flash_drive> y UEFI: <flash_drive> le second est nécessaire pour exposer les variables efi dans le fichier /sys/firmware/efi/ de sorte que efibootmgr n'échouez pas par la suite. Le démarrage avec la première option me donne l'erreur suivante :

    Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
    Try 'modprobe efivars' as root.

    modprobe efivars n'a pas fonctionné pour moi.

  • chroot dans le système brisé (similaire au aide ubuntu grub2 mais avec des spécificités efi) :

    sudo mount /dev/sda2 /mnt #sda2 is the root partition
    sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
    modprobe efivars # make sure this is loaded
    sudo chroot /mnt
  • En fonction de votre distribution linux, vous faites maintenant différentes choses.

    • Pour Ubuntu/Debian :

      apt-get install --reinstall grub-efi-amd64

      ou alternativement :

      apt-get install --reinstall grub-efi
      update-grub

      si l'opération ci-dessus vous donne un Grub, mais pas un bootable

    • Pour Fedora (jusqu'à 16, peut fonctionner pour d'autres) :

      yum reinstall grub-efi

      Dans la commande suivante, vous devez remplacer sdX par le périphérique qui a la partition partition EFI à partir de laquelle vous voulez démarrer. Dans --part Y vous devez remplacer le Y avec le numéro de la partition EFI (comme dans /dev/sdXY ).

      efibootmgr -c --disk /dev/sdX --part Y
      efibootmgr -v # verify a new record called Linux is there
  • Tapez maintenant Ctrl+D pour quitter le chroot, tout démonter et redémarrer :

    for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
    sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
    sudo umount /mnt
    sudo reboot

Vous devrez peut-être l'adapter à vos besoins (table de partition différente, partition /boot séparée, etc.) et ce n'est peut-être pas la seule option, mais cela a très bien fonctionné pour moi.

Un système en direct approprié pour réparer les choses est grml . Il existe également un guide exhaustif sur la façon de configurer un périphérique USB amorçable, dont la section Mac est la plus utile en fait (il suffit de créer une partition FAT32, copier les fichiers, redémarrer, c'est fait).

9voto

Comme une simplification potentielle de la première méthode, il est possible de démarrer directement dans le système sur le disque dur, en utilisant seulement Grub du live CD. Testé sur xubuntu 13.10 avec le live CD xubuntu 13.10.

Assurez-vous que Secure Boot est désactivé dans votre BIOS. Insérez le CD live et démarrez-le via UEFI. Le menu Grub du CD s'affiche. Appuyez sur "c" pour accéder à la ligne de commande.

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

Adaptez la commande Grub ci-dessus si vous avez une partition système EFI différente.

Après que votre système ait démarré sur le disque dur, il devrait suffire de réinstaller Grub sur la partition système EFI et de l'enregistrer avec le firmware via Grub-install.

sudo grub-install

5voto

Protector one Points 1546

Comme pour Maxine, j'ai constaté que mes paramètres UEFI dans le BIOS étaient endommagés et que ma machine ne démarrait pas.

Dans mon cas, c'est un Lenovo ThinkServer RD430 avec Linux Mint Debian et il semblait tout ce qui est Je ferais à peu près update-Grub ou le changement d'un disque dur dans le serveur causerait le non démarrage. Le système d'exploitation dans mon cas est linuxmint-201403-mate-dvd-64bit installé via USB. (voir ci-dessous pour une description complète des événements qui feraient que l'UEFI ne fonctionne pas)

En suivant exactement les mêmes étapes sur un ThinkServer TS140, l'UEFI n'a pas perdu la tête une seule fois. J'ai regardé la page des pilotes du RD430 et mon bios est vieux de deux versions. Je n'ai jamais eu à mettre à jour le bios d'une carte mère auparavant, donc je ne suis pas du genre à mettre à jour automatiquement quand il y a de nouvelles versions disponibles. Après avoir mis à jour le bios, la réponse de Maxine ci-dessus a fonctionné, mais avec un petit détail...

# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian    HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell  Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / # 

El efibootmgr -c a ajouté deux entrées 0000 y 0002 !
Le site Boot0002* Linux HD entrée en premier dans l'ordre de démarrage n'est pas correct .
Le site 0000 entrée est correct.

Pour tester cela, j'ai essayé de démarrer sans aucune interruption, ce qui est le cas. 0002 entrée. Comme prévu, ça n'a pas marché. J'ai donc redémarré le serveur, appuyé sur F12, et choisi linuxmint . Comme prévu, il a démarré sur mon installation LMDE.

Le moyen de supprimer les entrées indésirables via efibootmgr est le suivant :

# efibootmgr -b 2 -B

J'ai utilisé cette commande pour supprimer les entrées 0001 y 0002 . Option 0001 provenait de la dernière de mes nombreuses tentatives de récupération de l'OS.


Notes sur l'UEFI

Si vous lisez ceci et êtes aussi frustré par l'UEFI que je le suis/étais, voici quelques notes et ressources :
"Démarrer avec un Shell UEFI revient à utiliser un Shell DOS.
"Intel a fait un Manuel de référence PDF pour efi Shell.
"Lenovo Document UEFI_sur_TS430 est la seule ressource que j'ai vue expliquant l'utilisation de efi Shell.
" Une autre référence uefi Shell de Guide de l'administrateur de nPartition .
"Vous pouvez essayer de démarrer sur une partition à partir de l'efi Shell en naviguant vers le chargeur et en l'exécutant.
"UEFI veut que le disque ait une table de partition GPT, pas une table de partition msdos.
"UEFI veut que la première partition de votre disque soit formatée en fat32 ou vfat.
" Pour un démarrage " générique ", il doit y avoir une /EFI/boot à la racine avec bootx64.efi en elle.
"Certaines personnes copient leur grubx64.efi de l'endroit où il a été installé à /EFI/boot/bootx64.efi et cette tricherie a fonctionné pour eux.
" Chaque fois que vous faites des changements Grub, utilisez efibootmgr -v avant et après pour s'assurer que votre redémarrage est correct.


Mon expérience du RD430

J'ai réinstallé le système d'exploitation plus de 10 fois au cours de la semaine dernière pour essayer de résoudre ce problème et de configurer le serveur. Ma configuration est un SSD sur ce contrôleur RAID dans le slot PCIe 2.0 avec LMDE installé dessus. AOC-S3008L-L8i Contrôleur RAID ( recalculé en mode IT ) dans le 2ème emplacement PCIe 3.0 avec 6x disques de 3TB. RAM : 12 Go ECC (3x 4 Go).

Voici les changements que je ferais et qui ont causé le non démarrage de mon système :
"Changez les slots pci du S3008L-L8i (en laissant le SSD+carte seul).
"Désactiver le Logiciel LSi raid bios prompt pour le contrôleur embarqué.
"Ajouter ma vieille carte HighPoint RocketRaid à un emplacement PCIe ouvert.
"Effectuer un changement dans /etc/default/grub et ensuite exécuter update-grub .
( peut-être grub-install doit être exécuté également ? )

3voto

ryansstack Points 630

Je voterais bien ça, mais apparemment je n'ai pas assez de représentants sur SuperUser. Je suis heureux d'avoir enfin trouvé une réponse à cette question après des jours de lutte contre des clones qui fonctionnaient mais ne démarraient pas. Je pense que tout est lié à l'UEFI et à une sorte de mécanisme de "démarrage sécurisé" ou autre.

Je travaille hors ligne, donc apt-get n'était pas une option. Ce que j'ai fait, c'est mettre Ubuntu Desktop sur une clé USB, ajouter l'option grub-efi y grub-efi-amd64 à la racine de la clé USB (Grub-efi_1.99~rc1-13ubuntu3_amd64.deb et Grub-efi-amd64_1.99~rc1-13ubuntu3_amd64.deb pour Ubuntu 11.04 - changez selon la distro et l'architecture), et mettez ce qui suit dans un Grub sur la clé USB également :

#! /bin/bash
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
dir=`dirname $0`
sudo cp $dir/grub-efi*.deb /mnt/tmp
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb"
sudo shutdown -r now

Démarrez la clé USB Live, ouvrez un terminal, exécutez la commande, et le travail est bien fait ! Le seul problème occasionnel est que l'UEFI a parfois été déplacé vers le bas de l'ordre de priorité de démarrage en dessous du disque dur, auquel cas vous devez aller dans le BIOS et changer l'ordre de démarrage pour l'empêcher de tenter (et d'échouer) sur SATA: drive .

Vous pouvez également utiliser dpkg-reconfigure 代わりに dpkg -i mais cela pose quelques questions sur le boot loader.

[Je n'ai pas non plus assez de représentants pour commenter, donc ce que je pensais être un commentaire sur une réponse s'avère être une réponse.

1voto

rubo77 Points 3964

Sur mon Ubuntu 14.10 32 bit sur Lenovo Yoga 2 Pro, j'ai changé pour un démarrage UEFI comme ceci :

  • créer un dossier

    sudo su
    mkdir /boot/efi
  • monter la partition "EFI System" dans /etc/fstab

    fdisk -l|grep EFI

    cela a montré : /dev/sda2 2050048 2582527 532480 260M EFI System

    echo "/dev/sda2 /boot/efi   vfat    defaults,sync   0   0">>/etc/fstab

    monter cette partition

    mount /boot/efi
  • installer grub-efi-amd64-bin et désinstaller grub-efi-ia32-bin

    aptitude install grub-efi-amd64-bin grub-efi-ia32-bin_
    
    grub-install --target=x86_64-efi
  • redémarrer Ubuntu en mode efi

    update-grub
  • pour tester s'il démarre bien, puis j'ai installé grub-efi-amd64 et désinstallé grub-pc grub-gfxpayload-lists avec

    aptitude install grub-efi-amd64 grub-pc_ grub-gfxpayload-lists_

Je choisis de ne pas supprimer /boot quand on me le demande.


Peut-être que j'ai compliqué les choses et que ça aurait bien marché :

apt-get install --reinstall grub-efi
update-grub

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X