-
Démarrez votre ordinateur avec un live-USB/CD en mode UEFI . J'avais deux options de démarrage
<flash_drive>
etUEFI: <flash_drive>
, la seconde est nécessaire pour exposer les variables efi dans/sys/firmware/efi/
de sorte queefibootmgr
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 leY
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é ? )