我有一台 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 驱动器)的一些分步说明会很棒。