我应该如何配置grub从USB硬盘启动Linux内核?


17

我的笔记本电脑硬盘驱动器在一个外接盒中,用作大型笔式驱动器。另外,我已经在上面安装了Linux,因此可以选择自己的发行版来引导任何计算机(例如,用于数据恢复或修复已保存的系统,或者仅使用借用的笔记本电脑而不会破坏预装的Windows)。问题是,根据硬件配置,USB硬盘驱动器可能在不同路径下可见。对于grub配置,我只使用(hda0,0)它,因为它与启动grub的设备有关。我在中有UUID条目/etc/fstab。我还在rootwait内核参数中指定了它,以便它在尝试挂载设备之前等待USB子系统稳定下来。

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

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

引导过程如下(在Windows中非常相似):

  1. BIOS选择引导设备并加载其MBR(碰巧是grub stage-1)。
  2. Grub从它设置为的设备中加载配置文件和Stage-2文件root(hd0)用于从BIOS加载该设备的设备。
  3. Grub加载并启动了内核(仍然是相同的编号,因此我可以(hd0,0)再次使用)。
  4. 内核初始化所有内置设备(rootwait现在这样做很神奇)。
  5. 内核安装传递它的分区root(这是内核参数,而不是grub参数)。
  6. init.d开始userland引导过程,包括从安装/etc/fstab

第五部分是给我麻烦的那一部分。

Answers:


6

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

但是您指出这对您不起作用。我建议您调查一下initrd的操作是否有问题。


我没有initrd,这就是整个问题。genkernel不支持“ rootwait”选项,其他选项不适用于Gentoo。
Skolima

2

我可能会误会或可能只是误解了您,但是引导设备的选择不是由您正在引导的计算机的BIOS配置的吗?

我认为选择USB驱动器(将GRUB安装为引导加载器),然后从GRUB菜单中选择要发行的发行版将是一个问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.