我有一个单分区 Ubuntu 系统,它完全包含在 ext2 文件系统中,它是其磁盘的活动分区(MBR 分区表)。
它通过 extlinux 启动,显然是传统启动。它负责加载 vmlinuz 和 initrd.lz 文件,它唯一能做的事情就是,没有菜单。
较新的计算机(谢天谢地,没有我的计算机)不再支持旧版,所以我正在寻找一种方法使其可以通过 UEFI 启动。
我不希望有任何单独的启动菜单,没有什么特别的。我只希望它成为仅支持 UEFI 的计算机的启动选项,一旦选择,它所做的就是启动 Linux,不会有任何疑问,就像我的 extlinux 目前所做的一样。
那么,最快的路径是什么?
我只想要一个在分区中加载 vmlinuz 和 initrd.lz 的 UEFI 加载器。
答案1
我找到了一条非常简单的方法来使我的 extlinux 启动的 ubuntu UEFI 可启动:使用 Syslinux。
事实上,我甚至设法让它同时通过 Legacy 和 UEFI 模式启动一些系统还会扫描 MBR 分区设备中的 UEFI 加载程序。
解决方案非常简单:我安装了 syslinux-efi 和 syslinux。我在磁盘上创建了一个新分区,将其类型设置为 ef00(efi 分区),并将其格式化为 FAT32 格式。然后我创建了这两个文件夹:
<mountpoint>/EFI/boot/
然后我将 syslinux 文件复制到其中:
cp -r /usr/lib/syslinux/modules/efi64/* <mountpoint>/EFI/boot/
cp -r /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi* <mountpoint>/EFI/boot/bootx64.efi
文件夹和 efi 文件 (bootx64.efi) 的名称必须是这些名称,因为 BIOS 会自动扫描是否存在这些名称,并将它们添加为菜单中的启动选项。除非您使用 EFI 管理器添加该条目,否则它不适用于其他名称。但对于自动识别,您需要这个。
然后只需将 extlinux 正在加载的相同 vmlinuz 和 initrd.lz 文件复制到该 EFI 分区,并将 extlinux.conf 复制到 /EFI/boot/syslinux.cfg。
就完成了。它将加载 vmlinuz 和 initrd.lz 并正常启动。
并且它仍然可以通过传统启动方式启动。
如果您的 BIOS 忽略您的设备是 MBR 分区,您可能会感到头疼。
在这种情况下,您必须在创建我提到的 EFI 分区之前将其从 MBR 转换为 GPT,但其他一切都保持不变。
那么它将不再可以通过传统启动方式启动。
另请注意,到目前为止,这里没有任何内容支持安全启动。
因此,如果机器具有安全启动功能,则需要将其禁用,或者需要其他方法使其接受此 efi 加载器。