我应该如何配置 grub 以从 USB 硬盘驱动器启动 linux 内核?

sko*_*ima 22 linux boot kernel usb grub2

我在外部机箱中有一个笔记本电脑硬盘驱动器,用作大型笔式驱动器。另外,我在其上安装了 Linux,因此我可以使用我选择的发行版启动任何机器(例如,用于数据恢复或修复 b0rked 系统或仅使用借来的笔记本电脑而不破坏预装的 Windows)。

问题是,根据硬件配置,USB 硬盘驱动器可能在不同路径下可见。对于 grub 配置,我只是使用(hda0,0)它,因为它与启动 grub 的设备相关。我在/etc/fstab. 我还在rootwait内核参数中指定,以便它在尝试挂载设备之前等待 USB 子系统稳定下来。

我应该将什么传递给内核root=?目前,从 pendrive 启动一次,检查调试消息以查看/dev/sdX内核已将哪些设备分配给 USB 驱动器,然后重新启动并编辑 grub 配置。除了Boot from USB hard drive在 BIOS 中启用并将其设置为比内部硬盘驱动器更高的优先级之外,我无法更改 PC 上的任何内容。

有多种 initrd 生成脚本在根设备路径中包含对 UUID 的支持,不幸的是,Gentoo 原生脚本(genkernel)不支持rootwait,我没有运气尝试使用其他脚本。

启动过程是这样的(在 Windows 中非常相似):

  1. BIOS 选择引导设备并加载其 MBR(恰好是 grub stage-1)。
  2. Grub 从它设置为的设备加载它的配置和第 2 阶段文件root,使用(hd0)它从 BIOS 加载的设备。
  3. Grub 加载并启动内核(仍然是相同的编号,所以我可以(hd0,0)再次使用)。
  4. 内核初始化所有内置设备(rootwait现在是不是很神奇)。
  5. 内核挂载它作为传递的分区root(这是一个内核参数,而不是 grub 参数)。
  6. init.d启动用户态引导过程,包括从/etc/fstab.

第 5 部分是给我的问题。

小智 7

我认为答案应该是使用root=LABEL=...root=UUID=...

但是你表明这对你不起作用。我建议查看您的 initrd 的操作是否存在问题。


小智 2

我可能是错误的,或者可能只是误解了你,但是启动设备的选择不是可以从你正在启动的机器的 BIOS 中配置的吗?

我认为这将是选择 USB 驱动器的问题,该驱动器将安装 GRUB 作为其引导加载程序,然后选择要从 GRUB 菜单引导的发行版。