为什么USB在UEFI / BIOS中工作时无法在Linux中运行?
作者:互联网
为了背景,我刚刚建立了一台带有现代硬件的新机器,包括:
> AMD FX-8350
>技嘉GA-990FXA-UD3主板
> 16GB RAM
> NVidia GTX 650 Ti
>金士顿SSD
鉴于此,我尝试在SSD上安装各种版本的Linux,几乎每次都遇到失败.我尝试从USB拇指驱动器安装Arch,Debian stable,Debian sid和Ubuntu 12.10但是当BIOS看到USB驱动器并开始从它启动时,一旦操作系统试图枚举USB设备,我就丢失了所有USB功能(包括启动设备).
最终我刻录了一张DVD并将Ubuntu 12.10安装到了SSD上.应该注意的是,我的USB键盘(和鼠标)在American Megatrends UEFI / BIOS中工作正常.即使我在Live Ubuntu DVD上的预安装菜单中,键盘也能正常工作.
一旦启动Linux(Live DVD或SSD),我将失去所有USB功能,并且只能使用PS / 2键盘导航操作系统.
我在dmesg / syslog中看到的几行是“未能加载微码amd_ucode / microcode_amd_fam15h.bin”,我看到USB设备无法初始化.
如果我做一个lsusb,我可以看到所有的USB主机控制器,但没有任何设备.做一个lspci向我展示了我期望的所有硬件.做一个lsmod我没有看到任何加载的usb模块(例如usb_ehci).
我尝试将noapic传递给内核启动字符串,它对此问题没有影响.
主板支持USB 3.0,但我已插入普通USB 2.0端口的所有设备.
我很困惑可能会杀死/阻止USB(和我的板载网卡)在Linux上工作.在BIOS中工作的这些设备似乎没有任何问题,我没有可用于测试的Windows安装,看看它是否有效.
我已经对主板进行了一次RMA,但是第二个具有完全相同的行为,所以我认为我可以安全地排除硬件故障(因为行为是相同的,我不认为我有两个相同的缺陷板奇怪大于这个Linux问题的可能性).
还有什么我可以尝试获得USB(理想情况下我的网络,但我们现在坚持使用USB)工作?
编辑#1:
由于我没有网络,所以我只能在这里讨论来自dmesg的有趣位.
对dmesg感兴趣我可以看到我有11个USB主控制器(OHCI,EHCI和xHCI).它会检测我的USB设备,然后立即失败,如下所示:
usb 3-1: new high-speed USB device number 2 using ehci_hcd
usb 3-1: device descriptor read/64, error -32
这会重复几次递增数字并尝试其他USB主机控制器,直到它回退到OHCI控制器,这些控制器也会失败,但还有一条消息:
usb 8-1:设备不接受地址4,错误-32
我认为我的网络问题与我在路由器上没有启用IPv6这一事实有关,这似乎是一个问题
eth1:不存在IPv6路由器
编辑#2:
lspci -vvv显示我的网络适配器(板载和扩展)都是Realtek Semiconductor(毫不奇怪);分别为RTL8111 / 8168B和RTL8169 / 8110.我的USB控制器是Etron Technology EJ168(xHCI)和AMD nee ATI SB7x0 / SB8x0 / SB9x0(EHCI& OHCI)
现在运行Debian wheezy modprobe显示usb_common,usbcore,xhci_hcd,ehci_hcd和ohci_hcd都已加载并正常运行.
解决方法:
我在ubuntuforums.org找到了这个帖子(http://ubuntuforums.org/showthread.php?t=2114055)的答案.
似乎更新的技嘉主板(至少)有一个名为IOMMU控制器的BIOS选项,默认情况下被禁用,并且没有提供任何线索或指示它是什么.
启用此设置并“神奇地”重新启动可以恢复64位Linux操作系统中的所有USB和网络问题(无论哪个都无关紧要).
我感到非常震惊和高兴,因为这是一个如此简单的解决方案.
感谢大家的帮助和建议.希望其他人会觉得这很有帮助.
更新:我想补充一点,我目前的BIOS设置还包括启用XHCI Handoff和EHCI Handoff以及IOMMU Controller.其他人也提到了这一点,启用这两个切换也允许我的USB 3.0端口按预期运行.
标签:bios,linux,usb,troubleshooting,uefi 来源: https://codeday.me/bug/20190808/1623677.html