私はカスタムLinuxシステム(Yoctoを使用して作成された)がインストールされているコンピュータを持っています。このバージョンを使用する古いコンピュータではネットワークインターフェイスが正しく機能していましたが、この新しいコンピュータではeth0がまったく表示されません。ネットワークインターフェイスをオンラインで取得して設定する方法(OSがネットワークインターフェイスを認識し、名前(eth0)がある場合)を知っていますが、eth0が存在しない場合は、最初にインターフェイスを作成する方法がわかりません。場所。
まず、Ubuntuを起動するとそれを認識して正常に動作するため、ハードウェアの問題はなく、Linuxは確実にハードウェアを使用できることを指摘したいと思います。
第二に、lspciを使用してネットワークカードを見ることができます。
root@intel-corei7-64:/etc# lspci -v -s 01:00.0
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
Subsystem: Mitac Device 0787
Flags: fast devsel, IRQ 23
I/O ports at e000 [size=256]
Memory at 91104000 (64-bit, non-prefetchable) [size=4K]
Memory at 91100000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 44-01-00-00-68-4c-e0-00
Capabilities: [170] Latency Tolerance Reporting
Capabilities: [178] L1 PM Substates
Kernel modules: r8169
第三に、ドライバがインストールされていると思います。
root@intel-corei7-64:/etc# lsmod | grep r8169
r8169 77824 0
libphy 61440 2 r8169,realtek
ここでどこに行くべきかわかりません。 ip link show
インターフェイスをオプションとして表示しないでください。インターフェイスが自動的に生成されない理由や手動で生成する方法がわかりません。
また、USB ->イーサネットコネクタを接続すると、eth0がオンラインになり、正しく設定されていることがわかります。ただし、内蔵ネットワークカードは機能しません。
最後に、dmesgは関連性のある行を表示しますが、それが何を意味するのかわかりません。
igb: Intel(R) Gigabit Ethernet Network Driver - version 5.6.0-k
dmesgにも次のメッセージがあります。
r8169 0000:01:00.0: enabling device (0000 -> 0003)
r8169: probe of 0000:01:00.0 failed with error -5
r8169: probe of 0000:01:00.0 failed with error -5
このネットワークカードをオンラインにする方法についてのアイデアはありますか?
答え1
このr8169
モジュールは多くのRealtek NIC用のドライバです。これらの多くは、NICを正常に初期化するためにファームウェアパッケージが必要です。
リストを確認してくださいdmesg
(例dmesg | grep firmware
:)。同様のメッセージを見つけることもできますUnable to load firmware <name of firmware file>
。これは、ファームウェアファイルを提供する必要があることを意味します。
カスタムシステムがあるので、以下からファイルをダウンロードするのが最も簡単です。LinuxファームウェアGitリポジトリ/lib/firmware/rtl_nic/
システムのディレクトリに入れます。
Ubuntuでは、Realtek NICファームウェアファイルがパッケージ化されておりfirmware-realtek
、インストーラはユーザーが必要であることを検出すると、オペレーティングシステムのインストールプロセス中に自動的に追加するのに十分スマートです。
ファームウェアファイルが準備されたら、モジュールをr8169
アンロードして再ロードします。
modprobe -r r8169
modprobe r8169
これで、モジュールがファームウェアファイルを見つけてNICハードウェアに提供できるようになり、カードが正しく初期化されます。
一部のハードウェアデバイスには複数のファームウェアファイルが必要な場合があるため、NICがまだ利用できない場合は、リストの最後にdmesg
新しいメッセージを再確認してください。
答え2
エラー - EIO は、ネットワークドライバレベル以下の項目が正しく動作しないことを意味します。次のレポートが表示されます。 https://bugzilla.kernel.org/show_bug.cgi?id=203025 または、printfデバッグを実行して何が間違っているかを確認してください。 dmesg ログを詳しく見てみると、ヒントを得ることもできます。 igb 関連メッセージはここでは関係ありません。 PCI(e)をサポートするための基本的な構成オプションがいくつかありません。
答え3
5.10 Linuxカーネルを含む最新バージョンのyoctoにアップグレードしました。正確に何が解決されたのかわかりませんが、今は機能しています。満足のいく修正ではありませんが、うまくいきます。