Gummiboot 作为默认的热插拔 UEFI 引导加载程序

Gummiboot 作为默认的热插拔 UEFI 引导加载程序

在尝试创建可启动 USB 多次失败后,我终于设法使用 Universal USB Installer 创建了一个闪存盘Linux.com。我创建了一个可启动的 Ubuntu 13.10 64 位版本的 USB,并在之后成功启动到 USB禁用安全启动,启用 UEFI 和传统启动并手动选择我的 USB 驱动器。

在我的 SSD 上的新分区上成功安装 Ubuntu 后,我移除了 USB 记忆棒,重新启动了计算机,并不断按下 Enter 键以进入 BIOS。我去手动选择从哪里启动,但没有针对 Ubuntu 的新选项。

因为我是一名计算机科学专业的学生,​​我认为自己相当聪明,所以我只是选择了我的 SSD,但它运行了一个不同的启动顺序(既不是我的电脑过去的启动顺序,也不是我新推出的 Ubuntu 操作系统)。我认为发生的事情是,我的电脑通常会通过我的16GB mSATA,但是当我选择它时,它通过我的 SSD 启动了 Windows 8.1,而不是 Ubuntu。

所以我想问的是,当都位于 SSD 上并且没有其他选项?有没有办法修改 BIOS,以便让我选择从 SSD 上的一个分区而不是另一个分区启动?到目前为止,我无法启动 Ubuntu,我只设法通过两种不同的方式启动 Windows 8.1。

我在下面提供了技术规格,但如果您需要更多信息,我一定会跟进。


机器:ThinkPad S1 Yoga

技术规格:

  • 英特尔酷睿 i7-4500U 处理器(4MB 缓存,最高 3.00GHz)
  • Windows 8.1 64
  • 8GB PC3-12800 DDR3L 主板
  • 英特尔高清显卡 4400
  • 256GB 固态硬盘 SATA 6G
  • 16GB mSATA

答案1

开始之前我先问个问题,您有 2 个驱动器吗?Windows 的 256GB 和 mSATA 的 16GB?如果不是 Ubuntu,您会用 mSATA 做什么?


据我所知,PenDriveLinux.com 创建了 MBR 样式的可启动媒体,不确定是否支持 UEFI。如果你想让你的机器使用 UEFI(这是非常推荐的),你应该禁用 CSM 并创建仅 UEFI 可启动媒体只是为了确保你不会意外地启动并安装安装到 GPT 分区时使用 MBR 模式推动并可能使事情变得更加凌乱的

您似乎已在 MBR 模式下安装,否则安装程序将识别 UEFI 机器并能够在其放置在 EFI 系统分区 (ESP) 上的固件启动菜单中注册 EFI 引导加载程序。如果您.efi在 ESP 上找不到与 Ubuntu 相关的二进制文件,则您可能已在 MBR 模式(或 GPT MBR 模式)下安装,并且您应该能够从驱动器以旧式/MBR 模式启动,您只需要弄清楚如何操作。(通常 Thinkpad 提供优先启动,例如首先启动旧式。)

Gummiboot 作为默认的热插拔 UEFI 引导加载程序

假设您已经有一个 GPT 分区目标磁盘(所有预装 Windows 8 的磁盘都应该如此),您可以尝试按照以下说明对现有的 MBR 安装进行故障排除。

