80 votes

Comment puis-je réinstaller Grub sur la partition EFI ?

Je veux réinstaller Grub 2 et j'ai trouvé ces instructions : Comment réparer, restaurer ou réinstaller Grub 2 avec un CD live ou une clé USB Ubuntu . Dans mon cas, le boot loader est installé dans la partition EFI. Si j'utilise les commandes fournies dans ce guide, est-ce que boot loader sera réinstallé dans la partition EFI automatiquement, ou sera-t-il installé dans la partition racine où Ubuntu est installé ? Évidemment, je ne veux pas que cela se produise.

4voto

Nicolás Points 219

Au cours des derniers mois, les bibliothèques concernées ont été mises à jour.

Les étapes ci-dessous m'ont été utiles. Elles s'inspirent d'anciennes réponses ainsi que d'autres forums.

Assurez-vous que vous avez démarré en utilisant EFI

efibootmgr -v

Exécuter Grub-installation

sudo mount /dev/nvme0n1p5 /mnt 
sudo mount /dev/nvme0n1p1 /mnt/boot/efi

for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/nvme0n1
grub-install --recheck /dev/nvme0n1

# as a second attempt, you could also try (assuming _debian_ is your distro)
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
# grub-mkconfig -o /boot/grub/grub.cfg

update-grub2

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Assurez-vous que efibootmgr liste votre Linux comme une entrée

efibootmgr -v

3voto

cengique Points 141

Si vous perdez votre partition EFI, il est facile de la récupérer. Vous pouvez utiliser un outil de partitionnement tel que fdisk ou parted pour créer une nouvelle partition sdXY (par exemple sda1) avec le type "partition EFI (1)" et la formater avec :

sudo mkfs.msdos /dev/sdXY

puis le monter avec :

sudo mount /dev/sdXY /boot/efi

et vous pouvez réinstaller Grub en exécutant :

sudo grub-install --efi-directory=/boot/efi

comme mentionné dans d'autres solutions.

3voto

pedromateo Points 316

Je ne peux pas commenter (pas assez de réputation), mais la réponse de @Chilu Pereira est la voie à suivre dans une situation EFi ou multiboot. Elle est similaire à l'approche du gentoo-guide. Ils utilisent une approche légèrement différente : Au lieu d'un mount --bind ils utilisent mount --rbind suivi par mount --make-rslave pour sys et dev et proc est simplement monté à nouveau. Dans gentoo, j'avais l'habitude de créer des montages à partir d'un système vivant comme ceci :

mount -t proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev 
chmod 1777 /mnt/dev/shm

(Quelqu'un sait quelle est la différence exacte entre --bind y --rbind / --make-rslave btw ?)

Mais aujourd'hui, j'ai eu deux erreurs dans le chroot à partir de grub2, je n'ai jamais connu avant :

 connect: No such file or directory
   Please make sure that the zfs-fuse daemon is running

et

grub-install: warning: Cannot read EFI Boot* variables.
grub-install: warning: read_file: could not read from file: Input/output error.

L'erreur de zfs-fuse ne semble pas avoir d'importance mais pour Efivars j'ai dû ajouter un montage supplémentaire :

mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars

Je suppose que /sys/firmware/efi/efivars n'existe pas dans le chroot ou peut-être qu'il est en lecture seule -. mais de toute façon, cela a fonctionné

2voto

Emmanuel Points 1243

En plus de la réponse ci-netbox.
Si la version du système d'exploitation de votre pendrive ne correspond pas à celle qui est installée sur le disque, Grub-install peut avoir des difficultés à identifier la bonne installation Grub :

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

Essayez d'identifier manuellement l'installation à utiliser

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

Puis redémarrez Grub-install :

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0voto

Zak the Gear Points 1

Je viens d'utiliser cet outil https://help.ubuntu.com/community/Boot-Repair sur Ubuntu. C'était le moyen le plus simple et tout était automatique.

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