OpenWrt编译流程
[toc]
编译环境搭建
环境前提
- 请使用一个非root用户来完成这些工作!
- 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
- 编译系统的绝对路径中不能含有空格!
- 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
安装编译工具
sudo apt-get update
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip gcc-multilib gettext
如果系统是64位如果是64位系统的话还需要安装32位兼容包
sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386
源码下载
git clone git://git.openwrt.org/openwrt.git
编译流程
下载并安装所有可用的"feeds"
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
构建编译配置文件
make menuconfig
通过文本对话框进行选项配置,最主要的配置项有:
配置构建系统信息
Target system(目标系统类型,即路由器CPU架构)
Subtarget (子目标,即路由器芯片型号)
Target Profile (目标文件, 即路由器型号)
LuCI (LuCI界面设置)
Target Images 可以不用选
默认软件和设置
添加LuCI web界面
LuCI-> Collections-> luci
如果需要nginx或者ssl 需要自己配置ssl证书
修改默认语言为中文
LuCI->Modules->Translations->Chinese (zh-cn)
网上找了一份配置参数对应的位置
固件文件位置 |
源码位置 |
etc/rc.local |
Package/base-files/files/etc/rc.local |
etc/sysctl.conf |
Package/base-files/files/etc/sysctl.conf |
etc/config/dhcp:lan |
Package/network/services/dnsmasq/files/dhcp.conf |
etc/config/dhcp:dnsmasq |
Package/network/services/dnsmasq/files/dnsmasq.init |
etc/config/uhttpd |
Package/network/services/uhttpd/files |
etc/firewall.user |
Package/network/config/firewall/files/firewall.user |
etc/config/system |
Package/base-files/files/etc/config/system |
lib/ipaddr |
Package/base-files/files/lib/ipaddr |
www/* |
Feeds./luci/modules/luci-base/root/www/* |
etc/config/wireless |
Package/kernel/mac80211/files/lib/wifi/mac80211.sh |
固件体积 |
Target/linux/ar71xx/image/makefile |
型号名 |
Target/linux/ar71xx/base-files/lib/ar71xx.sh |
LED网口配置 |
Target/linux/ar71xx/files/arch/mips/ath79/ |
主板系列配置 |
Target/linux/ar71xx/base-files/etc/uci-defaults |
默认密码 |
Package/base-files/files/etc/shadow |
etc/config/luci |
Feeds./luci/modules/luci-base/root/etc/config/luci |
network 默认IP地址 |
/package/base-files/files/bin/config_generate |
无线名称参数默认值:
无线设置初始化
config wifi-device radio$devidx
option type mac80211
option channel auto
option country CN
option hwmode 11${mode_band}
$dev_id
$ht_capab
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 0
config wifi-iface
option device radio$devidx
option network lan
option mode ap
option ssid WIFI-$(cat /sys/class/ieee80211/${dev}/macaddress|awk -F ":" '{print $5""$6}'|tr a-z A-Z)
option encryption none
其他的配置可以参考
OpenWrt文档
最后记得要Save之后退出,没保存刚刚设置都白操作了。
编译固件
make
或者多核编译可以使用 -j 参数
make -j4