web-dev-qa-db-ja.com

Linuxでのネットワークハードウェアステータスの確認

ハードウェアボードのステータスを確認するためのLinuxツールはありますか?

Windowsでは、「ハードウェアは正常に動作しています」などの行を表示するハードウェアダイアログがあります(英語版がないため、文字列が実際には異なる場合がありますが、アイデアは得られました)。

Linuxでも同じことを確認したいのですが。インストールされているハードウェアはわかっていますが、ドライバーが正しくロードされており、エラーがないことを知る必要があることに注意してください。

まったく同じハードウェアを備えた異なるPCにLinuxをインストールしているので、インストール後にすべてが機能することをすばやく知る方法が必要です。したがって、ボード(イーサネットカードなど)が何らかの理由で機能しない場合は、そのことを通知したいと思います。

lsmoddmesgを使用できることは知っていますが、それはそれほど「迅速」ではありません。 /procに、特定のボードですべてが正しく機能していることを(ボードごとに)通知するマジックファイルがあるのではないでしょうか。

具体的には、イーサネットボードとシリアルラインのステータスをテストする必要があります。

(シリアルラインドライバーはカーネルに直接コンパイルされるため、ここではlsmodはあまり便利ではありません)

3
Emiliano

イーサネットインターフェイスの場合、ethtoolを使用できます。

# ethtool -t eth0 online
The test result is PASS
The test extra info:
nvram test     (online)          0
link test      (online)          0
register test  (offline)         0
memory test    (offline)         0
loopback test  (offline)         0
interrupt test (offline)         0

これはセルフテストを実行しますが、ハードウェアとドライバーの適切なサポートに依存します。ステータスを取得することもできます。

# ethtool  eth0 
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes

これにより、接続パラメータとリンクステータスがわかります。

シリアル回線の場合、udevルールはドライバーをロードし、デバイスノードが存在する場合はそれを登録します。/dev/ttySの単なる存在?そこにハードウェアがあり、サニティテストに合格したことを示します。 Linuxドライバーはテストを実行し、合格しなかった場合、デバイスは登録されません。しかし、それが機能するかどうかを本当に知るには、ループバックプラグでテストする必要があります。

ああ、s setserialコマンドを使用してシリアルポートに関する情報を取得することもできます。

# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

その情報の存在は、あなたがそのシリアルポートハードウェアを持っていることを示しています。

1
Keith

テストは間違いなく正解です。どのハードウェアも故障する可能性があり、故障する可能性があります。さらに、使用しようとするまでは、動作しているように見えるように失敗することがよくあります。高負荷などの特定の場合を除いて、正常に動作する場合があります。これを念頭に置いて、「このハードウェアは正常に動作している」と言っているWindowsが役に立たないことは明らかです。

適度に大規模なハードウェアのセットを管理している場合でも、何らかのバーンインを実行することが不可欠です。CPUを集中的に使用するタスクを数時間実行し、大量のデータをディスクに書き込み、それを読み戻して、正しいこと、飽和状態であることを確認します。トラフィックのあるネットワークカードとドロップされたパケットを確認します。これが確実な唯一の方法です。

また、マシンの寿命を通じて、同様の(ただしおそらく小さい)チェックを実行するようにしてください。 nagiosのようなものを使用して、何かが間違っているとすぐにアラートを受け取るようにします。ハードウェアに障害が発生し、頻繁に障害が発生します。

1
spectre256