如何让 GRUB 引导不同的 USB 驱动器

如何让 GRUB 引导不同的 USB 驱动器

首先一些背景:

我有一台旧电脑,打算用作 NAS,并在闪存驱动器中安装了 openmediavault(基于 debian)。因此,我购买了带有 USB 3.0 端口的 PCI-E 扩展卡,以便从闪存驱动器获得更高的速度(因此安装在 USB 2.0 端口上需要很长时间,即使是简单的 apt-get 更新也需要很长时间)。问题是,我的主板(华硕 P5KPL)本身无法识别 PCI-E 卡(或者可能是 3.0 USB,或者两者都是)。我花了一些时间谷歌搜索,发现一个建议将 boot 和 grub 移动到 2.0 端口中的闪存驱动器,这样基本驱动器将加载 grub,并编辑 grub.cfg 以指向 3.0 闪存驱动器中的发行版。


问题:

这就是我遇到困难的地方,我对 Linux 还很陌生。我将 openmediavault 启动文件夹复制(按字面意思 ctrl+c ctrl+v)到另一个闪存驱动器,但是当我打开 OMV 安装程序生成的 grub.cfg 时,我几乎什么都看不懂:https://pastebin.com/i1khxP2S- 这是安装时生成的原始 grub.cfg。

这对我来说毫无意义。我尝试在第 177 行添加我读到的内容这里这里喜欢:

menuentry "Try USB HD0 boot" {
    rootnoverify (hd0)
    chainloader +1
    boot
}

menuentry "Try USB HD1 boot" {
    map (hd0) (hd1)
    map (hd1) (hd0)
    liveswap
    rootnoverify (hd0)
    chainloader +1
    boot
}

但我仍然迷失,没有成功。知道我应该编辑什么吗?

几点:

- 我正在闪存驱动器上安装发行版 (openmediavault),因为它是 NAS 发行版,我打算将 HDD 专门留给存储。

-当我从 USB 2.0 端口从 openmediavault ISO 安装程序启动时,它立即识别出 3.0 端口上的闪存驱动器,所以我认为任何类型的基本驱动器都应该可以工作。

- 已经收到在BIOS中启用ACPI 2.0支持的建议,但没有成功。

编辑:尝试使用通用且基本的 grub.cfg 并使用尽可能少的行,但仍然没有成功。

答案1

我想,也许,这不是 grub 的问题。

如果您想从 USB 驱动器运行 Linux(并且不想弄乱计算机存储),那么您需要两个不同的 USB/闪存驱动器:

  1. 要安装在
  2. 运行从

此外,您还应在第二个 USB/闪存驱动器上创建一个 1 GB 分区来安装引导加载程序。

答案2

GRUB 依赖于系统固件的硬件支持。在基于 BIOS 的旧系统上,固件通常在启动时仅支持一个 USB 存储设备,甚至仅当您专门选择从该设备启动时才支持。换句话说,BIOS级别对USB存储设备的支持相当有限。

特别是,如果您将 USB 3.x PCIe 卡添加到主板仅具有 USB 2.0 端口的系统,则固件几乎肯定根本无法识别 USB 3.x XHCI 控制器。我从未见过这样的扩展卡带有 BIOS 扩展 ROM,可以将 BIOS 引导支持扩展到 USB 3.x 设备。

此外,这些chainloader条目将要求您在 USB 3.0 闪存驱动器上拥有另一个 GRUB 实例,从而要求您在同一系统和单个操作系统上管理两个不同配置的 GRUB。我认为这是不必要的并发症。

您必须从 USB 2.0 设备加载 Linux 内核和 initramfs 文件,并确保所有 USB 控制器驱动程序都包含在 initramfs 文件中。一旦内核启动并从 initramfs 加载其 USB 驱动程序,它将提供完整的 USB 3.x 支持,并且可以从 USB 3.0 设备挂载根文件系统。

这本质上意味着/bootUSB 2.0 闪存驱动器上有一个分区,而 USB 3.0 闪存驱动器上有根文件系统(以及操作系统的其余部分)。如果您想将现有安装修改为该安装,则必须:

  • 将根文件系统复制到 USB 3.0 设备
  • 修改linux ...现有 GRUB 配置的行以指向新的根文件系统
  • 启动进入新配置并验证其是否有效
  • 验证是否update-grub会使用正确的内核选项正确重新生成 GRUB 配置root=,以便系统更新不会导致 GRUB 失败(如果需要更正,编辑/etc/default/grub就足够了)

相关内容