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.
Réponses
Trop de publicités?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
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.
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é
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.
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.