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

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

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

有各种initrd生成脚本,包括在根设备路径中支持UUID,遗憾的是Gentoo本机(genkernel)不支持rootwait,我没有运气试图使用其他人.

启动过程如下(it is quite similar in Windows):

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

第5部分是给我带来问题的.

解决方法:

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

但是你表明这对你不起作用.我建议调查你的initrd的动作是否有问题.

上一篇:如何在没有initramfs的情况下启动linux?


下一篇:os-prober需要什么Linux内核功能才能找到Windows 8安装?