如何将GRUB重新安装到EFI分区?

我想重新安装GRUB 2,我找到了这些说明: 如何使用Ubuntu Live CD或USB修复,恢复或重新安装Grub 2 。 就我而言,引导加载程序安装在EFI分区中。 如果我使用本指南中提供的命令,GRUB会自动重新安装到EFI分区,还是会安装到安装了Ubuntu的根分区中? 显然,我不希望这种情况发生。

以这种方式将GRUB引导加载程序重新安装到EFI模式的Ubuntu安装中……

从Ubuntu安装介质启动并选择“试用Ubuntu而不安装”。
(在EFI模式下引导安装介质,在前面选择带有UEFI的Ubuntu条目。)

进入Live桌面后,打开终端并执行以下命令:

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分区| sdXXX =系统分区

要使用GParted识别分区,该工具将包含在安装介质中。
运行命令后,GRUB将安装在单独的EFI分区中。

感谢@ cl-netbox的说明!

我升级后(Linux Mint 18.2 Sonya到18.3 Sylvia)我的系统无法启动所以我按照上面的说明操作但仍然没有成功。 但是我注意到我的机器在一个单独的分区中有/ boot(可能是因为我使用的是LVM)所以稍微修改过程是:

 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 

注意:sdX = disk | sdXX = efi分区| sdXY =启动分区| sdXXX =系统分区

这是唯一对我有用的方法:(系统: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 

除了ci-netbox的答案。
如果您的pendrive操作系统版本与磁盘上安装的版本不匹配,则grub-install可能难以识别正确的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. 

尝试手动识别要使用的安装

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

然后重启grub-install:

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

如果您碰巧丢失了EFI分区,则很容易将其取回。 您可以使用fdiskparted创建类型为“EFI partition(1)”的新GPT分区,并使用以下格式对其进行格式化:

 sudo mkfs.msdos /dev/sdX 

然后安装它,你可以按照运行:

 sudo grub-install /dev/sdX 

和其他解决方案一样。