wpa_supplicant의 driver (-D) 옵션 Subsystem: Intel Corporation

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?에 대한 드라이버를 지정해야합니다 .



답변

커널 드라이버와 사용자 공간 드라이버를 혼동하고 있습니다. 귀하의 경우에는 반드시 WEXT를 사용할 수 있지만 nl80211도 생각합니다.

WEXT (또는 WE = Wireless Extensions)는 1997 년 Jean Tourrhiles가 Linux 커널에 도입 한 수정 사항입니다. Tourrhiles 자신 작성한 이 웹 페이지 에 따르면 ,

WE (Wireless Extension)는 드라이버가 일반 무선 LAN과 관련된 사용자 공간, 구성 및 통계에 노출 할 수 있도록하는 일반 API입니다. 이 도구의 장점은 드라이버가 무선 확장을 지원하는 한 단일 도구 세트가 유형에 관계없이 모든 무선 LAN을 지원할 수 있다는 것입니다. 또 다른 장점은 이러한 매개 변수가 드라이버 (또는 Linux)를 다시 시작하지 않고 즉시 변경 될 수 있다는 것입니다.

즉, WEXT는 드라이버 위에 있으며 wpa_supplicant가 드라이버와 상호 작용할 수 있도록합니다. wpa_supplicant와 드라이버는 서로 다른 커널 영역 (첫 번째는 사용자 공간, 두 번째는 커널 공간)에 속하므로 중간 역할을 수행 할 수있는 API가 필요합니다. 이것이 Bob이 언급 한 소위 드라이버가 수행하는 역할입니다.

그러나이 Linux-Wireless 웹 페이지

우리는 더 발전하고 있습니까?

전혀 그렇지 않다. WE에는 버그 수정 만 허용됩니다.

Wireless-Extensions의 대체품은 무엇입니까?

cfg80211 및 nl80211에 새로운 개발이 집중되어야합니다.

실제로, 내 wpa_supplicant에 대한 쿼리가 drectly (즉, 매뉴얼 페이지가 아니라 명령 인 경우)

 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 Kernel 3.11.1-031101-generic에 적용됩니다.

hostapd의 표준 드라이버는 정확히 nl80211이므로 hostapd를 사용한 사람들은 이미이 모든 것을 알고 있습니다.