Linuxにネットワークインタフェースを認識させる方法は?

Linuxにネットワークインタフェースを認識させる方法は?

私はカスタム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にアップグレードしました。正確に何が解決されたのかわかりませんが、今は機能しています。満足のいく修正ではありませんが、うまくいきます。

関連情報