背景として、次のような最新のハードウェアを備えた新しいマシンを構築しました。
そのため、SSDにさまざまなバージョンのLinuxをインストールしようとすると、ほぼ毎回失敗しました。 USBサムドライブからArch、Debian安定版、Debian sid、Ubuntu 12.10をインストールしてみましたが、BIOSがUSBドライブを認識し、そこから起動を開始しましたが、OSがUSBデバイスを列挙しようとするとすぐに、すべてのUSB機能が失われました(起動デバイスを含む)。
最終的に私はDVDを焼き、Ubuntu 12.10をSSDにインストールしました。 American Megatrends UEFI/BIOSでUSBキーボード(およびマウス)が正常に動作することに注意してください。ライブUbuntu DVDのプレインストールメニューにいるときでも、キーボードは正常に動作します。
Linuxが起動するとすぐに(Live DVDまたはSSDから)、すべてのUSB機能が失われ、PS/2キーボードを使用してのみOSをナビゲートできます。
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のインストールがありません。
私はすでにマザーボードを1回RMAしたが、2番目のマザーボードはまったく同じ動作をするので、ハードウェア障害を安全に除外できると思います(動作は同じであるため、2つの同一の欠陥のあるボードを取得することはあまりありません。これが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
OHCIコントローラーにフォールバックするまで数をインクリメントして他のUSBホストコントローラーを試行することを数回繰り返します。
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 nee ATI SB7x0/SB8x0/SB9x0(EHCI&OHCI)です。
Debian wheezy modprobe
を実行すると、usb_common
、usbcore
、xhci_hcd
、ehci_hcd
、ohci_hcd
がすべてロードされ、機能していることが示されます。
このスレッド( http://ubuntuforums.org/showthread.php?t=2114055 )からの回答をubuntuforums.orgで見つけました。
新しいギガバイトのメインボードでは(少なくとも)IOMMU Controller
と呼ばれるBIOSオプションがあり、デフォルトで無効になっていて、それが何のためにあるのか手掛かりや表示がありません。
この設定を有効にして「魔法のように」再起動すると、64ビットLinux OSでUSBとネットワークの問題がすべて復元されます(どちらでもかまいません)。
こんなに簡単な修正を探すのはとても長い間だったので、私はむしろショックを受けてうれしく思います。
あなたの助けと提案をみんなに感謝します。うまくいけば、他の人がこれが役に立つと思うでしょう。
更新:現在のBIOS設定には、IOMMUコントローラーに加えて、XHCIハンドオフとEHCIハンドオフの有効化も含まれていることを追加したいと思います。他の人もこれについて言及しており、これらの2つのハンドオフを有効にすると、USB 3.0ポートが期待どおりに機能するようになります。
GA-990FXA-UD7を使用して、USB 2.0およびUSB 3.0コントローラーとオンボードイーサネットコントローラーの両方がLinux(Mint 17.1を使用)で正しく機能するには、BIOSで次の設定が必要であることを知りました。
UEFIを無効にし、すべての起動オプションを「レガシーのみ」に変更することを忘れないでください。
容量が2.2 TBを超えるHDDから起動する必要がある場合は、別の問題が発生している可能性があります。
/ homeにmdadmを使用して、RAID 1(ミラーリング)アレイでブートドライブに256GB SSDと3TB HDDのペアを使用していますが、すべて正常に動作しています。
ギガバイトボードでの作業はかなり多かったので、990FXA-UD5ボードと990FXA-UD3ボードのBIOSは非常に似ているため、これらのボードでも同じことが当てはまる可能性があります。
奇妙なことに、ほぼ同じ設定(同じマザーボード、FX8350プロセッサ)を使用していますが、IOMMUを有効にしても違いはありませんでした。 USB、ネットワークなどはまだありません.
しかしdidヘルプは、カーネルコマンドラインに「iommu = soft」を追加していました。これで、すべて正常に動作します(ただし、奇妙な理由で、私のLogitech Zone Touch Mouseが動作しません)。
参考までに、LinuxがBIOSを介してデバイスを使用できない技術的な理由:OSが「保護モード」(32ビット)または「ロングモード」(64ビット)に移行すると、割り込みを送信できなくなりますBIOSに。 「リアルモード」(16ビット、起動時)では、BIOS割り込みを呼び出して、ディスクの読み取り、キーボード入力などを行うことができます。
しかし、それもマイナス面です。 1つには、1メガバイトのアドレス可能なメモリさえありません。したがって、最近のOSはリアルモードからほぼ最初に切り替わります。 (実際には、カーネルをロードする前にgrubがプロテクトモードに切り替わると思います)。
詳細: http://wiki.osdev.org/Real_Modehttp://wiki.osdev.org/Protected_Mode
私は同じプロセッサ(8コア)、同じMB(リビジョン3)、同じ量のRAM(Kingston)を持っています。
IOMMUのヒントは少し役に立ちました-すべてのポートはUSBキーボード、モニターUSBハブ、USB(Realtek)wifiアダプターを表示できますが、フラッシュドライブは表示できません。
この解決策が私を助けたようです:
cd /sys/bus/pci/drivers/ehci_hcd
ls
0000:00:xx.x形式のファイルが表示されます。次のコマンドを実行します。
Sudo sh -c 'echo -n "0000:00:xx.x" > unbind'
Xx.xをファイルに表示されている番号に置き換えます。 ehci_hcdを無効にする必要があります。
次のスクリプトを使用して、ehci_hcdを無効にできます。
cd /sys/bus/pci/drivers/ehci_hcd/
Sudo sh -c 'find ./ -name "0000:00:*" -print| sed "s/\.\///">unbind'
http://www.geekdevs.com/2010/04/solved-unable-to-enumerate-usb-device-disabling-ehci_hcd/
これらの手順は、Ubuntu 15.04を実行しているGIGABYTE 970A-DS3PおよびAMD-FX-8320で私にとってうまくいきました
OpenSuse 13.1を使用して、同じFX8350をGigabyte 990FXA-UD3で実行しています。私にとってうまくいった解決策は、YAST、デフォルトの選択(または私の場合はOpenSuse 13.1をロードするために使用している選択)、「quiet showopts」の後に「iommu = pt」を使用してブートローダーを編集することでした。
例えば:
「resume =/dev/disk/by-id/ata-Hitachi_HDS721010CLA332_JP2921HQ1076NA-part2 splash = silent quiet showopts iommu = pt」
これで、すべてのUSBポート2.0および3.0が機能し、インターネットネットワーキングも機能します。また、BIOSでIOMMUが有効になっていることを確認してください。
昨日、ASUSTek M5A99XマザーボードにUbuntuをインストールしているときにこの問題が発生しました。私の目的は、UEFIモードでUSBスティックからUbuntuを再インストールし、OSによるIOMMU検出を修正することでした(私のシステムは「レガシーBIOS」モードでインストールされましたが、これが理由かもしれません)。
以前は、UbuntuをUSBスティックからインストールして試してみました。レガシーで問題なく、UEFIは常に問題でした-インストーラーに入るときにキーボード/マウス/ Wifiが適切に機能していない(電源のみ)か、コンソールにメッセージが表示されてUIを読み込めませんでした:
(…) device descriptor read/64, error -32
(各USBデバイス用)(…) unable to find a live medium containing a live file system
(スティックから5〜6分の読み取り後)。このエラーには、USBスティックのタイプを「強制ハードディスク」に変更することによる回避策がありますが、システムを起動すると、インストール後に他の問題が発生しました。問題は「Unetbootin」または「Startup Disk Creator」にあると考えていましたが、そうではありません。 BIOSのすべての設定を試すのに2時間以上費やした(私はIOMMU Controller
またはxHCI Handoff
設定)、ただし助けになったのはBIOSのアップグレードで、最新バージョンにROMファイルをマザーボードモデル用にAsus Webサイトからダウンロードしました。解凍するのは簡単です)そして、ROMファイルをUSBスティックにコピーし、「EZ Flashユーティリティ」(BIOS内)を使用してファームウェアをフラッシュします。
これにより、私が抱えていたあらゆる種類のエラーが修正されました。 UEFIモードでUbuntuをインストールして使用することができました。さらに、IOMMUは問題なくUbuntuによって魔法のように検出されるようになりました。つまり、私の問題は、USB 2.0/3.0サポートとIOMMUサポートに関連するBIOSファームウェアのバグが原因でした。 (IOMMUが必要ない場合は、「詳細」セクションで無効にする必要がありますが、一般的ではありません)。