使我的 extlinux 启动的 Ubuntu 可通过 UEFI 启动的最简单方法是什么?

使我的 extlinux 启动的 Ubuntu 可通过 UEFI 启动的最简单方法是什么?

我有一个单分区 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 加载器。

相关内容