web-dev-qa-db-ja.com

wpa_supplicantでのドライバー(-D)オプション

wpa_supplicantが機能する前に、ネットワークインターフェイスが利用可能であり、デバイスのドライバーがロードされている必要があります。 wpa_supplicantでは、「-D」フラグを使用してドライバーを指定できます。私はいくつかのシステムでこれを試しましたが、wpa_supplicantは指定したドライバを受け入れないようです。例えば:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
    Subsystem: Intel Corporation Device 1011
    Flags: bus master, medium devsel, latency 64, IRQ 11
    Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: ipw2200
    Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

ただし、wpa_supplicantのようにドライバーを指定せずにwpa_supplicant -i eth1 -c /root/wpafileを起動すると、問題なく動作します。これはなぜですか?さらに、その場合、wpa_supplicant?のドライバーを指定する必要があります。

11
Martin

カーネルドライバーとユーザースペースドライバーが混乱しています。あなたの場合、あなたは確かにWEXTを使うかもしれませんが、nl80211(私は思う)も使うかもしれません。

WEXT(またはWE = Wireless Extensions)は、Jean Tourrhilesによって1997年にLinuxカーネルに導入された変更です。 このWebページ によると、トゥルヒルズ自身が書いた、

ワイヤレス拡張(WE)は、ドライバーが一般的なワイヤレスLANに固有のユーザー空間、構成、および統計を公開できるようにする汎用APIです。その優れた点は、1つのツールセットで、種類に関係なく、ワイヤレスLANのすべてのバリエーションをサポートできることです(ドライバーがワイヤレス拡張をサポートしている限り)。別の利点は、ドライバー(またはLinux)を再起動せずに、これらのパラメーターをその場で変更できることです。

言い換えると、WEXTはドライバーの上にあり、wpa_supplicantがドライバーと対話できるようにします。 wpa_supplicantとドライバーは異なるカーネルレルム(1つ目はユーザー空間、2つ目はカーネル空間)に属しているため、仲介役として機能するAPIが必要です。これは、ボブが言及したいわゆるドライバーが果たす役割です。

ただし、 このLinux-Wireless Webページ は、

WEはさらに開発されていますか?

いいえそうではありません。 WEはバグ修正のみを受け付けています。

そして

Wireless-Extensionsの交換とは何ですか?

新しい開発はcfg80211とnl80211に焦点を合わせる必要があります。

実際、クエリが私のwpa_supplicantを直接実行した場合(つまり、manページではなく、コマンド

 wpa_supplicant -h

私は(部分的に)この返信を受け取ります:

drivers:
  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:....

言い換えると、Linux Wirelessの言葉に忠実であり、Wextとnl80211を除く他のすべてのドライバーへのサポートが削除され、Wextへのサポートが維持されたのは...

まだWEを使用していますか?

はいcfg80211とnl80211はまだ作業中であるため、WEは引き続き使用されています。すべてのmac80211ドライバーは、mac80211が使用するWEをサポートしています。そのアイデアは、まだ存在していないものをcfg80211とnl80211に徐々に移動し始め、それらに新しい機能を追加することです。

これはLinuxカーネル3.11.1-031101-genericに適用されます。

Hostapdを使用したことがある人は、hostapdの標準ドライバが正確にnl80211であるため、ある意味で、これらすべてについてすでに通知されています。

13
MariusMatutiae