为什么 USB 端口故障会导致 Ubuntu 20.20 启动缓慢?

为什么 USB 端口故障会导致 Ubuntu 20.20 启动缓慢?

此系统上的 USB 端口有故障;我可以判断,因为插入它的设备无法工作,并且我收到类似以下的 dmesg 报告

[   11.673418] usb 2-1: device not accepting address 2, error -110
[   22.425445] usb usb2-port1: attempt power cycle

在同一台机器上安装的 Win10 给出了与同一端口相关的通用 USB 故障消息。没什么大不了的,还有很多其他的,用胶带封住端口,继续生活。但是,Ubuntu 在启动时暂停了大约一分钟,从启动systemd-udev(使用内核参数启动时可通过其日志消息识别debug)到挂载根文件系统(dmesg第 行EXT4-fs (sdb3): mounted filesystem with ordered data mode. Opts: (null)

那么,为什么会出现延迟?我该如何克服它,以便系统能够再次及时启动?

答案1

经过一番思考,我找到了这个解决方案:

脚本/usr/share/initramfs-tools/scripts/init-top/udev在 initramfs 启动阶段早期运行,在挂载根文件系统并正确启动 systemd 之前。它调用udevadm settle,等待所有硬件更改事件完成(不确定什么才算完成,但显然我的 USB 端口卡在这种半设置状态不算在内)。 的settle默认超时时间为 2 分钟,但我猜内核放弃 USB 初始化的超时时间为 1 分钟。

解决方案:编辑该脚本以添加--timeout=10,然后使用它sudo update-initramfs -u -k all 来更新 initrd。从技术上讲,如果我的 SATA 控制器需要很长时间才能启动,这可能会造成麻烦,因为它可能无法安装根 FS,但实际上这种情况似乎不会发生,而且所有其他硬件应该像热插拔一样工作。

相关内容