在外部驱动器上引导Ubuntu的问题

我试图在我的内部驱动器上与我的Windows 10操作系统一起在外部驱动器上安装Ubuntu 14.04 LTS。

如果我的外置硬盘已连接,一切正常。 grub菜单加载,我有一个选择Ubuntu或Windows。

但是当我的外部驱动器没有连接时,Windows应该自动启动,但事实并非如此。 相反,我会得到一种grub-bash。 我已经尝试了启动修复,我看到我的Windows启动驱动器sda1上有一些ubuntu条目,我认为它们不应该存在。 我猜他们应该在外部驱动器sdb1上,否则我错了?

如果这是问题,我该如何移动它们?

我对所有这些装置都很新。 我只想尝试一个用于web开发的linux系统。

这是我的boot-repair-info:

http://paste.ubuntu.com/14498622/

谢谢你的帮助!

您遇到了Ubuntu配置GRUB 2的设计缺陷。基本上,在基于EFI的系统上,主GRUB二进制文件位于EFI系统分区(ESP)中,但该二进制文件依赖于grub.cfg文件。驻留在Ubuntu /boot/grub目录中,在您的情况下,该目录位于外部磁盘上。 由于Ubuntu将GRUB配置为您的默认引导加载程序,因此每当您拔出该外部磁盘时,引导过程都会失败。 有几种方法可以解决此问题,包括:

  • 移动/boot – 您可以重新分区磁盘,以便在内部磁盘上具有~500MB /boot分区,然后重新安装GRUB。 这样,即使将大量Ubuntu安装到外部磁盘,GRUB也能够从内部磁盘读取其配置文件。 缺点是,无论何时系统启动,您都会看到Ubuntu条目,即使它因为外部磁盘已拔下而无法正常运行。
  • 重新确定引导加载程序的优先级 – 您可以在Linux中使用efibootmgr ,在Windows中使用efibootmgr或其他工具来重新排序引导加载程序优先级。 通常,您希望将Windows置于顶部。 然后,您可以使用固件的内置启动管理器(通常通过按Esc,Enter或function键(通常为F8或更高版本)访问)仅在您要启动时选择Ubuntu。 如果您不经常启动Ubuntu,这可能是一个可行的解决方案,但是如果您想经常启动Ubuntu,那么访问启动管理器的尴尬会使这个解决方案变得很糟糕。
  • 使用rEFind(或其他启动管理器) – 您可以将我的rEFInd启动管理器安装到ESP。 然后它将接管默认的启动管理器。 因为rEFInd在逐个引导的基础上构建其引导列表,结果将是一个启动菜单,在Ubuntu磁盘被拔出时仅显示Windows,以及在插入Ubuntu磁盘时显示Windows和Ubuntu的启动菜单。如果你设置rEFInd的默认值来启动Ubuntu,结果甚至可以在插入磁盘时启动Ubuntu,而在没有插入时启动Windows。还有其他启动管理器,如gummiboot / systemd-boot和rEFIt(rEFInd的前身)可以工作也是这个角色。

您必须启动Windows USB / DVD,然后在选择语言等后,不要单击“立即安装”,而是单击“修复计算机”。 从那里,您可以打开命令提示符。 确保未连接外部驱动器,然后使用以下命令: bootrec.exe /FixMbr 。 这应该将Windows MBR重写为主硬盘驱动器。