カーネルがサポートするすべてのハードウェアを一覧表示する方法

カーネルがサポートするすべてのハードウェアを一覧表示する方法

使用しているカーネルがサポートしているすべてのハードウェアを見たいです。たとえば、3.8.xx バージョンの Linux カーネルがある場合、どのハードウェアがサポートされているかをどうやって知ることができますか?lspci、、、、lshwなどlscpuのツールは、dmidecode現在使用されているハードウェアのみを確認し、ロードされたモジュールを利用して探そうとするのも不便であるlsmod

私が望むのは、そのハードウェアを使用しているかどうかに関係なく、私が使用しているカーネルが実際にサポートしているすべてのハードウェアを確認することです。

現在私は次のことを考えています。

  • 各ファイルを読み取り、/lib/modules/3.8.0-5-generic/kernel/drivers解析します。
  • これについて詳しくは、カーネルとgrepのgitソースコードをダウンロードしてください。
  • 他の奇妙で長いアプローチ。

これを達成する他の小さな方法はありますか?

答え1

利用可能なすべてのモジュールを呼び出すことができますmodinfo。これにより、モジュールのエイリアスが印刷されます。このモジュールのエイリアスの1つe1000eは次のとおりです(エイリアスがたくさんあります)。

pci:v00008086d00001559sv*sd*bc*sc*i*

これは、ベンダーIDを持つPCIデバイスにロードする必要があることを意味します。8086とデバイスID1559。 USBデバイスのパターンは似ているようです。

答え2

私が望むのは、そのハードウェアを使用しているかどうかに関係なく、私が使用しているカーネルが実際にサポートしているすべてのハードウェアを確認することです。

.configカーネルを構築するために使用されたファイルがある場合は、ソースコードをダウンロードして実行すると、make menuconfigA)どのハードウェアに対してカーネルを設定できるかについてのアイデアが得られます(ただし、参照ノート)およびB)カーネルが実際に構成されているハードウェア。

メニューの設定

これを行うには、次の手順を実行します。

  1. ソースコードをダウンロードしてください。ディストリビューションにパッケージがある場合もあれば、以下から入手することもできます。kernel.org;バージョンを探しますuname -r
  2. .configあなたの中核に合ったものを見つけてください。ディストリビューションでソースコードを取得した場合は、/boot にも表示できます。より良いことは、今度はデプロイカーネルが/proc/config.gzこの機能で構築されることが多いことです。存在する場合は、コピーして解凍し、ファイル名を変更して.configカーネルソースツリーの最上位レベルにコピーします。
  3. make menuconfigソースツリーの最上位レベルで実行します。 ncursesが必要です開発するパッケージはすでにインストールされている(ncurses-devまたはncurses-devel)ので、root権限が必要です。

menuconfigを使用するときにファイルの内容を変更する以外に.config悪いことができないことは重要ではありません(今後この内容と混同しないでください)。

ノート:実際には見えません。みんなハードウェア構成も可能です。これは、他の場所で選択した項目によっては、別のオプションがある場所に表示される可能性があるためです。カーネル構成は少し迷路です。しかし、実際に選択されたすべての項目を確実に見ることができます(Mつまり、モジュールであり、組み込み*であることを意味します)。

答え3

私はあなたが探していることが可能だとは思わない。たとえば、モジュラーカーネルを想定すると、多くのモジュールが実際にサポートしているハードウェアが見つからない場合は、自分で初期化できません。だから彼らは静かに流産するでしょう。

ハードウェア名/バージョン/モデルを見つけるためにカーネルソースコードを自動的に解析するのは難しい作業です。共通サブシステム(例:シリアル、scsi、usb)がありますが、コードが必ずしも統合されるわけではありません。あなたはすぐにこれを理解するでしょう。

関連情報