I want to reinstall GRUB 2 and I found these instructions: How to Repair, Restore, or Reinstall Grub 2 with a Ubuntu Live CD or USB. In my case, the boot loader is installed in the EFI partition. If I use the commands provided in this guide, will GRUB be reinstalled to the EFI partition automatically, or will it be installed into the root partition where Ubuntu is installed ? Obviously, I do not want this to happen.
Reinstall the GRUB boot loader to your Ubuntu installation in EFI mode this way ...
Boot from the Ubuntu installation medium and select 'Try Ubuntu without installing'.
(Boot your install medium in EFI mode, select the Ubuntu entry with UEFI in front.)
Once you are on the Live desktop, open a terminal and execute these commands :
sudo mount /dev/sdXXX /mnt sudo mount /dev/sdXX /mnt/boot/efi for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt grub-install /dev/sdX update-grub
sdX = disk |
sdXX = efi partition |
sdXXX = system partition
To identify the partitions use GParted, the tool is included in the installation medium.
After having run the commands GRUB will be installed in the separate EFI partition.
Thanks to @cl-netbox for the instructions!
After I upgraded (Linux Mint 18.2 Sonya to 18.3 Sylvia) my system wouldn't boot so I followed the instructions above but still no success. I noticed however that my machine has /boot in a separate partition (possibly because I am using LVM) so my slightly modified process was:
sudo mount /dev/sdXXX /mnt sudo mount /dev/sdXY /mnt/boot sudo mount /dev/sdXX /mnt/boot/efi for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt grub-install /dev/sdX update-grub
Note : sdX = disk | sdXX = efi partition | sdXY = boot partition | sdXXX = system partition
this is the only way that worked for me: (System: sdb8, boot: sdb6, efi: sdb2)
sudo mount /dev/sdb8 /mnt sudo mount /dev/sdb6 /mnt/boot sudo mount /dev/sdb2 /mnt/boot/efi sudo mount --bind /dev /mnt/dev && sudo mount --bind /dev/pts /mnt/dev/pts && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys sudo chroot /mnt grub-install --target=x86_64-efi /dev/sdb grub-install --recheck /dev/sdb exit && sudo umount /mnt/sys && sudo umount /mnt/proc && sudo umount /mnt/dev/pts && sudo umount /mnt/dev && sudo umount /mnt
Also, if booting from live cd to recover it might happen that you are missing grub-efi-amd64-bin package and then line
"grub-install --target=x86_64-efi /dev/sdb"
fails with error message: "grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory."
In this case run this outside of chroot
sudo apt get grub-efi-amd64-bin
and then add /usr/lib/grub/x86_64-efi to chroot mounts.
BTW "/dev/sdb" param is obsolete and is being ignored.
in addition to ci-netbox answer.
If your pendrive OS version does not match the one that is installed on the disk, grub-install may have difficulties to identify the right grub installation:
$ 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.
Try to identify manually the installation to use
# ls /usr/lib/grub/ grub-mkconfig_lib x86_64-efi x86_64-efi-signed
Then restart grub-install :
# grub-install --target=x86_64-efi /dev/sdX Installing for x86_64-efi platform. Installation finished. No error reported.
If you happen to lose the EFI partition, it's easy to get it back. You can use
parted to create a new GPT partition with type "EFI partition (1)" and format it with:
sudo mkfs.msdos /dev/sdX
then mount it and you can follow run:
sudo grub-install /dev/sdX
as in other solutions.
so my guess is the reason for the problem is that Ubuntu installation is not mounting the efi partition if fstab. and updates grub. on update.