Linux はどうやってハードウェアの名前を認識するのでしょうか?

Linux はどうやってハードウェアの名前を認識するのでしょうか?

コマンドを実行するとしますlspci。このコマンドは、システム内のデバイスの名前とモデルを報告します。出力は次のようになります。

03:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 3e)

この文字列「Centrino Ultimate-N 6300」はどこから来たのでしょうか? 元々はネットワーク カードの ROM 内のどこかに保存されていたのでしょうか? そうでない場合、カードは Linux カーネルが一意に識別できる情報を提供していたはずです。その情報とは何ですか? どうすれば入手できますか?

答え1

名前は、テキスト記述用のローカル データベース/テキスト ファイルを使用してハードウェアの PCI ベンダー:デバイス コードを翻訳したものから取得されます。

ファイル自体は にあります/usr/share/misc/pci.ids

この場合、Debian 9/Stretch のこのファイルで見つけることができます:

「インテルコーポレーション」:

[line 19280] 8086  Intel Corporation

Centrino Ultimate...

[line 24449]         422b  Centrino Ultimate-N 6300

テキストから判断すると、PCIベンダー:デバイスコードは8086:422bのようです。

関連情報