![连接外部 USB HUB 后操作系统启动失败(有变通方法但无解决方案)](https://linux22.com/image/1495904/%E8%BF%9E%E6%8E%A5%E5%A4%96%E9%83%A8%20USB%20HUB%20%E5%90%8E%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5%EF%BC%88%E6%9C%89%E5%8F%98%E9%80%9A%E6%96%B9%E6%B3%95%E4%BD%86%E6%97%A0%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%89.png)
经过大量测试,我缩小了问题的范围,其中在 BIOS 中使用“加载最佳默认值”选项且插入 USB HUB 时,Windows 7 和 Ubuntu Mate 64 位无法启动(TA790GX3 A2+ 主板、Phenom 9950BE CPU、4 Gig RAM 和 GeForce GT 620)。
BIOS“USB 配置”是:
传统 USB 支持 - 已启用
USB 2.0 控制器模式 - 高速
BIOS EHCI 切换 - 已启用
使用这些设置,Windows 启动到显示“正在加载 Windows”(徽标从未出现)的阶段,并且 Linux 在内核初始化期间失败且没有任何消息。
以下任一项操作均可允许计算机启动:
断开外部 USB 2.0 集线器。
禁用传统 USB 支持(无法使用 USB 键盘进入 BIOS)。
将传统 USB 支持设置为自动,且不连接任何 USB 设备。
将 USB 2.0 控制器模式设置为全速 (USB 1.1)。
禁用 EHCI 切换。
由于我使用的是 USB 键盘和鼠标,因此无法禁用传统 USB 支持。禁用 EHCI 切换会导致休眠功能无法正常工作。在 Windows 启动后才断开 USB HUB 连接并不方便。将 USB 2.0 控制器设置为全速会使从 USB 设备启动变得非常缓慢。
Windows 7 和 Linux 都加载驱动程序来支持 USB OHCI、EHCI、xHCI 等,因此 BIOS Legacy 支持是否启用并不重要。甚至 USB 2.0 控制器的初始设置也被取代,最终操作系统将其设置为 HiSpeed。看来 SB750 南桥和操作系统之间的某种低级交接导致硬件总线在初始化期间挂起。
测试使用基于 FE2.1、GL850G 和 UPD720110A 的 USB HUB 完成。将 USB 鼠标和键盘连接到任何 HUB 时,启动总是失败。FE2.1 在没有插入任何内容的情况下会导致失败,而 UPD720110A 在没有插入任何内容的情况下可以正常工作。虽然某些 HUB 芯片组可能允许系统启动,但最终,许多 I/O 设备(如键盘或网络摄像头)会导致失败。
从硬件角度来看,一些用户认为电源或中断请求 (IRQ) 冲突可能会导致此问题。不稳定的电源可能会引发许多问题,但令人怀疑的是,启动失败是否会在 BIOS 移交给操作系统时单独且持续地发生。
基于 x86 的 IRQ 架构因冲突而臭名昭著,因为它仅为所有硬件提供 15 条线路。通常,用户必须硬设置 IRQ,并在 BIOS 中禁用即插即用功能,或覆盖操作系统 (Windows 95/98/ME) 中的设置,才能使设备正常工作。这些问题似乎在 Windows XP、64 位架构和 PCIe 时代消失了。无论如何,没有旧的 IRQ BIOS 设置生效,并且没有重叠的 IRQ,甚至没有使用任何低于 15 的 IRQ。
目前,我还没有解决这个问题的办法。最有希望的解决方法是将 USB 控制器设置为全速。有趣的是,我的另一台计算机由 TA780G M2+ 主板、相同的 CPU 和内存组成,使用默认 BIOS 设置可以正常启动。
答案1
我在使用英特尔较旧的芯片组时也遇到过类似的问题。更新芯片组驱动程序解决了该问题。由于发生这种情况,我假设操作系统在 1.1 设置和 2.0 设置的情况下加载了不同的 USB 驱动程序文件。
-更新-
在阅读了您对该问题的更新后,似乎必须在中断级别进行调试。这似乎是 ACPI/EHCI 问题(检查 BIOS 是否更改了这些内容,除了切换之外的任何其他内容)。如果 IRQ 10 已分配给 BIOS 中的任何内容(它与 int 72h /USB int 相关),请尝试取消分配该 IRQ。此外,取消分配不再需要 IRQ 的设备也可能有帮助。这个想法是不要让 USB 集线器控制器占用共享 IRQ(这应该可以通过启动屏幕信息检查)。