我想要了解如何在不禁用 UEFI 的情况下同时安装 ubuntu 16.04 和 win8.1(已安装)。我的问题是,我希望在我的硬盘盒 SSD 中安装 Ubuntu,并且如果可能的话,如果硬盘盒被取出,Windows 不会受到影响。我读了很多关于 Grub2 的文章,但我越来越困惑。我已经熟悉 Linux usb 实时使用,但仅此而已。我的笔记本电脑是东芝 LB 50 158,配有 4 Gb RAM、500 Gb 主硬盘和 240Gb SSD。CPU 是 Celeron N2840 2,16GHz 64 位。
答案1
关于您的配置的棘手之处在于,在默认的 Ubuntu 安装中,启动过程依赖于跨越两个分区的文件:
- Ubuntu 的引导加载程序 (GRUB) 安装到EFI 系统分区 (ESP),就您而言,它很可能位于您的内置硬盘上。
- GRUB 的配置文件存储在 Ubuntu
/boot/grub
目录中,默认情况下该目录位于主 Ubuntu 分区上,您可以指定该分区位于可移动 SSD 上。
因此,在默认安装中,当 SSD 安装在计算机中时,一切都会正常工作;但是当您移除 SSD 时,GRUB 将启动,无法检测到 SSD,并返回到提示符grub>
。在我看来,这是一个错误;事实上,我提交了此错误报告关于这个问题。
有几种可行的解决方法,但它们需要一些规划,并且需要偏离默认的安装程序:
- 您可以
/boot
在主磁盘上创建一个单独的分区(我建议 512-1024 MiB),并将 Ubuntu 的其余部分放在可移动 SSD 上。这将需要对内部磁盘进行小幅修改,当您启动时,GRUB 将显示“Ubuntu”选项,即使由于 SSD 已拔出而无法使用。不过,它基本上可以正常工作,并且非常接近默认的 Ubuntu 配置。 - 您可以完全跳过 GRUB,转而使用不依赖于 ESP 配置文件的引导加载程序。我自己的rEFInd 启动管理器对此很有效。最简单的方法是正常安装 Ubuntu,然后从 Debian 包或 PPA 安装 rEFInd;但是,你可能需要定期更正我所说的启动政变-- GRUB 违背您的意愿接管启动过程。您可以通过使用“安装前尝试”选项启动安装介质、启动终端并输入 来告诉 Ubuntu 根本不安装 GRUB。
ubiquity -b
这应该可以绕过启动政变的问题。请注意,rEFInd 会在每次启动时扫描引导加载程序和内核,因此如果您采用这种方法,rEFInd 将不会在 SSD 被移除时显示 Ubuntu 内核选项。(不过,如果 GRUB 安装在内部磁盘的 ESP 上,它仍会将其显示为选项。) - 您不必将 GRUB 安装到内部磁盘上的 ESP,而是可以将其安装到可移动磁盘上的第二个 ESP。理想情况下,您可以将计算机配置为在插入 SSD 时启动到 GRUB,但拔下 SSD 时将跳过此条目,计算机将通过 Windows 启动管理器启动。这种方法的一个问题是,许多 ESP 会自动删除无效的启动条目,因此当您拔下 SSD 时,您的计算机可能会“忘记”GRUB/Ubuntu 启动加载程序。反过来,这个困难可能很难克服。另一个问题是,Ubuntu 安装程序目前对安装 EFI 启动加载程序的位置控制很差,因此以这种方式进行设置可能需要在安装后修改或弄乱分区类型代码,以使内部 ESP 在安装过程中看起来不是 ESP,然后在安装后将其切换回来。
- 以默认方式安装所有内容,然后依靠 EFI 的内置启动管理器来控制要启动的操作系统。在大多数情况下,这需要按 Esc、Enter 或功能键进入启动管理器。(您使用的键因机器而异。)然后,您可以根据需要选择启动 Windows 或 Ubuntu(或者其他东西,如外部媒体)。在某些计算机上,这种方法效果很好;但其他计算机的内置启动管理器非常糟糕,这种方法很快就会让人沮丧或完全无法使用。
就我个人而言,我会在您的情况中使用内置磁盘上的 rEFInd —— 但作为 rEFInd 的开发人员,我对它非常了解,并且有偏见。上述任何选项,或它们的变体,以及我可能忘记的其他选项,都可以使用。正如刚才所述,每个选项都有其独特的优点和缺点,因此您应该选择最适合您特定需求和技能的选项。