两个 grub 安装互相破坏

两个 grub 安装互相破坏

我在 上安装了 linux mint 19 /dev/sda5。最近我连接了一个外部驱动器并在其上安装了 Ubuntu 18.04 LTS ( /dev/sdb2)。之后,我无法再启动原来的 Mint 安装(除非存在外部驱动器)。它只是进入黑色 grub 屏幕并提示。

我的假设是,grub 是新安装在外部驱动器上的(这是预期的,因为我希望它能够自行启动),并且不知何故旧的 grub 安装被遗忘了。所以我通过使用 live cd 和 chroot 方法修复了 grub。

但现在如果我重新连接外部驱动器,我无法在 BIOS 启动选择中选择从该驱动器启动。

看来我的两个 grub 安装在某种程度上不兼容,但为什么以及如何解决呢?

附加信息:两个磁盘都安装了 grub2,都使用 EFI 和 gpt。我打开了一个 EFI 分区sda,并打开了另一个sdb,因为没有 EFI 分区 grub 将无法安装(而且我不想引用 sda 上的 EFI 分区,因为我希望 Ubuntu 能够在其他位置自行启动)机)。

更新:我在我的(已修复的)Mint 19 安装中发现了/boot/efi/EFI/ubuntu该文件(未连接外部驱动器)。里面没有其他文件夹/boot/efi/boot/efi/EFI我不知道这是否意味着什么,因为 Mint 19 基于 Ubuntu,并且/boot/efi/EFI/mint那里没有或类似的目录。外部驱动器上的 EFI 分区完全是空的,/boot/efi我的 ubuntu 安装上的文件夹也是如此。我想我必须对如何强制使用正确的 EFI 分区进行一些研究。

刚才我得到了 grub2 的更新,当它尝试运行时出现错误grub-install

Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.

但系统确实可以正常启动。没有挂载EFI分区。

更新2 好的,似乎在除第一个分区(通常/dev/sda)之外的任何其他分区上安装 EFI 时都会出现常见问题,请参见例如这里。我的外部 Ubuntu 安装上的 fstab 有以下行:

# /boot/efi was on /dev/sda1 during installation
UUID=8A3D-B724  /boot/efi       vfat    umask=0077      0       1

这证明,安装忽略了我选择的 EFI 分区选项。

答案1

当你安装 Ubuntu(可能还有 Mint)时在 UEFI 模式下,引导加载程序进入第一个驱动器(通常是内部驱动器),/dev/sda,进入该驱动器上的 EFI 系统分区。即使您告诉系统将其安装到另一个驱动器中,也会发生这种情况。

如果您希望第二个驱动器是便携式的并且可以正常启动,则在卸下第二个驱动器时,您应该断开(或拔掉)第一个驱动器在开始安装之前。

以下链接可能有帮助,

如何将 Ubuntu 安装到 U 盘? (不使用启动盘创建器)


为了修复第一个驱动器(通常是内部驱动器)中的引导系统,您应该在开始修复操作之前断开第二个驱动器的连接。


编辑:

如果你不能断开/删除内部驱动器有解决方法:

  • 禁用UEFI/BIOS 菜单中的内部驱动器

  • 旗帜方法

    A。在纸上记下内部驱动器中 EFI 分区的标志

    b.从内部驱动器的 EFI 分区中删除标志(例如gparted,从实时驱动器启动时使用 )

    C。执行安装

    d.将标志恢复到内部驱动器中的 EFI 分区(从gparted实时驱动器引导)。

我已经断开/删除了驱动器,并且我知道有人在 UEFI/BIOS 菜单中禁用了它,并且我读过有关修改标志的内容,但没有自己的标志方法经验。

答案2

如果已经遇到这种情况,并且不想重新安装所有内容,则断开所有其他磁盘的连接苏多杜斯在他的回答中建议,我找到了一种方法:

第一的,如果主系统无法自行启动,断开外部驱动器并从 Live CD 或 Live USB 闪存驱动器启动。如果实时会话中不存在,请安装工具“boot-repair”(高级使用的详细信息并安装这里,通过在终端中输入

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

&& boot-repair如果安装成功,最后一部分将立即启动它。它有一个非常不言自明的 GUI。修复主系统的启动,然后重新启动。

第二,当主系统再次启动时,启动进入,连接外部驱动器。将EFI/ubuntu内部驱动器的 EFI 分区(在本例中)的全部内容复制/dev/sda1到外部驱动器的 EFI 分区两次。一次到EFI/ubuntu那里,一次到EFI/Boot。然后在EFI/Boot重命名shimx64.efibootx64.efi.

现在,在外部 ubuntu 根分区上编辑该文件etc/fstab并找到如下行:

# /boot/efi was on /dev/sda1 during installation
UUID=8A3D-B724  /boot/efi       vfat    umask=0077      0       1

8A3D-B724将属于主系统 EFI 分区的UUID 替换为外部 EFI 分区的 UUID。人们可以发现,使用命令blkid或者如果喜欢 GUI 应用程序,可以使用磁盘或 Gparted。

完成后,外部驱动器即可启动。


另请参阅:

完全安装到 USB 闪存驱动器,UEFI 启动

相关内容