说起 Linux 对 WiFi 的支持和实现,给它最有力支持的莫过于 HP 公司的 Jean Tourrilhe。他为当时的Linux定义了一套无线的API,称之为 "Wireless Extension",即无线扩展。在 Linux kernel 2.0.30 和 2.1.17 时被采用。
逻辑图:
无线设备驱动 -----> Linux内核 -----> wireless-tools + libiw -----> wpa_supplicant -----> Linux GUI
无线扩展: 无线设备驱动的无线接口实现 + Linux内核对无线扩展的支持 + 无线工具集,对应上面前3部分。
一)无线扩展:
1)用户接口:一组管理无线扩展的工具集( 基本库是libiw,工具包是wireless-tools)。
a)/proc/net/wireless
b)wireless-tools 的一些命令:iwconfig、iwevent、iwgetid、iwlist、iwpriv、iwspy、rfkill。
2)内核:修改内核来支持和定义无线扩展。
a) /proc/net/wireless
当查看它的时候,会去查询所有的驱动,如果驱动定义了get_wireless_stats,会显示其结果,否则忽略。
iwlan、bcm4329等设备驱动都有对它的支持 。
b) linux/wireless.h net/wireless/
c) ioctl
主参数是网络接口名,例如eth2,tiwan0。
3)设备驱动:要将无线扩展映射到实际的硬件管理上。
有个图:
二) wpa supplicant
WPA Supplicant软件包,带有一些无线设备启停脚本,后台程序wpa_supplicant,以及一些基本命令。无线安全模式,像WPA personal,是这里实现的。
命令有:wpa_action、wpa_cli、wpa_passphrase。
三) 上层的GUI。
参考:
1. Jean Tourrilhe的主页
逻辑图:
无线设备驱动 -----> Linux内核 -----> wireless-tools + libiw -----> wpa_supplicant -----> Linux GUI
无线扩展: 无线设备驱动的无线接口实现 + Linux内核对无线扩展的支持 + 无线工具集,对应上面前3部分。
一)无线扩展:
1)用户接口:一组管理无线扩展的工具集( 基本库是libiw,工具包是wireless-tools)。
a)/proc/net/wireless
b)wireless-tools 的一些命令:iwconfig、iwevent、iwgetid、iwlist、iwpriv、iwspy、rfkill。
2)内核:修改内核来支持和定义无线扩展。
a) /proc/net/wireless
当查看它的时候,会去查询所有的驱动,如果驱动定义了get_wireless_stats,会显示其结果,否则忽略。
iwlan、bcm4329等设备驱动都有对它的支持 。
b) linux/wireless.h net/wireless/
c) ioctl
主参数是网络接口名,例如eth2,tiwan0。
3)设备驱动:要将无线扩展映射到实际的硬件管理上。
有个图:
二) wpa supplicant
WPA Supplicant软件包,带有一些无线设备启停脚本,后台程序wpa_supplicant,以及一些基本命令。无线安全模式,像WPA personal,是这里实现的。
命令有:wpa_action、wpa_cli、wpa_passphrase。
三) 上层的GUI。
参考:
1. Jean Tourrilhe的主页