あるシステム上のすべてのハードウェアに、カーネル モジュール経由で、またはカーネルに組み込まれて、有効なドライバーがインストールされているかどうかを正確に判断する方法を見つけようとしています。
私は Dell Optiplex 990 で RHEL 5.5 を使用しています。
lspci は良い出発点であることはわかっていますが、手動で更新される可能性があり、新しいドライバーで常に更新されるとは限らないため、信頼性がありません。/lib/modules/$(uname -r)/modules.pcimap を調べて、ID に基づいてデバイスのドライバー モジュールがあるかどうかを確認できることはわかっていますが、組み込みドライバーはどうでしょうか。新しいカーネルをインストールし、組み込み agpgart-intel モジュールが vendor:device ID 8086:0100 のホスト ブリッジをサポートしているかどうかを確認しようとしています。
また、カーネルを更新するときに pci.ids リストを更新するための適切な手順はありますか? update-pciids を使用して、またはインターネットからリストをダウンロードしてすべてを更新できることはわかっていますが、現在のインストールでサポートされている ID のみを含める方が理にかなっているのではないでしょうか?
答え1
アレックスがあなたの質問に答えます。比較lspci
00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)
00:19.0 Ethernet controller: Intel Corporation 82577LM Gigabit Network Connection (rev 06)
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 06)
00:1c.3 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 (rev 06)
00:1c.4 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 (rev 06)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation QM57 Chipset LPC Interface Controller (rev 06)
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
00:1f.6 Signal processing controller: Intel Corporation 5 Series/3400 Series Chipset Thermal Subsystem (rev 06)
02:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 35)
ff:00.0 Host bridge: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers (rev 02)
ff:00.1 Host bridge: Intel Corporation Core Processor QuickPath Architecture System Address Decoder (rev 02)
ff:02.0 Host bridge: Intel Corporation Core Processor QPI Link 0 (rev 02)
ff:02.1 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor QPI Physical 0 (rev 02)
ff:02.2 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)
ff:02.3 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)
その結果ls -l pci*/*:*/driver
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:00.0/driver -> ../../../bus/pci/drivers/agpgart-intel
lrwxrwxrwx. 1 root root 0 May 21 09:34 pci0000:00/0000:00:02.0/driver -> ../../../bus/pci/drivers/i915
lrwxrwxrwx. 1 root root 0 May 21 09:06 pci0000:00/0000:00:16.0/driver -> ../../../bus/pci/drivers/mei_me
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:19.0/driver -> ../../../bus/pci/drivers/e1000e
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1a.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1b.0/driver -> ../../../bus/pci/drivers/snd_hda_intel
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.0/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.3/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.4/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1d.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.0/driver -> ../../../bus/pci/drivers/lpc_ich
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.2/driver -> ../../../bus/pci/drivers/ahci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.3/driver -> ../../../bus/pci/drivers/i801_smbus
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.6/driver -> ../../../bus/pci/drivers/intel ips
必ずしも「すべてのハードウェア」を網羅するわけではありません。特に、ACPI を通じてアクセスされる機能がある可能性があります。ただし、手動で調べるには量が多すぎます。
代替案としては始めるシステムを使用する際に、基本的な機能のチェックリストを作成します。Linux は私のシステムでいくつかの機能をサポートしていないことが多いのですが、その機能がなくても Linux を快適に使用しているため、私にとってはより前向きなアプローチです :)。
lspci は良いヘルパーだと思います。しかし、例えば Ethernet の行を見たときに、Ethernet が動作しているかどうか確認するなど、もっと簡単にできるかもしれません。Ethernet の場合しなかった動作する場合は、ドライバーが不足しているかどうかを確認できますが、試す前にドライバーを確認する必要はありません。
また、後で正確なドライバーが何であるかを記録しておきたいと思うかもしれません。うまく動作して、再び選択するのに良いハードウェアだと思うからです:)。残念ながら、vonbrandが言うように、ハードウェアサポートは地雷原になる可能性があるため、理想的にはまだOS の認定を取得したい、またはコミュニティで同等のもの(Google で「私にとってはうまく機能しています」というレポートを多数取得したい)。
agpを使いたかったのでしょうか?RHEL 5はgnome3より前のバージョンなので、必要に応じて3Dアクセラレーションなしでターミナルエミュレーターを開くことができます。する3D アクセラレーションが必要な場合は、そのための GL ライブラリも必要です。使用したい最も要求の厳しいグラフィック アプリを試してみて、動作するかどうか確認してみてはいかがでしょうか。
パフォーマンスの判断は少々面倒です。チェックボックス以上のものですが、ハードウェア固有のドライバーではなく汎用ドライバーを使用しているなどの個別の可能性によって発生する可能性があります。機能のリスト全体で簡単なベンチマークを探し、結果を参考として書き留めておくと便利です。たとえば、Gnome Disks は非常に便利なベンチマーク ツールで、そのデスクトップの最近のバージョン (咳) にデフォルトでインストールされています。
いずれかのシステムでパフォーマンス障害 (Gnome 3 がぎくしゃくするなど) に気付いた場合は、それを潜在的なチェックリスト項目として書き留めることができます。つまり、新しいシステムでは、Gnome 3 が常にぎくしゃくしているわけではないため、その特定のテストに合格したことがわかります。
答え2
必要なドライバーの Kbuild シンボルがわかっている場合は、/proc/config.gz
カーネル構成の利用可能な他のソースを確認できます (ディストリビューションは通常、/boot
カーネルと一緒に構成を配置します。または、scripts/extract-ikconfig
カーネル ソース ツリーを使用してカーネルから構成を抽出することもできます - もちろん、構成がカーネルにコンパイルされている場合)。
答え3
マシンにリストされているデバイスを、RHEL でサポートされているデバイスのリストと照合する必要があります。確かに、動作するデバイスがあるかもしれませんが、動作を確認/認定した人は誰もいません。
注意してください。似たような名前のデバイス(例えば、SC-423+のようなイーサネットカード)が完全に表面上は同一の SC-423 とは全く異なる製品です。また、モデル番号がまったく同じでも、かなり異なるカードに悩まされたこともあります。その逆の場合も、別々のプロバイダーによるまったく異なるデバイスが同じ部品で構築されています。しかし、メーカー A は堅牢であるのに対し、B はひどく不安定であるという状況もありました。