我想重新安装GRUB 2,并且找到了以下指示信息: 如何使用Ubuntu Live CD或USB修复,还原或重新安装Grub 2。就我而言,引导加载程序安装在EFI分区中。如果我使用本指南中提供的命令,GRUB会自动重新安装到EFI分区,还是将其安装到已安装Ubuntu的根分区中?显然,我不希望这种情况发生。
我想重新安装GRUB 2,并且找到了以下指示信息: 如何使用Ubuntu Live CD或USB修复,还原或重新安装Grub 2。就我而言,引导加载程序安装在EFI分区中。如果我使用本指南中提供的命令,GRUB会自动重新安装到EFI分区,还是将其安装到已安装Ubuntu的根分区中?显然,我不希望这种情况发生。
Answers:
以此方式以EFI模式将GRUB引导加载程序重新安装到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
=磁盘| sdXX
= efi分区| sdXXX
=系统分区
要使用GParted识别分区,该工具将包含在安装介质中。
运行命令后,GRUB将安装在单独的EFI分区中。
grub-efi
则必须以UEFI模式引导,如果要重新安装,grub-pc
则必须以旧模式引导。
grub-install /dev/sdXX
有用,除了一个更改:我做了,即不是磁盘,而是使用EFI分区来安装grub,它起作用了。
这是唯一对我有效的方法:(系统:sdb8,引导: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
--recheck
办?手册说delete device map if it already exists
?
--bootloader-id=Ubuntu_02
引导失败。它只是在grub控制台中启动...任何解决方案?
grub-install --recheck
是必要的。它修复了我无法使用的USB HDD 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 =系统分区
另外,如果从实时CD启动以进行恢复,则可能会丢失grub-efi-amd64-bin软件包,然后输入
"grub-install --target=x86_64-efi /dev/sdb"
失败并显示错误消息:“ grub-install:错误:/usr/lib/grub/x86_64-efi/modinfo.sh不存在。请指定--target或--directory。”
在这种情况下,请在chroot之外运行
sudo apt get grub-efi-amd64-bin
然后将/ usr / lib / grub / x86_64-efi添加到chroot挂载。
BTW“ / dev / sdb”参数已过时,将被忽略。
除了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.
所以我的猜测是问题的原因是,如果使用fstab,Ubuntu安装不会挂载efi分区。并更新grub。更新。