如何将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分区,则很容易将其取回。 您可以使用fdisk
或parted
创建类型为“EFI partition(1)”的新GPT分区,并使用以下格式对其进行格式化:
sudo mkfs.msdos /dev/sdX
然后安装它,你可以按照运行:
sudo grub-install /dev/sdX
和其他解决方案一样。