GNU/Linux >> Tutoriels Linux >  >> Linux

Comment réinstaller GRUB2 EFI ?

  • 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/ de sorte que efibootmgr n'échouez pas plus tard. 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 cassé (similaire à l'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
    
  • Selon votre distribution Linux, vous faites maintenant des choses différentes.

    • Pour Ubuntu/Debian :

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

      ou alternativement :

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

      si ce qui précède vous donne un grub, mais pas un amorçable

    • Pour Fedora (jusqu'à 16 ans, 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 souhaitez démarrer. Dans --part Y il faut 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, 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 très bien fonctionné pour moi.

Un système en direct approprié pour réparer les choses est grml. Il existe également un guide complet sur la configuration d'un périphérique USB amorçable, dont la section Mac est la plus utile en fait (créez simplement une partition FAT32, copiez les fichiers, redémarrez, c'est fait).


Comme simplification potentielle de la première méthode, il est possible de démarrer directement le système sur le disque dur, en utilisant uniquement grub du CD live. 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.

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

Comme avec 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 n'importe quoi Je ferais à propos de update-grub ou de changer les disques durs du serveur l'empêcherait de démarrer. 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 empêcheraient UEFI de fonctionner)

Passer par exactement les mêmes étapes sur un ThinkServer TS140 n'a pas fait perdre la tête à UEFI une seule fois. J'ai regardé la page du pilote RD430 et mon bios a deux versions. Je n'ai jamais eu à mettre à jour le bios sur une carte mère auparavant, donc je ne suis pas du genre à mettre à jour automatiquement lorsque de nouvelles versions sont disponibles. Après avoir mis à jour le bios, la réponse de Maxine ci-dessus a fonctionné, seulement avec une torsion...

# 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 / # 

Le efibootmgr -c la commande a ajouté deux entrées 0000 et 0002 !
Le Boot0002* Linux HD l'entrée en premier dans l'ordre de démarrage n'est pas correcte .
Le 0000 l'entrée est correcte.

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

La façon de supprimer les entrées indésirables via efibootmgr est :

# efibootmgr -b 2 -B

J'ai utilisé cette commande pour supprimer les entrées 0001 et 0002 . Choix 0001 était de la dernière de mes nombreuses tentatives pour récupérer le système d'exploitation.

Remarques UEFI

Si vous lisez ceci et que vous êtes aussi frustré que moi par UEFI, voici quelques notes et ressources :
» Le démarrage sur le shell UEFI s'apparente à l'utilisation d'un shell DOS.
» Intel a créé un manuel de référence PDF pour les commandes efi shell.
»Le document UEFI_on_TS430 de Lenovo est la seule ressource que j'ai vue expliquant l'utilisation du shell efi.
» Une autre référence de shell uefi du Guide de l'administrateur de nPartition .
» Vous pouvez essayer de démarrer sur une partition à partir du shell efi en accédant au chargeur et en l'exécutant.
» UEFI veut que le disque ait une table de partition GPT, pas une table de partie 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 un /EFI/boot répertoire à la racine avec bootx64.efi dedans.
» Certaines personnes copient leur grubx64.efi d'où il a été installé à /EFI/boot/bootx64.efi et cette triche a fonctionné pour eux.
» Chaque fois que vous faites des changements grub, utilisez efibootmgr -v avant et après pour vous assurer que votre redémarrage est correct.

Mon expérience RD430

J'ai réinstallé le système d'exploitation plus de 10 fois au cours de la semaine dernière en essayant 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. Contrôleur RAID AOC-S3008L-L8i (reflashé en mode informatique) dans le 2e emplacement PCIe 3.0 avec 6 disques de 3 To. RAM :12 Go ECC (3 x 4 Go).

Voici les modifications que j'apporterais et qui empêcheraient mon système de démarrer :
» Changez les slots pci S3008L-L8i (en laissant la carte SSD+ seule).
» Désactivez l'invite du bios RAID du logiciel LSi pour le contrôleur intégré.
» Ajoutez mon ancienne carte HighPoint RocketRaid à un slot PCIe libre.
» Apportez une modification à /etc/default/grub puis exécutez update-grub .
(peut-être grub-install doit également être exécuté ? )


Linux
  1. Comment "alias Sudo !!" ?

  2. Comment rétrograder vers Subversion 1.6 ?

  3. Comment installer MongoDB sur AlmaLinux 8

  4. Comment mettre à jour R sous Linux ?

  5. Comment ajouter à un fichier en tant que sudo?

Comment réinstaller Ubuntu

Comment mettre à niveau vers AlmaLinux 8.5

Comment installer Go sur Debian 11

COMMENT INSTALLER NEXTCLOUD SUR UBUNTU ?

Comment installer Asterisk dans Ubuntu 20.04

Comment installer Sendmail sur Ubuntu 22.04