OpenWrt编译流程

2722人浏览 / 0人评论
[toc]

编译环境搭建

环境前提

  1. 请使用一个非root用户来完成这些工作!
  2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
  3. 编译系统的绝对路径中不能含有空格!
  4. 如果你使用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