我正在运行带有自定义编译内核的 Gentoo Linux,并且刚刚从 2.6 内核迁移到 3.5。
由于我的硬盘处于 RAID 0 模式,因此我使用自定义 initrd 文件来启动。虽然内核 2.6 能够顺利启动,但新的 3.5 编译内核却无法启动,并出现错误no block devices found
。查看所initrd.cpio
包含的脚本后,我发现工具给出了失败消息mdadm
。
有人知道这件事吗?
编辑:今天早上我注意到我的旧 initrd 出现了某种问题,它在 2.6 内核下运行良好,因此创建了一个运行良好的新 initrd,并让我用相同的 3.5 bzImage 启动到 GNU/Gentoo Linux。
这可能是 mdadm 的问题,我要检查一下。
https://bugs.gentoo.org/show_bug.cgi?id=416081
答案1
新的内核通常需要新的 initrd。
生成的 (genkernel) initrd 中有一个scandelay=<seconds>
引导参数,过去它对我很有用。在我的一个机器上,mdadm 在所有设备可用之前运行,无法组装根分区所在的 /dev/mdX 设备。
如果我理解正确的话(从查看/usr/share/genkernel/defaults/initrd.scripts
),scandelay 会强制脚本在 udev 稳定下来之前、在组装任何软件阵列之前以及在尝试挂载真正的根分区之前挂起。
尝试 3-10 秒的扫描延迟。