在 Surface Pro 上使用 rEFInd 为 Ubuntu 12.10/Windows 8 提供 EFI Stub Loader

在 Surface Pro 上使用 rEFInd 为 Ubuntu 12.10/Windows 8 提供 EFI Stub Loader

我正在尝试在 Surface Pro 上实现 Windows 8 和 Ubuntu 12.10 的双启动,并且想要使用重新索引用于我的启动管理器。

我不想安装 GRUB,包括在安装 Ubuntu 期间,因为我过去尝试在此设备上这样做的经验导致 windows 引导加载程序损坏,这实际上会使设备变砖,因为它似乎需要这些才能从 USB 启动。我知道Surface Pro 与 Ubuntu 双启动?,但想完全远离 GRUB。

到目前为止我已经尝试了以下方法:

  1. 安装并测试 rEFInd 是否在 Windows 8 上运行正常
  2. 通过“ubiquity -b”安装 Ubuntu 12.10 以防止安装 GRUB
  3. 验证我是否仍可以正常启动 Windows 8

不幸的是,这似乎不会为 Ubuntu 生成任何 .efi 存根,所以我不确定此时该怎么做。如果不安装 GRUB 或任何其他引导加载程序,我该怎么做才能生成这些?请记住,在这个阶段,我实际上无法直接启动到 Ubuntu,只能进行实时安装,除非在实际安装过程中我应该做其他事情。

重申一下,我想要做的是:安装不使用 GRUB 的 Ubuntu,为 Ubuntu 生成 efi 存根,永远不要触碰 efi 固件或 Windows 启动目录,然后依靠 rEFInd 在启动期间找到这些存根。

答案1

首先,我假设“.efi 存根”指的是.efiEFI 系统分区 (ESP) 上的扩展名文件。这些是 EFI 程序文件 - 最常见的是引导加载程序,但有时也是程序和实用程序。

如果你想通过 rEFInd 启动 Windows 和 Ubuntu没有使用 GRUB,那么 ESP 上唯一需要的 EFI 程序是 Windows 引导加载程序(由 Windows 安装)、rEFInd(refind_x64.efi)和用于 Ubuntu 的任何文件系统的 EFI 文件系统驱动程序(可能是ext4_x64.efi,在包含 的目录的driversdrivers_x64子目录中refind_x64.efi)。 ext4fs 驱动程序将启用 EFI,因此 rEFInd 可以读取主 Linux 分区上的 Linux 内核。自 3.3.0 版以来的 Linux 内核已包含一个 EFI 存根加载程序,这是一种将 Linux 内核转变为其自己的引导加载程序的方法。因此,使用 ESP 上的 rEFInd 和 ext4fs 驱动程序,rEFInd 可以直接从 Linux 分区启动 Linux 内核。不过,还有一件事您还需要:一个/boot/refind_linux.conf用于保存 Linux 选项的文件。一个最小示例如下所示:

"Boot with normal options"   "ro root=/dev/sda8"
"Boot into single-user mode" "ro root=/dev/sda8 single"

此示例在 上启动安装/dev/sda8。您可以添加更多选项以使其呈现图形启动屏幕或出于其他原因,但上述选项(root=很可能带有修改后的值)适用于大多数系统。

这种方法的一个变体是将你的内核复制到 ESP(可能在 ESP 的EFI/ubuntu目录中)并不是安装 Linux 文件系统驱动程序。这在某些系统上有一些优势,但它需要在每次打包系统更新内核时复制内核。如果这样做,您需要将refind_linux.conf内核存放在 ESP 的目录中。

相关内容