ハードウェア名だけを指定して、Linuxシステムにインストールする必要のあるドライバーの名前を見つける方法はありますか?一般たぶん、すべてのハードウェア情報とそれに関連するdirverを収集する一元化されたWebページまたはアプリケーションですか?それとも私にできることはウェブブラウザで検索することだけですか?この場合、あなたは何をしますか?
たとえば、ハードウェア「Intel Corporation 82801HM/HEM(ICH8M/ICH8M-E)SATAController」のドライバー名を知りたい。
Linuxカーネルに含まれているドライバーはここで検索できます http://cateee.net/lkddb/web-lkddb/ 。プライマリページはここにあります http://cateee.net/lkddb/ 。
LKDDbについて
LKDDbは、Linuxカーネルが知っているハードウェアとプロトコルの包括的なデータベースを構築する試みです。ドライバデータベースには、ハードウェアの数値識別子、ドライバの構築に必要なカーネル構成メニュー、およびドライバファイル名が含まれています。データベースはカーネルソースから自動的に構築されるため、データベースを常に更新するのは非常に簡単です。
通常、Linuxカーネルを介してハードウェア名で検索し、そのままの状態でドライバーが提供されているかどうかを確認する必要があります。そうでない場合は、メーカーのWebサイトにアクセスする必要があります。それがIntel、NVidia、または他の誰かによって作成されたリファレンスデザインの場合は、対応するドライバーをサイトで検索してください。
すでにお持ちのハードウェアで使用されているドライバー/モジュールを確認するには、ツールlspci -v
を使用できます。
例えば:
$ lspci -v
00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)
Subsystem: Lenovo Device 2193
Flags: bus master, fast devsel, latency 0
Capabilities: <access denied>
Kernel driver in use: agpgart-intel
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device 215a
Flags: bus master, fast devsel, latency 0, IRQ 45
Memory at f2000000 (64-bit, non-prefetchable) [size=4M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
I/O ports at 1800 [size=8]
Expansion ROM at <unassigned> [disabled]
Capabilities: <access denied>
Kernel driver in use: i915
Kernel modules: i915
「使用中のカーネルドライバ」および「カーネルモジュール」という行に注意してください。
この情報については、カーネルの/proc
ファイルシステムを参照してください。
$ less /proc/modules
tcp_lp 2111 0 - Live 0xffffffffa00fc000
aesni_intel 12131 1 - Live 0xffffffffa0185000
cryptd 7111 1 aesni_intel, Live 0xffffffffa013c000
aes_x86_64 7758 1 aesni_intel, Live 0xffffffffa0128000
aes_generic 26908 2 aesni_intel,aes_x86_64, Live 0xffffffffa00f3000
Fuse 61966 3 - Live 0xffffffffa030b000
cpufreq_powersave 1154 0 - Live 0xffffffffa00f0000
sunrpc 201569 1 - Live 0xffffffffa0580000
vboxpci 13918 0 - Live 0xffffffffa0576000
vboxnetadp 18145 0 - Live 0xffffffffa056c000
...
コマンドlsmod
を使用して、この情報をよりきれいな形式で取得することもできます。
$ lsmod | less
Module Size Used by
tcp_lp 2111 0
aesni_intel 12131 1
cryptd 7111 1 aesni_intel
aes_x86_64 7758 1 aesni_intel
aes_generic 26908 2 aesni_intel,aes_x86_64
Fuse 61966 3
cpufreq_powersave 1154 0
sunrpc 201569 1
vboxpci 13918 0
vboxnetadp 18145 0
...
コマンドmodinfo
を使用して、特定のモジュールの詳細を確認できます。
$ modinfo tcp_lp
filename: /lib/modules/2.6.35.14-106.fc14.x86_64/kernel/net/ipv4/tcp_lp.ko
description: TCP Low Priority
license: GPL
author: Wong Hoi Sing Edison, Hung Hing Lun Mike
srcversion: 8BFC408F81AB96C2D21A317
depends:
vermagic: 2.6.35.14-106.fc14.x86_64 SMP mod_unload
このディレクトリを調べて、カーネルで使用するためにシステムによって提供されるすべてのカーネルドライバ/モジュールを確認できます。
$ ls /lib/modules/`uname -r`
build modules.alias modules.builtin.bin modules.drm modules.modesetting modules.pcimap modules.usbmap
extra modules.alias.bin modules.ccwmap modules.ieee1394map modules.networking modules.seriomap source
kernel modules.block modules.dep modules.inputmap modules.ofmap modules.symbols updates
misc modules.builtin modules.dep.bin modules.isapnpmap modules.order modules.symbols.bin vdso
次のコマンドでそれらを一覧表示できます。
$ find /lib/modules/`uname -r` -type f | less
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.dep.bin
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.ieee1394map
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.networking
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.dep
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.isapnpmap
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.builtin
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.seriomap
/lib/modules/2.6.35.14-106.fc14.x86_64/modules.usbmap
...