Для справки я только что построил новую машину с современным оборудованием, включая:
- AMD FX-8350
- Gigabyte GA-990FXA-UD3 материнская плата
- 16 ГБ ОЗУ
- NVidia GTX 650 Ti
- Кингстон SSD
Учитывая это, я пытался установить различные версии Linux на SSD и почти каждый раз встречался с ошибкой. Я попытался установить Arch, Debian stable, Debian sid и Ubuntu 12.10 с флэш-накопителя USB, но в то время как BIOS увидел USB-накопитель и начал загружаться с него, как только ОС попыталась перечислить USB-устройства, я потерял все функции USB (включая загрузочное устройство).
В конце концов я записал DVD и установил Ubuntu 12.10 на SSD. Следует отметить, что моя USB-клавиатура (и мышь) отлично работают в то время как в американском Megatrends UEFI / BIOS. Даже когда я в меню предустановки на Live Ubuntu DVD, клавиатура работает нормально.
Как только Linux загружается (Live DVD или SSD), я теряю все функции USB и могу перемещаться по ОС только с клавиатуры PS / 2.
В dmesg / syslog я вижу несколько строк о " failed to load microcode 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 Host, пока не переключится на контроллеры OHCI, которые также отказывают, но имеют дополнительное сообщение:
usb 8-1: device not accepting address 4, error -32
Я думаю, что мои проблемы с сетью связаны с тем, что у меня не включен IPv6 на моем маршрутизаторе, и это, кажется, проблема
eth1: no IPv6 routers present
Изменить № 2:
lspci -vvv
показывает, что мои сетевые адаптеры (как встроенные, так и расширения) являются Realtek Semiconductor (неудивительно); RTL8111 / 8168B и RTL8169 / 8110 соответственно. Мои USB-контроллеры - это Etron Technology EJ168 (xHCI) и AMD ATI SB7x0 / SB8x0 / SB9x0 (EHCI & OHCI)
Сейчас работает в Debian свистящих modprobe
показывает usb_common
, usbcore
, xhci_hcd
, ehci_hcd
, и ohci_hcd
все загружены и функционируют.
dmesg
, попробовалиmodprobe
подключить USB-модули?Ответы:
Я нашел ответ в этой теме ( http://ubuntuforums.org/showthread.php?t=2114055 ) на сайте ubuntuforums.org.
Кажется, что на более новых материнских платах Gigabyte (по крайней мере) есть опция BIOS,
IOMMU Controller
которая по умолчанию отключена и не дает никакой подсказки или указания относительно ее предназначения.Включение этого параметра и перезагрузка «волшебным образом» восстанавливают все мои проблемы с USB и сетью в 64-битной ОС Linux (не имеет значения, какая именно).
Я довольно шокирован и воодушевлен тем, что это был такой долгий поиск такого простого решения.
Спасибо всем за вашу помощь и предложения. Надеюсь, другие найдут это полезным.
Обновление: я просто хотел бы добавить, что мои текущие настройки BIOS также включают в себя включение передачи обслуживания XHCI и передачи обслуживания EHCI в дополнение к контроллеру IOMMU. Другие также упоминали об этом, и включение этих двух передач также позволяет моим портам USB 3.0 работать должным образом.
источник
Я только что узнал с помощью GA-990FXA-UD7, что для правильной работы контроллеров USB 2.0 и USB 3.0 и встроенного контроллера Ethernet в Linux (я использую Mint 17.1) необходимы следующие настройки в BIOS:
Не забудьте отключить UEFI и изменить все параметры загрузки на «Legacy Only».
Если вам действительно нужно загрузиться с жесткого диска емкостью> 2,2 ТБ, у вас может быть другая проблема.
Я использую 256 ГБ SSD для моего загрузочного диска и пару 3 ТБ жестких дисков в массиве RAID 1 (зеркальный), используя mdadm для моего / дома, и все работает хорошо.
Я довольно много работал с платами Gigabyte, я знаю, что платы 990FXA-UD5 и 990FXA-UD3 имеют очень похожий BIOS, так что, вероятно, то же самое применимо и к этим платам.
источник
iommu=soft
в сочетании с xHCI + eHIC Handoff и контроллером IOMMU (все включено), без необходимости включать «Legacy Only». Arch Linux при полной загрузке, EFI и без проблем с корневым устройством iommu или usb3.Как ни странно, несмотря на то, что у меня есть почти идентичные настройки (та же материнская плата, процессор FX8350), включение IOMMU для меня не имело никакого значения. Все еще нет USB, сети и т. Д.
Что же помощь, хотя, добавлял «IOMMU = мягкая» в командной строке ядра. Теперь все работает нормально (за исключением того, что по какой-то странной причине моя мышь Logitech Zone Touch Mouse не работает).
источник
К вашему сведению, технические причины, по которым Linux не может использовать устройства «через» BIOS: после перехода ОС в «защищенный режим» (32-разрядный режим) или «длинный режим» (64-разрядный режим), он больше не может отправлять прерывания. в биос. В «реальном режиме» (16-разрядный, при загрузке) он может вызывать прерывания BIOS для чтения дисков, ввода с клавиатуры и т. Д.
Но у этого также есть недостатки. Во-первых, у вас даже нет мегабайта адресуемой памяти. Поэтому современные ОС переключаются из реального режима практически на первое место. (На самом деле, я считаю, что grub переключается в защищенный режим еще до того, как загружает ядро).
Более подробная информация: http://wiki.osdev.org/Real_Mode http://wiki.osdev.org/Protected_Mode
источник
У меня такой же процесс (но 8-ядерный), тот же MB (rev 3) и тот же объем оперативной памяти (Kingston)
Совет с IOMMU немного помог - все порты могут видеть USB-клавиатуру, монитор USB-концентратор и USB-адаптер (Realtek) Wi-Fi, но без флешки.
Кажется, что это решение помогло мне:
Вы увидите файл в формате 0000: 00: xx.x. Выполните следующую команду:
Замените xx.x числами, отображаемыми в вашем файле. Следует отключить ehci_hcd.
Теперь вы можете использовать следующий скрипт для отключения ehci_hcd.
http://www.geekdevs.com/2010/04/solved-unable-to-enumerate-usb-device-disabling-ehci_hcd/
источник
Эти шаги работали для меня с GIGABYTE 970A-DS3P и AMD-FX-8320 под управлением Ubuntu 15.04
источник
У меня тот же FX8350, работающий на Gigabyte 990FXA-UD3 с использованием OpenSuse 13.1. Решение, которое работало для меня, состояло в том, чтобы отредактировать загрузчик, используя YAST, выбор по умолчанию (или выбор, который вы используете для загрузки OpenSuse 13.1 в моем случае), «iommu = pt» после «тихого показа».
Например:
Теперь все мои USB-порты 2.0 и 3.0 работают, и мои интернет-сети тоже работают! Также убедитесь, что IOMMU включен в BIOS.
источник
Вчера у меня возникла эта проблема при установке Ubuntu на мою материнскую плату ASUSTek M5A99X. Моя цель состояла в том, чтобы переустановить Ubuntu с USB-накопителя в режиме UEFI, чтобы исправить обнаружение IOMMU операционной системой (моя система была установлена через режим «Legacy BIOS», я подумал, что это может быть причиной).
Ранее я пробовал это, установив Ubuntu с флешки. Хорошо с Legacy, UEFI всегда был проблемой - либо моя клавиатура / мышь / Wifi не работала должным образом (только питание) при входе в установщик, либо установщик не мог загрузить интерфейс с сообщениями в консоли:
(…) device descriptor read/64, error -32
(для каждого USB-устройства)(…) unable to find a live medium containing a live file system
(через 5-6 минут чтения с флешки). Эта ошибка имеет обходной путь с изменением типа USB-накопителя на «Force Hard Disk», но загрузка системы вызвала другие проблемы позже после установки.Я думал, что проблемы связаны с «Unetbootin» или «Startup Disk Creator» - это не так. Потратил более 2 часов на то, чтобы попробовать все настройки в BIOS (у меня их нет
IOMMU Controller
илиxHCI Handoff
настройки у меня), но помогло только одно - обновление BIOS до последней версии с файлом ROM, загруженным с веб-сайта Asus для моей модели материнской платы. Это просто, как разархивировать и скопировать файл ROM на USB-накопитель и использовать «EZ Flash утилиту» (в BIOS) для прошивки прошивки.Это исправило все ошибки, которые у меня были; Я смог установить и использовать Ubuntu в режиме UEFI. Более того, IOMMU теперь магически обнаруживается Ubuntu без проблем. Это означает, что мои проблемы были вызваны ошибками прошивки BIOS, связанными с поддержкой USB 2.0 / 3.0 и поддержкой IOMMU. (если вам не нужен IOMMU, вы должны отключить это в разделе «Дополнительно», потому что это не обычное дело).
источник