假设已经有了基础的 Linux 编译环境。(依赖包忽略)
一般大概是需要 gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip subversion libncurses-dev ncurses-term zlib-dev gawk 等等,这些包在不同发行版叫的名字不同。Arch Linux 痛苦最少。
目前的 OpenWrt 代码仓库同时支持 git 和 svn,基于趋势的需求,用 git 吧亲。
首先得了解确定需要下哪个分支的代码。比如
- 开发 main 分支
- 12.09 Attitude Adjustment
- 10.03 backfire
- ....
查看官网,发现:
The 12.09 "Attitude Adjustment" version has been released on 25 April 2013 - it marks the current stable version of OpenWrt.
所以选择 Attitude Adjustment 分支,(不考虑是乐队啊什么的。。如果这么纠结范,Ubuntu release 名字还不头疼死?)
配置过程中, 记得选中状态是 * 而不是 M. 这样就会是在最终的固件里.
Linux 命令行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 创建工作目录
$
cd
$
mkdir
-p works &&
cd
works
# 下载代码
$ git clone git:
//git
.openwrt.org
/12
.09
/openwrt
.git openwrt_attitude_adjustment
# 然后你就有了个 openwrt 目录,整个时间大概需要好几分钟
# 进入到工作目录
$
cd
openwrt_attitude_adjustment
# 进入配置目录看看编译器是否正常
$
make
menuconfig
# 如果这里无法进入一个配置界面,那就检查下相关的依赖工具,依赖库,编译环境是否缺少东西
# 你会发现这里没有 LuCI,没有中文翻译。。所以先搞定这些
# 先退出(这个界面可以用上下左右空格回车)
# 更新所有 packages
$ .
/scripts/feeds
update -a
# 配置所有 packages 代码到对应代码树
$ .
/scripts/feeds
install
-a
|
然后开始真正的配置过程,这里以 mr10u 为例,它就是一穿着 mr10u 外壳的 wr703n,所以
$ make menuconfig
Target System 选择 Atheros AR7xxx/AR9xxx,就是处理器型号
Target Profile 表示具体路由器型号,选择 TP-LINK TL-WR703N
Target Images 子选单里,确保 squashfs 被选中
Base system 选中 block-mount
Build the OpenWrt SDK 如果被选中的话,就会编译出一个 tar.gz 包,包括整个 OpenWrt 开发环境(交叉编译工具等等),这样就可以扔到其他机器上干活了。
LuCI 子选单里折腾选中所有你需要的功能 Collections 里添加 luci,Translations 里有中文记得选中。
Kernel modules 里选中你会用到的内核模块,一般格外注意下 Network Devices, Network Support, Wireless Drivers 即可,USB Support 选择相关设备支持,Filesystems 建议选择 msdos, vfat, 如果想用外部储存扩充可怜的 Flash 空间,选择对应的分区格式支持即可。
牢记,贪心不足蛇吞象,选多了 4M 就不够用了。
全部配置感觉差不多完成后,Exit, 保存(选 Yes)。
然后开始漫长的编译,第一次的时候需要编译相关工具链,APU 小本上用了好几小时,以后就痛苦小多了,半小时左右差不多能完成。
$ make -j 2 V=99
V=99 表示 verbose,显示详细输出,-j 2 表示并发进程数,一般等于 cpu 核心数。
编译完成后, bin/ar71xx 生成文件:
bin/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin bin/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin
factory 是用来刷现有 TP-LINK 的,sysupgrade 是用来刷现有 openwrt 的。
至此完成编译。
注:
https://dev.openwrt.org/browser/tags/attitude_adjustment_12.09