openWRT学习心得
更新时间:2024-04-21 23:49:01 阅读量: 综合文库 文档下载
- openwrt 网心推荐度:
- 相关推荐
openwrt学习
OPENWRT学习总结
目录
Openwrt编译及烧写 ........................................................................................................................ 3 Build.tex ............................................................................................................................................ 3
Building an image ..................................................................................................................... 3 Download OpenWrt .................................................................................................................. 3 The directory structure .............................................................................................................. 3
tools和toolchain .............................................................................................................. 3 Package ............................................................................................................................. 4 Target ................................................................................................................................ 4 Building OpenWrt ..................................................................................................................... 4 Creating packages ..................................................................................................................... 4 Creating binary packages .......................................................................................................... 5 Creating kernel modules packages ............................................................................................ 5 Conventions .............................................................................................................................. 5 Troubleshooting ........................................................................................................................ 5 Using build environments ......................................................................................................... 5 Config.tex.......................................................................................................................................... 5
配置文件结构 ........................................................................................................................... 5 Parsing configuration files in custom scripts ............................................................................ 5 wireless.tex文档部分学习 ............................................................................................................... 6
通用的atheros无线配置: ..................................................................................................... 6 通用的多radio atheros无线配置: ........................................................................................ 7 配置文件详述 ........................................................................................................................... 7 Mesh Point ................................................................................................................................ 8 WDS .......................................................................................................................................... 9
Unencrypted WDS connections ........................................................................................ 9 Encrypted WDS connections ............................................................................................ 9 802.1x configurations .............................................................................................................. 10 EAP-PEAP .............................................................................................................................. 10 限制说明 ................................................................................................................................. 10 Adding a new driver configuration ......................................................................................... 10 Network-scripts.tex ......................................................................................................................... 11
Using the network scripts ........................................................................................................ 11 Writing protocol handers ......................................................................................................... 11
第 1 页 共 28 页
openwrt学习
Network.tex ..................................................................................................................................... 11
网络接口配置 ......................................................................................................................... 11
Static................................................................................................................................ 12 DHCP .............................................................................................................................. 12 PPPOE ............................................................................................................................. 12 MTU设置 ....................................................................................................................... 13 设置静态路由 ......................................................................................................................... 13 设置交换机 ............................................................................................................................. 13 IPV6设置 ............................................................................................................................... 13 Init_script.tex .................................................................................................................................. 14
功能脚本 ................................................................................................................................. 14 etc/rc.common说明 ................................................................................................................ 14 重载初始化脚本函数 ............................................................................................................. 16 定制脚本命令 ......................................................................................................................... 17 Iw .................................................................................................................................................... 17
Iw命令行 ............................................................................................................................... 17 iw说明 .................................................................................................................................... 19
列出所有命令行 ............................................................................................................. 20 列出所有命令及帮助 ..................................................................................................... 20 列出设备支持能力,如带宽信息、802.11n信息 ....................................................... 20 扫描 ................................................................................................................................. 20 监听事件,调试目的 ..................................................................................................... 20 获取链路状态(STA适用)......................................................................................... 20 建立连接 ......................................................................................................................... 20 获取STA统计信息 ....................................................................................................... 21 获取特定STA的统计 ................................................................................................... 21 修改transmit bitrates ...................................................................................................... 21 设置txpower................................................................................................................... 21 省电模式 ......................................................................................................................... 21 添加接口 ......................................................................................................................... 21 删除接口 ......................................................................................................................... 22 设置频率 ......................................................................................................................... 22 设置信道 ......................................................................................................................... 22 设置RTS......................................................................................................................... 22 设置FRAG ..................................................................................................................... 22 修改monitor接口标识 .................................................................................................. 23 更新regulatory domain (国家码???) ................................................................ 23 创建mesh 接口 ............................................................................................................. 23 设置WDS peer ............................................................................................................... 23 AP和client模式使用4-address ................................................................................... 23
wifi启动 ......................................................................................................................................... 24 WEB设置 ....................................................................................................................................... 26
LuCI(Lua Configuration Interface).................................................................................... 26 Web设置 ................................................................................................................................ 26
第 2 页 共 28 页
openwrt学习
web小测试 ............................................................................................................................. 27 频率信道转换函数 ......................................................................................................................... 27
Openwrt编译及烧写
Build.tex
Building an image
Openwrt采用不同的方式来build a firmware,从头开始来dowloading、patching、compiling一切,包括交叉编译器。也就是说,openwrt不包含任何可执行程序,甚至源代码,他自动下载源代码、打补丁来满足指定平台,并编译。通过修改template,我们就可以改变此过程中的任何步骤。 例如,如果一新的kernel发布了,只需要简单地修订其中的一个makefile文件就会download最新的kernel,patch,编译新的firmware映像。这不仅适用于kernel,也适用于openwrt的所有模块,包含openwrt。这使得openwrt保持最新的编译器、最新的内核及最新的应用。
Download OpenWrt
Openwrt的下载方式:
svn checkout svn://svn.openwrt.org/openwrt/trunk openwrt-trunk
在https://dev.openwrt.org/上有一个trac接口,可用来检视svn提交及浏览源代码仓库。
The directory structure
有四个关键目录:Tools、Toolchain、Package、Target。
tools和toolchain
其中tools和toolchain是通用工具,用来编译firmware image、编译器及C库。其编译结果是三个新的目录:build_dir/host,临时目录,用来build target独立的工具;build_dir/toolchain-,用来编译特定architecture的toolchain;staging_dir/toolchain-,toolchain编译结果的安装目录;对于toolchain目录不需要做任
第 3 页 共 28 页
openwrt学习
何事情,除非you intend to add a new version of one of the components above。
Package
Package包目录,在openwrt firmware中,所有模块均是.ipk,这种软件包可用来add to iremware中来提供新的特性或去除以节省空间。这些软件包也是在主干外维护的,并可通过package feed系统来获取到。 ./scripts/feeds update
Those packages can be used to extend the functionality of the build system and need to be symlinked into the main trunk. Once you do that, the packages will show up in the menu for configuration. You would do something like this: ./scripts/feeds search nmap
Search results in feed 'packages':
nmap Network exploration and/or security auditing utility
$ ./scripts/feeds install nmap
To include all packages, issue the following command: $ make package/symlinks
Target
Target指的是嵌入式平台,包括特定嵌入式平台的内容。其中target/linux目录,which is broken down by platform ,包含了特定平台的kernel patch 、profile config。Target/image目录描述了怎么为特定平台打包firmware。
Target和package步骤均会使用build_dir/作为临时目录来编译,另外,toolchain、target、package步骤所下载的内容均会放到dl目录下。
Building OpenWrt
略
Creating packages
略
第 4 页 共 28 页
openwrt学习
Creating binary packages
略
Creating kernel modules packages
略
Conventions
略
Troubleshooting
略
Using build environments
略
Config.tex
配置文件结构
Structure of the configuration files
配置文件分为sections和options/values对。每一section有一type,但不一定需要name。每一option有一个name和value,写在其所属于的section中。 语法如下:
config
每一参数应当是单一字符串,is formatted exactly like a parameter for a shell function。引号及特殊字符规则仍然适用,他们将被shell解释。
Parsing configuration files in custom scripts
为了load configuration files,必须包含通用功能脚本:
第 5 页 共 28 页
openwrt学习
. /etc/functions.sh 这样就可以使用config_load
local type=\ local name=\
# commands to be run for every section }
option_cb() {
# commands to be run for every option }
wireless.tex文档部分学习
WiFi配置文件为/etc/config/wireless。当前支持broadcom、atheros、mac80211。 设备首次启动会检测无线卡类型,并创建一个默认配置文件(sample configuration file)。每一无线驱动都有自己的配置脚本(/lib/wifi/driver_name.sh),用来处理驱动特定的选项及配置,脚本也会调用驱动特定的二进制如适用于broadcom的wlc,适用于atheros、mac80211的hostapd和wpa_supplicant。 这种结构(architecture)抽象了驱动配置。 通用的broadcom无线配置(略): 通用的mac80211无线配置(略):
通用的atheros无线配置:
config wifi-device \ option type \ option channel \ option hwmode \
config wifi-iface
option device \# option network lan
option mode \
option ssid \ option hidden \
第 6 页 共 28 页
openwrt学习
option encryption \
通用的多radio atheros无线配置:
config wifi-device wifi0 option type atheros option channel 1
config wifi-iface
option device wifi0 # option network lan option mode ap
option ssid OpenWrt_private option hidden 0 option encryption none
config wifi-device wifi1 option type atheros option channel 11
config wifi-iface
option device wifi1 # option network lan option mode ap
option ssid OpenWrt_public option hidden 1 option encryption none
配置文件详述
配置文件有两部分,一是wifi-device,指的是物理wifi接口,而wifi-iface指的是其上的虚拟接口,即VAP。
整个的配置文件如下:
config wifi-device wifi device name
option type broadcom, atheros, mac80211 所支持的驱动类型 option country us, uk, fr, de, etc. 国家码 option channel 1-14 wifi信道,依赖于国家码
option maxassoc 1-128 (broadcom only) 关联的最大client数目,仅broadcom支持。
option distance 1-n (meters) AP与最远的client的距离,仅atheros芯片支持
第 7 页 共 28 页
openwrt学习
option hwmode 11b, 11g, 11a, 11bg (atheros, mac80211) 频率带宽,仅atheros支持。
option rxantenna 0,1,2 (atheros, broadcom) 接收端天线标识 (Antenna identifier) option txantenna 0,1,2 (atheros, broadcom) 发送端天线标识 (Antenna identifier) option txpower transmission power in dBm 发射功率transmission power
config wifi-iface
option network the interface you want wifi to bridge with wifi要使用的网络接口 option device wifi0, wifi1, wifi2, wifiN wifi设备名
option mode ap, sta, adhoc, monitor, mesh, or wds 操作模式,有AP、client mode、adhoc、monitor、mesh point mode(802.11s)及WDS点对点连接。
option txpower (deprecated) transmission power in dBm 发送功率,应设置在wifi-device。
option ssid ssid name SSID名字
option bssid bssid address 用于WDS,设置为other WDS unit的MAC地址 option encryption none, wep, psk, psk2, wpa, wpa2 加密设置,支持none、WEP、pre-shared key、及wpa radius。
option key encryption key option key1 key 1 option key2 key 2 option key3 key 3 option key4 key 4
option passphrase 0,1 0则将WPA psk为明文passphrase,1则为encoded passphrase。可通过wpa_passphrase工具产生加密的passphrase。在passphrase包含特殊字符时有用。此选项仅适用于mac80211或atheros。
option server ip address radius server IP地址
option port port radius server端口号,缺省为1812 option hidden 0,1 0为广播SSID,1为隐藏
option isolate 0,1 (broadcom) 无线客户端隔离功能,0要禁止隔离,1为开启,缺省为0.
option doth 0,1 (atheros, broadcom) Toggle 802.11h mode,0为禁止802.11h,1为启用,缺省为0.
option wmm 0,1 (atheros, broadcom) Toggle 802.11e mode,0为禁止,1为启用,缺省为0.
Mesh Point
Mesh Point (802.11s) 仅mac80211 驱动支持,需要安装iw包来建立mesh link。Openwrt创建mshN mesh point接口,配置举例:
config wifi-device \ option type \ option channel \
第 8 页 共 28 页
openwrt学习
config wifi-iface
option device \ option network lan
option mode \ option mesh_id \
WDS
Wireless Distribution System WDS是个非标准模式,可工作在同类设备间,但不能工作在不同的设备如broadcom和atheros设备间。
Unencrypted WDS connections
未加密的WDS配置如下,我们假定一端的BSSID ca:fe:ba:be:00:01,而另一端为BSSID ca:fe:ba:be:00:01:
config wifi-device \ option type \ option channel \
config wifi-iface
option device \ option network lan
option mode \
option ssid \ option hidden \ option encryption \
config wifi-iface
option device \ option network lan option mode wds
option ssid \ option bssid \
Encrypted WDS connections
可以加密wds连接,支持psk、psk2及psk+psk2模式,以下是一个使用AES加密算法的pre-shared key例子:
config wifi-device wl0
option type broadcom
第 9 页 共 28 页
openwrt学习
option channel 5
config wifi-iface
option device \ option network lan option mode ap
option ssid \ option encryption psk2
option key \
config wifi-iface
option device \ option network lan option mode wds
option bssid ca:fe:ba:be:00:02 option ssid \ option encryption psk2
option key \
802.1x configurations
配置略
EAP-PEAP
配置略
限制说明
Limitations
There are certain limitations when combining modes. Only the following mode combinations are supported:
WDS links can only be used in pure AP mode and cannot use WEP (except when sharing the settings with the master interface, which is done automatically).
VAP num defaults to 4, but can be changed by loading the module with the maxvaps=N parameter.
Adding a new driver configuration
具体添加方式略
第 10 页 共 28 页
openwrt学习
Network-scripts.tex
Using the network scripts
为使用network,必须通过如下方式包含必须的shell脚本: . /etc/functions.sh # common functions
include /lib/network # include /lib/network/*.sh
scan_interfaces # read and parse the network config
有些协议,如PPP会在运行期间改变配置的接口名,如PPPOE会将eth0改为ppp0,因此要运行scan_interface,而不是从配置中直接读取。运行scan_interface后,ifname选项将包含有效的接口名(用于ip traffic),如果物理设备名与此不同,则会保存在device选项中。
这意味着在scan_interface后运行config_get_lan_ifname,获取的结果可能与运行之前不同。
Writing protocol handers
添加协议处理
可通过在/lib/network下添加shell脚本来定制协议处理,脚本包含: scan_
# change the interface names if necessary }
setup_interface_
Network.tex
网络接口配置
网络配置文件为/etc/config/network,被分隔为多个接口配置。每一个接口配置或直接就是ethernet/wifi接口(如eth0、wl0),或包含多个接口的桥接口。
如:
第 11 页 共 28 页
openwrt学习
config interface \ option ifname \ option proto \
option ipaddr \ option netmask \ option gateway \ option dns \
其中ifname指定linux接口名,如果使用bridge接口则将ifname设置为接口列表,同时添加option type “bridge”。
可通过添加vlanid来支持vlan功能如eth0.1,具体参照switch一节。
此配置是一个简单的eth0静态配置,proto指定了接口使用的协议,支持none、static、dhcp,可通过install额外的包来支持其他的协议。
Static
当为static时,ipaddr与netmask必填,而gateway与dns可选,支持多个DNS服务器,中间以空格隔开即可,如:option dns \
如:
config interface \ option ifname \ option proto \ ...
option dns \
DHCP
DHCP当前仅接受ipaddr与hostname选项。其中ipaddr指定了dhcp server的地址,而hostname指定了客户的的hostname标识,两者均可选。
config interface \ option ifname \ option proto \
option ipaddr \ option hostname \
PPPOE
PPP基础的协议,如PPPOE、PPTP支持下列选项: Username:PPP用户名,用于PAP认证 Password:PPP密码
Keepalived:使用LCP ping PPP服务器,保活值,缺省间隔为5. Demand:按需拨友,值指定了最大空闲时间。 Server:对端PPTP服务器IP地址
第 12 页 共 28 页
openwrt学习
MTU设置
对所有协议,均可指定MTU,通过设置mtu选项即可,如: config interface \ option ifname \ option proto \ option username \ option password \
option mtu 1492 (optional)
设置静态路由
Setting up static routes
可对指定的接口添加静态路由,在接口配置后会自动添加,举例配置: config route foo option interface lan option target 1.1.1.0 option netmask 255.255.255.0 option gateway 192.168.1.1
其中route节的名称可选,interface、target、gateway选项是必须的。如果netmsk不填,则默认为主机路由。
设置交换机
Setting up the switch (currently broadcom only) 设置交换机,当前仅broadcom支持。 略
IPV6设置
Setting up IPv6 connectivity 略
第 13 页 共 28 页
openwrt学习
Init_script.tex
功能脚本
由于openwrt使用自己的初始script系统,所有的init script必须使用/etc/rc.common作为wrapper安装在/etc/init.d/
如/etc/init.d/httpd: #!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50 start() {
[ -d /www ] && httpd -p 80 -h /www -r OpenWrt }
stop() {
killall httpd }
从上可以看出,script本身并不解析命令行参数,而是由/etc/rc.common来完成。 Start和stop是最基本的功能,几乎所有init script都要提供。Start是在运行/etc/init.d/httpd start时来调用,可以是系统启动时,或用户手动运行此脚本时。
通过/etc/init.d/
脚本运行的顺序是在初始脚本中通过变量START来定义,改变后需要再次运行/etc/init.d/
/etc/rc.common说明
#!/bin/sh # Copyright (C) 2006-2011 OpenWrt.org
. $IPKG_INSTROOT/lib/functions.sh . $IPKG_INSTROOT/lib/functions/service.sh initscript=$1 action=${2:-help} shift 2
start() {
return 0
第 14 页 共 28 页
openwrt学习
} stop() { return 0 } reload() {
return 1 }
restart() { trap '' TERM stop \ start \ } boot() { start \
} shutdown() {
stop } disable() { 禁止服务开启 name=\ rm -f \ rm -f \ }
enable() { 开启服务 name=\ disable [ -n \ echo \ return 1 } [ \] && ln -s \\
[ \ ] && ln -s \\
}
enabled() { name=\
第 15 页 共 28 页
openwrt学习
[ -x \ }
depends() { return 0
} help() { cat < restart Restart the service reload Reload configuration files (or restart if that fails) enable Enable service autostart disable Disable service autostart $EXTRA_HELP EOF } . \ 引用脚本 ALL_COMMANDS=\${EXTRA_COMMANDS}\ 所有命令,包括标准的,及定制的 list_contains ALL_COMMANDS \ [ \ $action \ 重载初始化脚本函数 可以通过如下方式覆盖这些标准的初始化脚本函数: {boot()},boot时支持的命令,缺省为start。 Commands to be run at boot time. Defaults to {start()} {restart()} 重启动服务,缺省为stop然后再start。 Restart your service. Defaults to {stop(); start()} {reload()} 重新载入配置文件,缺省是restart。 Reload the configuration files for your service. Defaults to {restart()} 第 16 页 共 28 页 openwrt学习 定制脚本命令 也可定制命令,创建功能函数,在EXTRA_COMMANDS变量中引用,Helptext添加在EXTRA_HELP中。 如下: status() { # print the status info } EXTRA_COMMANDS=\ EXTRA_HELP=\ status Print the status of the service\ 在/etc/rc.common中可以看出,会包含此脚本,从而包含了其中的所有定义,从而可正确地去使用。 Iw 在openwrt中,所有无线的配置均通过iw命令来进行,如创建一个monitor 无线接口:iw phy phy0 interface add wd2j type monitor。 Iw的设备操作可通过mac80211.sh中查看及分析。 通过iw phy0 info可查看硬件支持信息。 Iw命令行 具体参数如下: root@OpenWrt:/lib# iw Usage: iw [options] command Options: --debug enable netlink debugging --version show version (3.3) Commands: help event [-t] [-r] [-f] ??? phy list phy dev 列出所有dev信息 dev 第 17 页 共 28 页 openwrt学习 dev dev phy dev dev dev dev dev dev dev dev dev dev dev dev reg set dev dev dev dev phy dev phy 第 18 页 共 28 页 openwrt学习 phy phy phy phy dev dev dev dev You can omit the 'phy' or 'dev' if the identification is unique, e.g. \ Do NOT screenscrape this tool, we don't consider its output stable. root@OpenWrt:/lib# iw说明 更多关于iw的说明参照如下链接: http://wireless.kernel.org/en/users/Documentation/iw nl80211是新的802.11 netlink接口,与cfg80211一起,目的是替换无线扩展部分。nl80211与cfg80211仍在开发中。 Iw则是基于nl80211的无线设备CLI配置工具,几乎所有新的驱动均支持并加到内核中了。 Iw也仍在开发中,帮助信息可参见http://wireless.kernel.org/en/users/Documentation/iw。 对于openwrt,未和原来的SDK一样使用iwconfig及iwpriv来设置无线参数,而是使 第 19 页 共 28 页 openwrt学习 用iw命令行。同样,大多数Iwlist命令也失效了。 如下列出了iw的命令,虽然可通过这样的命令进行相关操作,但为了避免出错,建议还是使用web来进行操作,除非出于调试或测试目的。 列出所有命令行 Iw 列出所有命令及帮助 Iw help 列出设备支持能力,如带宽信息、802.11n信息 Iw list 扫描 Iw dev wlan0 scan 监听事件,调试目的 通过监听可打印出认证、关联帧信息 Iw event -f :显示认证、关联帧(auth/assoc/deauth/disassoc frames) -t :显示时间戳信息 -r :显示相对时间戳(print relative timstamp) 获取链路状态(STA适用) 主要是判断是否关联到AP,适用于做为client。 Iw dev wlan0 link 建立连接 如果AP未加密或使用WEP加密,则可以通过iw来连接到此AP。 需要注意的是:当从AP断开连接时,经常出现busy的情况,需要reissue此命令。如果不想这样做,当断开时可通过wpa_supplicant来自动尝试reconnect。 第 20 页 共 28 页 openwrt学习 假设SSID为foo的AP未加密,则可如下连接: Iw wlan0 connect foo 假设有两个SSID为foo的AP,而我们要连接AP的频率是2432,则可如下连接: Iw wlan0 connect foo 2432 要连接到使用WEP加密的AP iw wlan0 connect foo keys 0:abcde d:1:0011223344 获取STA统计信息 Iw dev wlan0 station dump 获取特定STA的统计 iw dev wlan1 station get 修改transmit bitrates iw wlan0 set bitrates legacy-2.4 12 18 24 设置txpower 可设置到VAP设备接口或wlan物理接口 iw dev 省电模式 开启省电模式,对mac80211驱动来讲,即打开了Dynamic Power Save。 iw dev wlan0 set power_save on 获取省电模式配置 iw dev wlan0 get power_save 添加接口 当前支持的接口模式有:monitor、managed(also station)、wds、mesh(also mp)、ibss(also adhoc)。 创建monitor接口 第 21 页 共 28 页 openwrt学习 iw phy phy0 interface add moni0 type monitor 其中moni0为接口名、monitor为模式,可替换。 当监视802.11n时,需要指定通道带宽(20或20/40MHz),对于20/40MHz要指定是upper还是lower通道。可通过如下命令设置: iw dev 或: iw phy 也可指定信道而不是频率: iw phy 创建一个managed模式的接口: iw phy phy0 interface add wlan10 type managed 注意:当使用hostapd时,接口会自动转换成AP模式。 删除接口 Iw dev 设置频率 iw dev wlan0 set freq 2412 [HT20|HT40+|HT40-] 设置信道 iw dev wlan0 set channel 1 [HT20|HT40+|HT40-] 设置RTS phy 设置FRAG phy 第 22 页 共 28 页 openwrt学习 修改monitor接口标识 略 更新regulatory domain (国家码???) iw reg set alpha2 其中alpha2是ISO/IEC 3166 alpha2国家码。 略 创建mesh 接口 略 设置WDS peer 为了创建WDS peer,需要首先创建WDS类型接口,然后设置peer。 iw phy phy0 interface add wds0 type wds iw dev wds0 set peer 为了正常工作,驱动必须实现cfg80211回调set_wds_peer()。Mac80211实现了此回调,因此mac80211驱动只需要支持WDS类型接口即可。当发送帧时,WDS会用对端的地址替换80211头的第一个地址。 Instead of using WDS though you may want to consider using 4-address mode described below if you have control over the software running on the AP and respective clients/peers connected. AP和client模式使用4-address In some situations it might be useful to run a network with an Access Point and multiple clients, but with each client bridged to a network behind it. For this to work, both the client and the AP need to transmit 4-address frames, containing both source and destination MAC addresses. Linux wireless has support for 4-address mode for AP and STAs but each driver needs to define this capability explicitly. All mac80211 drivers support 4-address mode if AP or STA modes of operation are supported respectively. 第 23 页 共 28 页 openwrt学习 On the AP side you can enable 4-address frames for individual clients by isolating them in separate AP VLANs which are configured in 4-address mode. Such an AP VLAN will be limited to one client only, and this client will be used as the destination for all traffic on its interface, regardless of the destination MAC address in the packet headers. The advantage of this mode compared to regular WDS mode is that it's easier to configure and does not require a static list of peer MAC addresses on any side. To enable 4-address mode when creating an interface you should add 4addr on, for example: iw phy phy0 interface add moni0 type managed 4addr on In hostapd you can enable this with the flag on hostapd.conf: wds_sta=1 wifi启动 对于7161来讲,通过测试发现,通过/sbin/wifi脚本可以启动及关闭VAP。而每一次VAP修订,均会通过wifi up来再次生效。Wifi脚本会根据VAP的配置文件来创建相应的VAP,并调用hostapd来启用无线服务功能。配置文件如: root@OpenWrt:/sbin# cat /etc/config/wireless config wifi-device 'radio0' option type 'mac80211' option channel '11' option macaddr '00:0e:8e:29:e5:98' option hwmode '11g' option txpower '27' option country 'CO' config wifi-iface option device 'radio0' option mode 'ap' option ssid 'OpenWrt' option encryption 'none' config wifi-iface option device 'radio0' option mode 'ap' option encryption 'none' 第 24 页 共 28 页 openwrt学习 option ssid 'ddd' option wds '1' /etc/init.d/rcS是设备的初始化接口,首先会执行system配置文件初始化,然后对/etc/rc.d下的所有可执行初始化脚本执行start操作。 在network的脚本中会执行/sbin/wifi up,在wifi脚本中会执行wifi_updown()函数脚本,如下: wifi_updown() { [ enable = \ echo \ wifi_updown disable \ scan_wifi } for device in ${2:-$DEVICES}; do ( echo \ config_get disabled \ [ 1 == \ echo \ set disable } config_get iftype \ 其中在7161上会通过调用enable_mac80211()脚本函数从而会将无线启动起来。 if eval \ echo \ eval \ echo \ eval \'$device'\|| echo \${1} failed\ else echo \ fi ); done } 设备首次启动会检测无线卡类型,检测是在/etc/rc.d中的boot脚本中: /sbin/wifi detect > /tmp/wireless.tmp [ -s /tmp/wireless.tmp ] && { cat /tmp/wireless.tmp >> /etc/config/wireless } rm -f /tmp/wireless.tmp wifi_detect()会遍历所支持$DRIVER列表(当前打印为prism2 mac80211),判断并执行detect_mac80211()。脚本(boot中的)会创建一个默认配置文件(sample configuration file)。每一无线驱动都有自己的配置脚本(/lib/wifi/driver_name.sh),对于7161来讲则是 第 25 页 共 28 页 openwrt学习 /lib/wifi/mac80211.sh。 hostapd的配置及启动是通过mac80211.sh来完成。在mac80211_hostapd_setup_base()中会根据当前的配置参数,写入hostapd的启动配置文件中/var/run/hostapd-phy0.conf。 enable_mac80211()中会启动hostapd,进行配置文件的实际生效,生效命令是hostapd -P /var/run/wifi-phy0.pid -B /var/run/hostap-phy0.conf。 注: /sys/class/ieee80211/phy0/macaddress 中包括了phy0的MAC地址 root@OpenWrt:/tmp/sysinfo# cat /tmp/sysinfo/model 设备型号 Atheros PB44 reference board root@OpenWrt:/tmp/sysinfo# cat /tmp/sysinfo/board_name board类型 unknown WEB设置 LuCI(Lua Configuration Interface) Openwrt中web页面是通过LuCI编写,这是什么东东只有上网搜索一下,此处是简单的说明。 LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从 Whiterussian 到 Kamikaze实现快速配置接口。Lua是一个小巧的脚本语言,很容易嵌入其它语言。轻量级 LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。UCI是OpenWrt中为实现所有系统配置的一个统一接口,英文名Unified Configuration Interface,即统一配置接口。LuCI,即是这两个项目的合体,可以实现路由的网页配置界面。 最初开发这个项目的原因是没有一个应用于嵌入式的免费,干净,可扩展以及维护简单的网页用户界 面接口。大部分相似的配置接口太依赖于大量的Shell脚本语言的应用,但是LuCi使用的是Lua编程语言,并将接口分为逻辑部分,如模板和视图。 LuCI使用的是面向对象的库和模板,确保了高效的执行,轻量的安装体积,更快的执行速度以及最重要的一个特性————更好的可维护性。 与此同时,LuCI从MVC-Webframework衍生出一个包含了很多库、程序以及Lua程序用户接口的集合,但是LuCI仍然专注于实现网页用户界面并成为OpenWrt Kamikaze官方的一份子。 LuCI是一个开放源码的独立项目,欢迎任何人的加入。 Web设置 Openwrt中web是通过LuCI编写,LuCI提供了丰富的接口,而将用户的配置保存,并 第 26 页 共 28 页 openwrt学习 可通过调用linux中的脚本来进行实际应用。 因此我们猜测: Openwrt有各模块的配置文件(在/etc/config/下),可通过web页面来修改,也可手动来修改;而对各模块的生效操作,可通过web来进行,也可手工来进行。 配置文件是各模块正确启动的依据,如果后续我们需要在openwrt基础上支持我们的产品,(1)可以直接在LuCI基础上以此为基础来写web代码;或(2)在当前代码基础上理清各模块的配置及生效接口,我们自己写web来实现。 具体可以/usr/lib/lua/luci/model/cbi/admin_network/wifi_add.lua为例。 m.uci:save(\保存配置 luci.sys.call(\通过脚本来实际应用 luci.sys.call(\ return os.execute(\ 执行reboot 静态页面在: X:\\trunk\\build_dir\\target-mips_r2_uClibc-0.9.33\\root-ar71xx\%usr\\lib\\lua\\luci\\view下,即设备的\%usr\\lib\\lua\\luci\\view目录。 而类似于CGI的代码则在 X:\\trunk\\build_dir\\target-mips_r2_uClibc-0.9.33\\root-ar71xx\%usr\\lib\\lua\\luci\\controller\\admin下,即设备的\%usr\\lib\\lua\\luci\\controller\\admin目录。 web小测试 将/usr/lib/lua/luci/model/cbi/admin_network下的wifi.lua删除后,页面会报如下错误: /usr/lib/lua/luci/dispatcher.lua:449: Failed to execute arcombine dispatcher target for entry '/admin/network/wireless/radio0.network1'. The called action terminated with an exception: /usr/lib/lua/luci/cbi.lua:75: Model 'admin_network/wifi' not found! stack traceback: [C]: in function 'assert' /usr/lib/lua/luci/dispatcher.lua:449: in function 'dispatch' /usr/lib/lua/luci/dispatcher.lua:195: in function 频率信道转换函数 static int nl80211_freq2channel(int freq) { 第 27 页 共 28 页 openwrt学习 } if (freq == 2484) return 14; if (freq < 2484) return (freq - 2407) / 5; return (freq / 5) - 1000; 第 28 页 共 28 页
正在阅读:
openWRT学习心得04-21
在廉政警示教育大会上的讲话修05-16
九年级物理综合测试题02-26
交通安全小故事大全11-20
妇女儿童发展研究(妇联)12-30
小学数学二年级下册期末复习试题共五套01-17
2018年浙江省衢州市中考数学试卷(Word版含解析)03-17
操作系统实验指导书14级09-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 心得
- openWRT
- 学习
- 网络安全技术期末试卷A
- 几凡老师李彬设计的贵州财大图书馆项目获奖
- 哈尔滨工程大学考研真题(流体力学部分)
- CRC8 - verilog
- 养殖水化学题库
- 古代汉语翻译+标点
- 镍铁行业投资可能性分析报告(修改)
- 分析化学下册课后习题参考答案
- 个人工作目标和方向
- 砌体施工方案(东本)
- 通知写作练习 - 图文
- 计算机网络安全论文
- 柱下承台冲切计算的比较分析ok
- 社区残疾人增能服务个案分析
- 关于开展20xx年度职工合理化建议活动的通知
- 社区老年食堂建设的困境及其对策研究 - 以浙江省东阳市虎鹿镇东
- 物料承认管理规定
- 齐鲁师范学院13汉语言文学 课程表
- 考前三个月2015届高考化学(安徽专用)考前专题复习学案:专题2
- 关于加强新经济组织新社会组织进行调研报告