我有一台 Windows 10 PC,但我正尝试教我的孩子 C 编程,并尝试将 Linux 安装到可移动 USB 驱动器上。
PC 设置:我有一台 i3 和一块技嘉 z97x gaming 3 主板。SSD 上装有 Windows 10,我在 BIOS 中将其设置为仅启动 UEFI(安全启动已关闭)。
我通过从 bios 中选择安装程序 USB(显然是 UEFI),在 UEFI 模式下完美启动了安装程序 USB,并在 UEFI 模式下(F12 启动菜单)使用 ubuntu 安装 iso 在我的 Linux 笔记本电脑上的 ubuntu 发行版上使用 dd 创建了它。启动正常。要将其安装在另一个 USB 上,我在安装程序驱动器上运行了安装 ubuntu 菜单功能。然后在 Installee USB 上设置我自己的分区。我创建了一个 512mb efi 分区(主分区)、一个 27gb ext4 部分(主分区)和一个 4gb 交换部分(也是主分区)。
我选择将引导加载程序安装到 /dev/sdc。它安装顺利,然后重新启动。
好吧...现在事情变得有点奇怪了。我不知道我在这里做错了什么。
当我在 F12 启动选择器上查看启动选项时,列出了 4 个选项。Windows 启动管理器、ubuntu、ubuntu(是的,有 2 个)和三星 32gb UEFI 启动(USB 驱动器是三星的)。如果我选择 Windows,它会启动到 Windows。如果我选择三星 32GB UEFI,它仍然会启动到 Windows?!但如果我选择 ubuntu...它会在 32GB USB 驱动器上启动到 ubuntu。
更令人沮丧的是,如果我拔出 USB 驱动器,三星 UEFI 启动选项就会消失,但 ubuntu 选项仍然存在。当您在没有插入 USB 驱动器的情况下单击它们时,它会进入 grub 菜单并且不会启动。在 bios 中,这两个 ubuntu 选项列在 SSD 驱动器下,这意味着即使我明确告诉它不要安装在那里,它仍然会在上面安装 grub?
幸运的是,如果选择了 Windows 启动管理器,Windows 仍会启动,但这非常令人沮丧。为什么它会搞乱它?我进入 Windows 修复程序并使用 bootrec,并执行了 /FixMbr 和 /FixBoot,但 ubuntu 选项仍然存在。Grub 似乎把自己塞进了某个地方,但我不知道在哪里!USB 驱动器也无法在我的笔记本电脑上启动(尽管安装程序可以在 UEFI 模式下正常启动)。
我不知道我做错了什么。我确保安装时处于 UEFI 模式而非 BIOS 模式,并且我从未选择任何会触及启动程序中的 /dev/sda 的东西,以免它弄乱我的硬盘。
当安装到 USB 驱动器时,Fedora 23 将顺利安装并以 UEFI 模式启动。
非常感谢您的帮助!谢谢!
答案1
在 EFI 下安装时,“引导加载程序安装设备”选项(或任何名称;我还没有检查该详细信息)将被忽略。我还没有验证它是否真的有效,但还有另一种方法可以指定引导加载程序的位置:它是在“其他”分区列表中标记为“EFI 引导分区”或“EFI 系统分区”(术语因 Ubuntu 版本而异)的分区。理论上,如果你标记 USB 驱动器上的 ESP,并取消标记硬盘上的 ESP,安装程序应该将 GRUB 2 放在 USB 驱动器上。我还没有测试过这是否真的有效,但它应该工作。
也就是说,你也遇到了另一个问题:你描述的用于从 USB 驱动器启动的 EFI 启动管理器条目确实不是启动EFI/ubuntu/shimx64.efi
文件,这是 Ubuntu 存储其第一个引导加载程序的位置。相反,该选项会启动“后备”EFI 引导加载程序文件EFI/BOOT/bootx64.efi
。此文件名用作可移动媒体的“通用”引导加载程序文件名。这个想法是,操作系统安装程序或其他外部介质不太可能具有有效的 NVRAM 条目,因此需要标准化的引导加载程序位置来引导操作系统安装程序、应急磁盘等。因此,如果您想制作一个可以在任何基于 x86-64 EFI 的计算机上启动的 USB 驱动器,您必须复制EFI/ubuntu
到EFI/BOOT
并重命名EFI/BOOT/shimx64.efi
为EFI/BOOT/bootx64.efi
。如果我没记错的话,您也必须保留EFI/ubuntu
原位,因为一个或多个二进制文件中有硬编码路径,因此两个目录都是必需的。
还有一点:如果您打算只在一台计算机上使用 USB 驱动器,那么您可能可以不将 GRUB 复制到EFI/BOOT
;但是,如果某些 EFI 在启动时发现某个条目无法访问,则会清理其 NVRAM 条目。因此,如果您移除 USB 驱动器并在未插入它的情况下启动,您可能会丢失该ubuntu
条目。仅出于这个原因,将 GRUB 复制到备份文件名是可取的。
grub>
当您尝试在ubuntu
拔下 USB 驱动器的情况下启动该选项时看到提示的原因是因为 Ubuntu 的 GRUB 配置依赖于 ESP(在内部磁盘上)上的 GRUB 二进制文件和 Ubuntu/boot
分区(在 USB 驱动器上)中的配置文件。因此,当拔下 USB 驱动器时,GRUB 会启动,但无法读取其配置文件,因此会失败。
答案2
您遇到了 grub 中一个已知的错误 1173457,它总是安装到主 EFI,而不是您指定的位置。但是,您也对新的 UEFI 启动机制感到困惑——Ubuntu 引导加载程序(shim、grub)被放入 EFI 文件系统中它们自己的目录 /EFI/ubuntu,不会覆盖任何 Windows 内容。简单的解决方案是将主磁盘的 EFI 文件系统复制到 USB,然后选择它作为第一个启动设备。另一个问题是,Ubuntu 的 grub 仍然无法在启用安全启动的情况下启动 Windows,您需要使用 EFI 启动菜单(开机时使用某些功能键来选择设备/系统),或者禁用安全启动。
请将您自己添加到 1173457 上的错误“列表”(“此错误是否影响我的问题”)。由于第二个人从未添加自己,因此这个于 2013 年提交的错误从未得到“确认”,所以也许这就是它从未被修复的原因。
关于更新的好问题,但即使它们进入了错误的 ESP,旧版本仍能继续工作,所以你可能永远不会知道。