我的笔记本电脑硬盘驱动器在一个外接盒中,用作大型笔式驱动器。另外,我已经在上面安装了Linux,因此可以选择自己的发行版来引导任何计算机(例如,用于数据恢复或修复已保存的系统,或者仅使用借用的笔记本电脑而不会破坏预装的Windows)。问题是,根据硬件配置,USB硬盘驱动器可能在不同路径下可见。对于grub配置,我只使用(hda0,0)
它,因为它与启动grub的设备有关。我在中有UUID条目/etc/fstab
。我还在rootwait
内核参数中指定了它,以便它在尝试挂载设备之前等待USB子系统稳定下来。
我应该以什么形式传递给内核root=
?当前从笔式/dev/sdX
驱动器引导一次,检查调试消息以查看内核已将哪些设备分配给USB驱动器,然后重新引导并编辑grub配置。除了启用Boot from USB hard drive
BIOS并将其设置为比内部硬盘驱动器更高的优先级之外,我无法在PC上进行任何更改。
有各种各样的initrd生成脚本,其中包括对根设备路径中的UUID的支持,不幸的是,Gentoo本机脚本(genkernel)不支持rootwait
,我没有运气尝试使用其他脚本。
引导过程如下(在Windows中非常相似):
- BIOS选择引导设备并加载其MBR(碰巧是grub stage-1)。
- Grub从它设置为的设备中加载配置文件和Stage-2文件
root
,(hd0)
用于从BIOS加载该设备的设备。 - Grub加载并启动了内核(仍然是相同的编号,因此我可以
(hd0,0)
再次使用)。 - 内核初始化所有内置设备(
rootwait
现在这样做很神奇)。 - 内核安装传递它的分区
root
(这是内核参数,而不是grub参数)。 init.d
开始userland引导过程,包括从安装/etc/fstab
。
第五部分是给我麻烦的那一部分。