web-dev-qa-db-fra.com

Comment réinstaller GRUB2 EFI?

Après la mise à jour de mon bios, quelque chose s'est mal passé et j'ai fini par afficher un curseur clignotant dans le coin supérieur gauche de l'écran noir. Pas d'erreurs, pas de rien. Le bios ne listait plus qu’une option de démarrage SATA: <disc name> à la place de la variable UEFI ubuntu habituelle. J'utilise un schéma de partitionnement GPT.

J'ai finalement trouvé que la solution de travail consistait à réinstaller correctement grub-efi-AMD64. Alors, comment je fais ça?

PS: En fait, j’ai réussi à réinstaller GRUB2 EFI par moi-même et je posterai ma réponse ici, j’ai été incapable de trouver un tutoriel complet à ce sujet.

56
Maxime R.
  • Démarrez votre ordinateur avec un live-USB/CD en mode UEFI. J'avais deux options de démarrage <flash_drive> et UEFI: <flash_drive>, la seconde est nécessaire pour exposer les variables efi dans /sys/firmware/efi/ afin que efibootmgr n'échoue pas plus tard. Amorcer 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 cassé (similaire au ubuntu grub2 help 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 bien:

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

      si ce qui précède vous donne une bouffe, mais pas une 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 contenant la partition EFI à partir de laquelle vous voulez démarrer. Dans --part Y, vous devez remplacer la Y par 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
      
  • Maintenant, tapez Ctrl + D pour quitter chroot, démontez tout et redémarrez:

    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 adapter cela à 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 parfaitement fonctionné pour moi.

Un système live approprié pour réparer les objets est grml . Il existe également un guide détaillé sur la manière de configurer un périphérique USB amorçable, dont la section Mac est réellement la plus utile (créez simplement une partition FAT32, copiez les fichiers, redémarrez, c'est fait).

87
Maxime R.

Comme simplification potentielle de la première méthode, il est possible d’amorcer directement le système sur le disque dur, en utilisant uniquement le fichier grub du live CD. Testé sur xubuntu 13.10 avec le live CD xubuntu 13.10.

Assurez-vous que le démarrage sécurisé est désactivé dans votre BIOS. Insérez le live CD et démarrez-le via UEFI. Le menu GRUB du CD s'affichera. 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.

Une fois que votre système a démarré à partir du disque dur, il devrait suffire de réinstaller grub sur la partition système EFI et de l’enregistrer avec le micrologiciel via grub-install.

Sudo grub-install
8
user302914

Je voterais favorablement, 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 ont fonctionné mais qui n'ont pas démarré. Je pense que tout se rapporte à l'UEFI et à une sorte de mécanisme de "démarrage sécurisé" ou quelque chose du genre.

Je travaille hors ligne, donc apt-get n'était pas une option. Ce que j’ai fait, c’est de mettre Ubuntu Desktop sur une clé USB, d’ajouter les paquetages grub-efi et 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-le en fonction de la distribution et de l’architecture), et insérez également ce qui suit dans un script sur la clé USB:

#! /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 bon! Le seul problème occasionnel est que l'UEFI a parfois été déplacé dans l'ordre de priorité de démarrage situé sous le disque dur. Vous devez alors accéder au BIOS et modifier l'ordre de démarrage pour arrêter le processus (et l'échec) sur SATA: drive.

Vous pouvez également utiliser dpkg-reconfigure au lieu de dpkg -i, mais cela pose quelques questions au chargeur de démarrage.

[modifier] 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.

3
IBBoard

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

  • créer le 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
    
  • tester si ça marche 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_
    

J'ai choisi de ne pas supprimer/boot lorsque demandé.


Peut-être que j'ai compliqué les choses et que cela aurait bien fonctionné:

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

Cette entrée va plus dans le sens de la préparation de votre ordinateur à la réinstallation des entrées efi. C'est aussi ce que vous pourriez trouver comme un moyen simple et efficace de créer un disque de secours après l'installation du système sur un support interne (SSD, HDD).

Avec Linux Mint Tara (une variante Linux étroitement liée à Ubuntu Bionic Beaver), cette méthode a borké mon installation et permis de la sauvegarder ultérieurement. Cela tenait au fait que je souhaitais avoir une persistance sur une clé USB en direct, et puisque le temps d'installer un utilitaire comme Unetbootin pour une installation persistante est à peu près identique à une nouvelle installation, j'ai simplement utilisé la même distribution en direct pour effectuer une installation sur la clé USB. a été utilisé pour installer le système d'exploitation sur le SSD interne.

Bien sûr, rien de tout cela n’est RAID ou toute autre configuration spécialisée, mais cela nécessitait une partition de volume préparée sur le lecteur USB et une installation effectuée sur cet USB en utilisant la méthode disponible de la distribution, contournant le lecteur interne pour une installation sur un seul périphérique. le montage racine (/) de la partition.

C’est là que la nouvelle installation de grub se mêle au lecteur interne. Lorsque j'ai redémarré sur la clé USB, les entrées de fichier UEFI internes semblaient avoir disparu, ne laissant que le menu Grub lorsque vous essayez de sélectionner le lecteur à l'aide des entrées du menu BIOS.

Au lieu de cela, l’initialisation à partir de la clé USB a montré que la méthode de la distribution avait généré un menu prêt à l'emploi, avec une liste pour le répertoire/dev/sda2, la partition contenant le montage/boot/efi. Dans la plupart des lecteurs internes principaux, le nom de grub de la partition est hd0, gpt1.

Entrant dans «avancé», plus d'un sauvetage de noyau était disponible. A partir de là, lancez l'utilitaire grub puis démarrez normalement.

À partir de ce moment, exécutez le système d'exploitation sur le lecteur interne qui était auparavant inaccessible, débranchez le périphérique USB, puis exécutez Sudo grub-install.

Lorsque vous redémarrez sans clé USB, vous devriez pouvoir y revenir. À ce stade, la clé USB est configurée pour lancer le lecteur interne en mode normal ou en mode de secours et le lecteur dispose de son propre menu.

0
Tim Pozza