我可以使用可启动 USB 在 PCIe SSD 上启动 Ubuntu 吗?

art*_*bot 4 boot grub2

我的计算机的 BIOS 无法将我的 PCIe NVME SSD(足够的缩写?)驱动器识别为我可以从中启动的驱动器。BIOS 较旧(上次更新为 2011 年),并且 PCIe 卡可能未实现启动支持。

一旦 Ubuntu(在另一个 SATA 驱动器上)运行,我就可以看到并访问 PCIe 驱动器。

作为一种解决方法,我想知道是否可以创建一个带有 grub 的可启动 USB,然后能够识别 PCIe SSD 并从其启动?这可能吗?我该怎么做?(我认为我不需要 UEFI 启动,它是一台旧机器。)

Lau*_*ura 5

对于 Linux,如果您使用 initramfs 或类似的东西,您可以执行双步引导。

Linux 几乎可以从任何东西启动,比如慢速 USB 记忆棒、存储卡等,但它必须从 BIOS 可以看到的东西启动。

据说,有一种双步引导方式可以引导任何 Linux,我将尝试解释它。

Linux 和 Grub2 可以从 USB 启动,启动时要做的第一件事是加载内核和 initramfs 或等效文件。

要从 BIOS 之外的设备启动,您可以将该部件放在 USB 驱动器、内部 HDD 分区或 SSD 或 BIOS 可以启动的任何位置。

所以基本上你把引导代码(MBR)+ Grub 阶段+ 内核+ initramfs 放在BIOS 可以看到的设备上......又名/boot 作为分区。其余的你可以把它放在快速 NVMe 上或任何你想要的地方,但它必须位于可以从 initramfs 启动步骤中看到的设备上(这与从 LVM 和/或 LUKS 等内部启动是相同的技巧) 。

因此,有一个技巧,在 initramfs 上放置一些驱动程序(或编译内核或内核模块等),这些驱动程序将为 PCIe 卡和 NVMe 供电,从中可以看到驱动器,并且启动过程可以继续;在大多数情况下,Linux 安装程序会自动执行此操作,因此不必惊慌。

恢复:

  • BIOS 看到的可启动设备上的启动代码、Grub、内核和 initramfs(这基本上是 /boot 分区)
  • initramfs 以及用于启动 PCIe NVMe 的驱动程序
  • PCIe NVMe 上的根文件系统

瞧,Linux 可以启动...这是一个双步启动...它首先从 BIOS 可启动设备启动一小部分,然后从 RAM 驱动器内部加载为 PCIe 卡和 NVMe 供电所需的内容(以及更多的事情),然后它继续使用从 NVMe 安装的 root 启动。

听起来很简单,但可能很棘手,调试 initramfs PCIe 和 NVMe 电源的部分可以像什么都没有或真正的头一样简单。

我可以建议你,尝试使用 LiceCD,如果它看到 NVMe,则插入 USB 记忆棒,并在安装时告诉安装程序将 /boot 放在 USB 分区上,并将 Grub 放在 USB MBR 上;然后将 BIOS 配置为从 USB 启动,奇迹就完成了。

在慢速设备上使用 /boot 不会使启动速度减慢很多,因为它只有几兆字节。

但是一些非常旧的 PC(我的旧 Pentium IV 之一)有一个非常奇怪的 BIOS,在启动时它以 USB 1.x 速度使用所有 USB 2.0,因此启动 Grub 菜单相当快,但加载 kernel+initramfs 可以从两到五分钟。

如果您有任何可启动的 USB 3.x 记忆棒和 USB 3.x 端口(并非所有主板都允许从 USB 3.x 启动),请尝试使用它,它比 USB 2.x 快得多,而且比旧的快得多传统 USB 1.x 速度。

当然,如果您有 BIOS 可以识别的任何其他存储设备(内部),例如普通 HDD 或 sata SSD,请使用此类设备而不是 USB,因为在大多数情况下速度更快。

解决方案:

  • 安装 Linux 时,使用 BIOS 视为可引导 Grub + /boot 分区的设备
  • 并使用 PCIe NVMe 作为根文件系统
  • 将 BIOS 配置为从放置 Grub + /boot 分区的设备启动

在大多数情况下就是这么简单,大多数情况下,如果在 LiveCD 上看到 PCie NVMe,而无需安装任何东西,则测试在没有互联网连接的情况下启动此类 LiveCD(以确保没有下载任何内容),查看是否看到 NVMe,然后连接到互联网如果你想。

希望你能明白:Grub 和 /boot 分区位于一个单独的设备上,一个可以被 BIOS 视为可启动的设备,这就是关键。

PD:我喜欢解释为什么事情有效以及为什么我建议事情,而不仅仅是通过解决方案而不解释想法、步骤等,并且论坛不允许我发表评论。