我正在尝试在 Surface Pro 上实现 Windows 8 和 Ubuntu 12.10 的双启动,并且想要使用重新索引用于我的启动管理器。
我不想安装 GRUB,包括在安装 Ubuntu 期间,因为我过去尝试在此设备上这样做的经验导致 windows 引导加载程序损坏,这实际上会使设备变砖,因为它似乎需要这些才能从 USB 启动。我知道Surface Pro 与 Ubuntu 双启动?,但想完全远离 GRUB。
到目前为止我已经尝试了以下方法:
- 安装并测试 rEFInd 是否在 Windows 8 上运行正常
- 通过“ubiquity -b”安装 Ubuntu 12.10 以防止安装 GRUB
- 验证我是否仍可以正常启动 Windows 8
不幸的是,这似乎不会为 Ubuntu 生成任何 .efi 存根,所以我不确定此时该怎么做。如果不安装 GRUB 或任何其他引导加载程序,我该怎么做才能生成这些?请记住,在这个阶段,我实际上无法直接启动到 Ubuntu,只能进行实时安装,除非在实际安装过程中我应该做其他事情。
重申一下,我想要做的是:安装不使用 GRUB 的 Ubuntu,为 Ubuntu 生成 efi 存根,永远不要触碰 efi 固件或 Windows 启动目录,然后依靠 rEFInd 在启动期间找到这些存根。
答案1
首先,我假设“.efi 存根”指的是.efi
EFI 系统分区 (ESP) 上的扩展名文件。这些是 EFI 程序文件 - 最常见的是引导加载程序,但有时也是程序和实用程序。
如果你想通过 rEFInd 启动 Windows 和 Ubuntu没有使用 GRUB,那么 ESP 上唯一需要的 EFI 程序是 Windows 引导加载程序(由 Windows 安装)、rEFInd(refind_x64.efi
)和用于 Ubuntu 的任何文件系统的 EFI 文件系统驱动程序(可能是ext4_x64.efi
,在包含 的目录的drivers
或drivers_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 的目录中。