我尝试在外部驱动器上安装 Ubuntu 14.04 LTS,同时在内部驱动器上安装 Windows 10 操作系统。
如果我的外部驱动器已连接,则一切正常。 GRUB 菜单加载,我可以选择 Ubuntu 或 Windows。
但是当我的外部驱动器未连接时,Windows 应该会自动启动,但实际上并没有。相反,我会得到一种 grub-bash。我尝试了启动修复,发现我的 Windows 启动驱动器 sda1 上有一些 Ubuntu 条目,但我认为这些条目不应该在那里。我猜它们应该在外部驱动器 sdb1 上,还是我错了?
如果是这个问题,我该如何移动它们?
我对这些安装东西还不太熟悉。我只想尝试使用 Linux 系统进行 Web 开发。
这是我的启动修复信息
感谢您的帮助!
答案1
你遇到了 Ubuntu 配置 GRUB 2 的设计缺陷。基本上,在基于 EFI 的系统上,主 GRUB 二进制文件位于EFI 系统分区 (ESP),但该二进制文件依赖于grub.cfg
Ubuntu/boot/grub
目录中的一个文件,而这个文件在您的情况下位于外部磁盘上。由于 Ubuntu 将 GRUB 配置为您的默认引导加载程序,因此每当您拔下该外部磁盘时,引导过程都会失败。有几种方法可以纠正此问题,包括:
- 移动
/boot
-- 您可以重新对磁盘进行分区,以便/boot
在内部磁盘上有一个 ~500MB 的分区,然后重新安装 GRUB。这样,即使大部分 Ubuntu 将安装到外部磁盘,GRUB 也能够从内部磁盘读取其配置文件。缺点是,无论何时系统启动,您都会看到 Ubuntu 条目,即使由于外部磁盘被拔出而无法运行。 - 重新确定引导加载程序的优先级-- 您可以
efibootmgr
在 Linux 中使用,简易UEFI在 Windows 中,或者使用其他工具重新排列引导加载程序优先级。通常,您希望将 Windows 放在最上面。然后,您可以使用固件的内置引导管理器(通常通过按 Esc、Enter 或功能键(通常是 F8 或更高)来访问)仅在您想要启动时选择 Ubuntu。如果您不经常启动 Ubuntu,这可能是一个可行的解决方案,但是如果您想频繁启动 Ubuntu,访问引导管理器的麻烦使这个解决方案变得很糟糕。 - 使用 rEFind(或其他启动管理器)-- 您可以安装我的rEFInd 启动管理器到 ESP。然后它将接管作为默认启动管理器。由于 rEFInd 是逐个启动地构建其启动列表,因此当 Ubuntu 磁盘未插入时,启动菜单将仅显示 Windows,而当 Ubuntu 磁盘插入时,启动菜单将显示 Windows 和 Ubuntu。如果您将 rEFInd 的默认设置为启动 Ubuntu,结果甚至会在插入磁盘时启动 Ubuntu,而在未插入磁盘时启动 Windows。还有其他启动管理器,如 gummiboot/systemd-boot 和 rEFIt(rEFInd 的前身),也可以充当这个角色。
答案2
您必须启动 Windows USB/DVD,然后在选择语言等之后,不要单击“立即安装”,而是单击“修复计算机”。从那里您可以打开命令提示符。确保您的外部驱动器未连接,然后使用以下命令:bootrec.exe /FixMbr
。这应该会将 Windows MBR 重写到主硬盘驱动器。