Linux には、バスやサブシステムごとのインベントリーツールがあります。各コマンドが示すビューは異なるため、一つの完全なハードウェア一覧を期待せず、識別子、トポロジー、ドライバー、sysfs パス、ログを組み合わせて確認します。
デバイス · レッスン 6
lsusb、lspci、lsscsi
USB トポロジー、PCI 機能、SCSI 層のデバイス、それらの稼働中ドライバーを調べる方法を学びます。
USB デバイスを調べる
lsusb は USB サブシステムから見えるデバイスを一覧表示します。
$ lsusb
通常、出力にはバス番号とデバイス番号、ベンダー ID と製品 ID の組、ローカル USB ID データベースから得た説明が含まれます。数値のバス/デバイスアドレスは再接続や再起動後に変わり得るため、永続的な識別情報として扱ってはいけません。
コントローラー、ハブ、ポート、インターフェース、ドライバー、速度の関係は次のコマンドで表示します。
$ lsusb -t
詳細なディスクリプター出力も利用できますが、一部の詳細には高い読み取り権限が必要です。調査コマンドの警告を消すためだけに、USB デバイスへ広範な権限を与えてはいけません。
USB デバイスをトポロジーツリーとして表示するコマンドはどれですか?
PCI 機能を調べる
lspci は PCI および PCI Express バス上で検出された機能を一覧表示します。
$ lspci
内蔵または外部接続された PCIe デバイスには、グラフィックス、ネットワーク、ストレージ、USB、オーディオ、ブリッジの各コントローラーなどがあります。使用中のカーネルドライバーと候補モジュールは次のように表示します。
$ lspci -k
PCI コントローラーが一覧に現れても、その配下のすべてのデバイスが初期化済みで正常とは限りません。トラブルシューティングでは、ドライバーのバインドとカーネルログを確認します。
PCI の一覧にカーネルドライバー情報を追加するコマンドはどれですか?
SCSI 層のデバイスを調べる
lsscsi は Linux の SCSI 中間層を通じて表されるデバイスを一覧表示します。
$ lsscsi
ネイティブ SCSI デバイスに加え、SCSI 互換層を通じて提示される SATA、USB ストレージ、仮想ディスクが含まれることがあります。NVMe 名前空間は通常、別のサブシステムに属し、lsscsi だけでは包括的に一覧化されません。
多くの種類のブロックデバイスを含む、ストレージ指向の階層には lsblk も使います。
$ lsblk -o NAME,TYPE,SIZE,MODEL,SERIAL,TRAN,FSTYPE,MOUNTPOINTS
lsscsi が主に一覧表示するものは何ですか?
インベントリー結果を解釈する
説明はローカル ID データベースに由来することが多く、一般的すぎたり古かったりする場合があります。一覧にあるデバイスに動作するドライバーがないこともあり、仮想化環境ではエミュレートまたは準仮想化されたハードウェアが提示されることもあります。調査する問題と権限に応じて、結果を udevadm info、sysfs、lsblk、ネットワークツール、journalctl -k または dmesg と照合してください。
これらのユーティリティーは別々にパッケージ化され、一般には usbutils、pciutils、lsscsi などのパッケージで提供されます。コマンドがない場合は、出所不明の代替物をダウンロードせず、ディストリビューションのパッケージマネージャーを使ってください。
lspci にデバイスが表示されれば、ドライバーが有効で正常に動作していると証明できますか?
Linux でハードウェアデバイスを調査するを利用して、一つの管理されたホスト上でこれらのサブシステムビューを比較してください。
レッスン完了
lsusb、lspci、lsscsi を完了しました
対象デバイスのサブシステムに応じて、インベントリーコマンドを選べるようになりました。
USB の識別情報とトポロジーには
lsusbとlsusb -tを使う。PCI 機能とドライバーのバインドには
lspci -kを使う。SCSI 層のデバイスには
lsscsi、ブロックトポロジーにはlsblkを使う。列挙結果をドライバー、sysfs、カーネルメッセージと照合する。