笔记:请注意,这些说明并非永久性修复或正确设置。它们只是静态配置,可让您进入安装并从那里继续进行故障排除(例如正确安装 GRUB)。

  1. 获取 gummiboot

    下载来自 Arch Linux 存储库的 gummiboot。(一切都很好,我们只是在进行 Linus Torvalds 风格的包管理。您可以在该页面的右侧找到下载链接包操作>从镜像下载

    从包中提取gummibootx64.efi(位于 下/usr/lib/gummiboot/)并将其复制\EFI\BOOT\BOOTx64.EFI到您的 ESP。备份同名的现有文件(例如使用 zip)。

  2. 复制内核文件

    在 ESP 的根目录下创建一个名为的新文件夹Ubuntu,并将所有具有最高版本号的文件复制到/boot/刚刚创建的文件夹中。

    linux-image-$VERSION-generic如果你使用的是 Windows,请下载与以下版本匹配的最新软件包:你的分布存储库. (initrd.img-$VERSION-generic由于它是由 Debian 脚本自动生成的,因此缺失。)

  3. 配置 gummiboot 来启动 Ubuntu Linux 内核

    loader/entries/沿着ESP 根目录的路径创建文件夹,并ubuntu.conf在其中创建一个名为的文件。按照此模板编辑文件以创建配置:

    title          Ubuntu
    linux          /Ubuntu/vmlinuz-$VERSION-generic
    initrd         /Ubuntu/initrd.img-$VERSION-generic
    options        root=UUID=$UUID ro
    
    • 标题:选择你喜欢的。必须是人类可读的

    • Linux的:要加载的内核的文件名,替换$VERSION为您复制的文件的版本号。

    • 初始化文件(initrd):初始 RAM 磁盘的文件名。基本上与 Linux 选项相同,$VERSION带有您复制的文件的版本号。如果您没有这样的文件,请忽略此行(但我不知道这样是否可行)。

    • 选项:将其替换$UUID为您的 Ubuntu 根文件系统的文件系统 UUID。运行ll /dev/disk/by-uuid/ | grep sdxY以获取 GUID,将其替换sdxY为实际的设备名称。(忘记我之前在这里写的关于分区 GUID 的内容,现在似乎不起作用。)

      linux您可以从中添加行的其余选项/boot/grub/grub.cfg。UUID 是必需部分,其余部分应该是可选的。我的linuxgrub.cfg如下所示:root=UUID=00000000-0000-0000-0000-000000000000 ro quiet splash $vt_handoff

    loader.conf您还需要添加文件loader/以使 gummiboot 正常工作。

    default        Ubuntu
    timeout        4
    

    默认是默认启动项的标题。如果您选择了其他标题,请进行相应编辑。

  4. 重启

    您应该能够使用 gummiboot 从包含 ESP 的 HDD/SSD 启动,并显示 gummiboot 菜单,从而允许您启动 Ubuntu 安装。

  5. 可选:为 GRUB 创建 gummiboot 菜单项

    与上面的说明类似,创建loader/entries/ubuntu.conf以下内容:

    title          Ubuntu GRUB
    efi            \EFI\ubuntu\grubx64.efi
    

    选择:

    title          Ubuntu GRUB
    efi            \EFI\ubuntu\shimx64.efi
    

我仍在研究这个主题,并且我想在以一种干净和非古怪的方式将其写下来之前对其进行彻底的测试,但这些说明可能会为您提供有用的指导,并且比一次又一次地尝试安装更有趣。

祝你好运。

进一步阅读

财政年度

我在测试期间遇到的问题:

  • PARTUUID/GUID——似乎不起作用。
  • initramfs 使用dep选项而不是进行编译most
  • 克隆安装的 initramfs 从源安装中找到休眠映像并启动该映像。m(
  • Windows 避免安装 ESP。

答案2

我怀疑 LiveWireBT 做了同样的事情:您在已经以 EFI/UEFI 模式启动 Windows 的计算机上以 BIOS/CSM/传统模式安装了 Ubuntu。这会使双启动变得更加复杂,在某些情况下甚至是不可能的。

但在我看来,LiveWireBT 的解决方案过于复杂且有限。以下两种解决方案可能更简单、更灵活:

  • 下载并准备用于 CD-R 或 USB 闪存驱动器版本的启动介质rEFInd 启动管理器。用它启动。(您可能需要在固件中禁用安全启动。)这应该使您能够启动 Windows 和 Ubuntu。如果可行,请在 Ubuntu 中安装 Debian 软件包版本的 rEFInd。
  • 启动 Ubuntu Live CD处于 EFI 模式。(通过查找目录来验证您是否已在 EFI 模式下启动/sys/firmware/efi。如果存在,则说明您已在 EFI 模式下启动。如果不存在,则说明您可能已在 BIOS/CSM/传统模式下启动,应重试。查找描述中包含字符串“EFI”或“UEFI”的启动选项。)运行引导修复工具。请务必记录它提供的 URL;如果您尝试此选项但不起作用,请在此处发布该 URL。它将向我们指出有关您计算机的更详细诊断信息。理论上,使用 Boot Repair 应该设置一个新的 EFI 模式版本的 GRUB,这应该使您能够在 Linux 和 Windows 之间切换,两者都以 EFI 模式启动。

第二种选择比第一种更危险,因为无法测试它会做什么,有时 Boot Repair 实际上会使情况变得更糟。相比之下,从 CD-R 或 USB 闪存驱动器测试 rEFInd 意味着如果它似乎不起作用,您可以停止而不触碰硬盘或 NVRAM 设置。

相关内容