内容
1.1 开始
1.1.1 安装
1.1.2 初始配置
1.1.3 安全模式
1.2 配置OpenWrt
1.2.1 网络
1.2.2 无线
1.3 高级配置
1.3.1 热插拔
1.3.2 初始化脚本
1.3.3 网络脚本
2 开发需知
2.1 构建系统
2.1.1 构建一个镜像
2.1.2 创建包
2.1.3 创建内核模块包
2.1.4 Conventions
2.1.5 Troubleshooting
2.1.6 Using build environments
2.2 Extra tools
2.2.1 Image Builder
2.2.2 SDK
2.3 Adding platform support
2.3.1 Which Operating System does this device run?
2.3.2 Finding and using the manufacturer SDK
2.4 Debugging and debricking
2.4.1 Adding a serial port
2.4.2 JTAG
2.5 Reporting bugs
2.5.1 Using the Trac ticket system
2.6 Submitting patches
2.6.1 How to contribute
2.6.2 Where to listen and talk
2.6.3 Patch Submission Process
第一节
路由器
1.1 开始
1.1.1 安装
1.1.2 初始化配置
1.1.3 Failsafe mode
1.2 配置OpenWrt
1.2.1 网络
Kamikaze 中的网络配置信息储存在 /etc/config/network 文件中,并且各个接口都有自己的配置。每个接口的配置直接关联到一个eth或者wifi接口(eth0, wl0, ..) ,或者桥接到多个接口。像下面这样:
option ifname "eth0"
option proto "static"
option ipaddr "192.168.1.1"
option netmask "255.255.255.0"
option gateway "192.168.1.254"
option dns "192.168.1.254"
ifname定义了特殊的Linux接口。如果你想桥接到一个或者多个接口,设置 ifname 为一个接口列表,并添加:
可以通过简单的加入VLAN ID号标记来使用VLAN,例如eth0.1。这样就可以了。
这里对eth0.proto有一个简单的静态配置来描述该接口所使用的协议,默认的Image中通常会提供'none' 'static', 'dhcp'和'pppoe'方式。其他方式,可以通过加载包来安装其他协议。
像例子中这样使用'static'方法时,ipaddr和netmask是强制的,gateway和dns是可选的。你可以指定不止一个的DNS server,用空格分开。
DHCP目前只可以设置ipaddr(希望从server请求的IP地址)和hostname(客户端主机名标签),两者都是可选的。PPP协议族接受如下选项:
基于PPP 的协议(pppoe, pptp, ...) 接受下列选项:
- username
The PPP username (usually with PAP authentication) - password
The PPP password - keepalive
Ping PPP server(使用LCP)。这个选项定义了重连前的失败ping最大个数。这个ping间隔默认为5,但是可以通过附加", " 来修改keepalive 值。Ping the PPP server (using LCP). The value of this option specifies the maximum number of failed pings before reconnecting. The ping interval defaults to 5, but can be changed by appending ", " to the keepalive value - demand
Use Dial on Demand (value specifies the maximum idle time. - server: (pptp)
远程pptp server IP The remote pptp server IP
对于所有类型的协议,都可以通过设置mtu选项来设置MTU。
设置静态路由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段中的name是可选的,interface,target和gateway选项是强制的。不使用netmask选项将会使该route设置成host route。
The name for the route section is 可选的, the interface, targetand gateway options are mandatory. Leaving out the netmaskoption will turn the route into a host route.
设置交换(目前仅支持broadcom)Setting up the switch (currently broadcom only)
交换设置需要加入'switch'设置段。例如:
The switch configuration is set by adding a 'switch'config section. 例子:
在Broadcom的硬件上,段名称需要是eth0,所以交换驱动不能识别其他物理交换设备。每个vlan选项都要有个名字vlan , 是交换驱动中使用的VLAN序号。这些值可以取如下后缀:
VLANOn Broadcom hardware the section name needs to be eth0, as the switch driver does not detect the switch on any other physical device. Every vlan option needs to have the name vlan where is the VLAN number as used in the switch driver. As value it takes a list of ports with these 可选的 suffixes:
- '*': 将当前VLAN设置成该端口的默认VLANSet the default VLAN (PVID) of the Port to the current VLAN
- 'u': 强制该端口为非标记的Force the port to be untagged
- 't': 强制该端口为标记的Force the port to be tagged
CPU的端口默认是标记的,其他所有端口为非标记。在Broadcom硬件上,CPU端口永远是5。其他端口可能会因不同的硬件而异。
The CPU port defaults to tagged, all other ports to untagged. On Broadcom hardware the CPU port is always 5. The other ports may vary with different hardware.
例如,如果你希望有3个vlan,3个端口用于交换,1个端口是DMZ(隔离区),另外一个端口是WAN口,可以使用如下配置:
For instance, if you wish to have 3 vlans, like one 3-port switch, 1 port in a DMZ, and another one as your WAN interface, use the following configuration :
交换层将会自动建立3个接口:eth0.0(vlan0), eth0.1(vlan1) and eth0.2(vlan2)。
Three interfaces will be automatically created using this switch layout : eth0.0(vlan0), eth0.1(vlan1) and eth0.2(vlan2). You can then assign those interfaces to a custom network configuration name like lan, wanor dmzfor instance.
Setting up IPv6 connectivity
OpenWrt supports IPv6 connectivity using PPP, Tunnel brokers or static assignment.
If you use PPP, IPv6 will be setup using IP6CP and there is nothing to configure.
To setup an IPv6 tunnel to a tunnel broker, you can install the 6scriptspackage and edit the /etc/config/6tunnelfile and change the settings accordingly :
option tnlifname 'sixbone'
option remoteip4 '1.0.0.1'
option localip4 '1.0.0.2'
option localip6 '2001::DEAD::BEEF::1'
option prefix '/64'
- 'tnlifname': Set the interface name of the IPv6 in IPv4 tunnel
- 'remoteip4': IP address of the remote end to establish the 6in4 tunnel. This address is given by the tunnel broker
- 'localip4': IP address of your router to establish the 6in4 tunnel. It will usually match your WAN IP address.
- 'localip6': IPv6 address to setup on your tunnel side This address is given by the tunnel broker
- 'prefix': IPv6 prefix to setup on the LAN.
Using the same package you can also setup an IPv6 bridged connection :
By default the script bridges the WAN interface with the LAN interface and uses ebtables to filter anything that is not IPv6 on the bridge.
IPv6 static addressing is also supported using a similar setup as IPv4 but with the ip6prefixing (when applicable).
option ifname "eth0"
option proto "static"
option ip6addr "fe80::200:ff:fe00:0/64"
option ip6gw "2001::DEAF:BEE:1"
1.2.2 无线网络Wireless
WiFi设置储存在/etc/config/wireless中(目前支持Broadcom, Atheros 和mac80211)。当第一次启动路由器时,将会自动检测你的卡并且创建简单的配置文件。默认情况下 'option network lan' 是被注释掉的。它提供了一个非安全的无线网络共享。
The WiFi settings are configured in the file /etc/config/wireless(currently supported on Broadcom, Atheros and mac80211). When booting the router for the first time it should detect your card and create a sample configuration file. By default 'option network lan' is commented. This prevents unsecured sharing of the network over the wireless interface.
每一个无线驱动都有自己的配置脚本/lib/wifi/driver_name.sh ,用来处理驱动选项和配置。这个脚本也调用特殊二进制,例如Broadcom的w1c,或者atheros的hostapd 和wpa_supplicant 。
Each wireless driver has its own configuration script in /lib/wifi/driver_name.sh which handles driver specific options and configurations. This script is also calling driver specific binaries like wlc for Broadcom, or hostapd and wpa_supplicant for atheros.
使用不同的架构配置是因为不同的驱动配置。
The reason for using such architecture, is that it abstracts the driver configuration.
标准的Broadcom无线配置: Generic Broadcom wireless config:
option type "broadcom"
option channel "5"
config wifi-iface
option device "wl0"
# option network lan
option mode "ap"
option ssid "OpenWrt"
option hidden "0"
option encryption "none"
标准的Atheros无线配置: Generic Atheros wireless config:
option type "atheros"
option channel "5"
option hwmode "11g"
config wifi-iface
option device "wifi0"
# option network lan
option mode "ap"
option ssid "OpenWrt"
option hidden "0"
option encryption "none"
标准的mac80211无线配置: Generic mac80211 wireless config:
option type "mac80211"
option channel "5"
config wifi-iface
option device "wlan0"
# option network lan
option mode "ap"
option ssid "OpenWrt"
option hidden "0"
option encryption "none"
标准的多播Atheros无线配置: Generic multi-radio Atheros wireless config:
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配置了一个在wifi-device之上的虚拟接口(需要被驱动支持)。
There are two types of config sections in this file. The 'wifi-device' refers to the physical wifi interface and 'wifi-iface' configures a virtual interface on top of that (if supported by the driver).
无线配置全概括:A full outline of the wireless configuration file with description of each field:
option type broadcom, atheros, mac80211
option country us, uk, fr, de, etc.
option channel 1-14
option maxassoc 1-128 (broadcom only)
option distance 1-n
option hwmode 11b, 11g, 11a, 11bg (atheros, mac80211)
option rxantenna 0,1,2 (atheros, broadcom)
option txantenna 0,1,2 (atheros, broadcom)
option txpower transmission power in dBm
config wifi-iface
option network the interface you want wifi to bridge with
option device wifi0, wifi1, wifi2, wifiN
option mode ap, sta, adhoc, monitor, or wds
option