为什么要减慢usb和scandelay?

为什么要减慢usb和scandelay?

我正在运行用 genkernel 编译的 linux-3.4.9,并从 USB HDD 启动。我对缓慢的启动过程感到有点恼火,特别是在 modprobe 和 mdev 阶段执行 genkernel 脚本期间。

因此,在加载模块后,似乎需要等待一段固定的时间来等待设备初始化。这其中有什么深层次的原因吗?为什么不等到特定的根设备变得可用呢?或者我对情况的理解完全错误?

答案1

这里必须考虑的第一件事是,既然您能够从 USB 启动,这意味着您的 PC 的 BIOS 支持从 USB 设备启动。这又意味着 BIOS 具有包含 USB 协议栈的嵌入式固件,并且可以通过通用串行总线控制 USB HDD 等目标设备。 USB主机(需要启动的PC)和USB设备(USB HDD)之间建立USB握手协议后,可以抽象掉USB提供的控制和数据机制,上层的BIOS启动代码可以被抽象出来。将 USB HDD 视为内置 HDD。也就是说,必须读取“磁盘驱动器”的第一个扇区才能获取其主引导记录(MBR)。

然而,像你这样的一些问题是由于USB初始化方式发生了一些变化而开始的。以前,每个USB在初始化过程中都有100毫秒的睡眠时间。但是,新的USB使用延迟工作机制来安排下一次初始化未来 100 毫秒。对于内置 USB 更改的内核,这允许启动线程执行其他工作,而不是阻塞等待这些延迟。然而,由于未来延迟的变化,不具有此功能的内核需要更长的时间来启动。

相关内容