创建 USB 引导程序以在旧的非 efi PC 上从 PCIe NVMe 启动 Ubunto 23.10.1

创建 USB 引导程序以在旧的非 efi PC 上从 PCIe NVMe 启动 Ubunto 23.10.1

我有一台 2010 年的 PC,我想将其用作 Ubuntu 23.10.1 服务器。SATA 端口有其他几个 HDD,我使用 ESXi,而且它们只有 3 GB/s,而不是 6 GB/s。BIOS(无 EFI)看不到它,但 Ubuntu 可以正常安装到 /dev/nvme0n1。我让它使用 LVM 创建它想要的 3 个分区。

我使用的是 BIOS 可以识别并从中启动的 8GB microSD USB 驱动器。理想情况下,它会有一个 GRUB2 启动菜单,让我选择要启动哪个系统。此时,我只是尝试从安装了 Ubuntu 的 PCIe NVMe 启动。

我花了几天时间查看各种关于如何做到这一点的文章和帖子。其中很多都是几年前的,似乎是为 grub-legacy 编写的,或者似乎不能满足我的需求。

我使用 USB 驱动器上的 Live CD ISO 来安装 23.10.1。在重新启动系统之前,我将 /boot 文件夹从 /target/boot 复制到 USB 驱动器。USB 格式为 FAT32,因为其中一篇帖子提到如果还想启动 Windows,则使用 FAT32,我稍后会这样做。

由于 FAT32 不允许符号链接,我只是复制了 /target/boot 中显示的链接指向的两个实际文件并重命名它们,因此我有了 initrd.img 和 vmlinuz 文件。

我认为使用完整 NVMe 安装中的 /target/boot/grub/grub.cfg 会指向正确的“set root=”。我注意到,甚至在第一个 GRUB 菜单项之前,它就设置了 root='lvmid/ (some ID) / (another ID)'。然后,对于 Ubuntu 菜单项,它会将“set root=”设置为新系统的 /boot 所在的 /dev/nvme0n1p2 的 UUID。

当我启动 USB 驱动器时,它显示:

error: no such partition
Entering rescue mode...
grub rescue>

当我执行“ls”时,我没有得到有关 NVMe 的任何信息,至少就我所理解的而言。我读过的一篇帖子暗示 hd0 实际上是我从中启动的 USB 驱动器。

grub rescue> ls
(hd0) (hd0,gpt2) (hd0,gpt1)

如果可能的话,关于如何让 USB 驱动器显示启动菜单(让我启动到 Ubuntu 23.10.1 PCIe NVMe 驱动器)的一些分步说明会很棒。

相关内容