内容导航:

一、如何编译OpenWrt

搭建编译环境。

编译建议在Linux下进行。

我的系统是Linux mint 17,执行以下命令,构建编译环境:

sudo apt-get update

sudo apt-get install git-core build-essential

获取openwrt源码。

在当前用户主目录下执行

git clone git://git.openwrt.org/openwrt.git

等待代码下载。

结束后,目录下会出现openwrt文件夹。

配置软件源。

进入openwrt目录,执行

./scripts/feeds update -a

./scripts/feeds install -a

检查编译环境是否完整:

make defconfig

make prereq

根据提示信息安装需要的软件包。

如果提示类似

“tmp/.config-package.in:22022:warning: multi-line strings not supported”

的信息,打开 openwrt/tmp/.config-package.in,定位到对应行,添上丢掉的一个引号就可以了。

编译选项:

执行 make menuconfig,根据路由器情况,选择 Target System 和 Subtarget。

如意云一代和极壹S的 Target System 均为 Ralink RT288x/RT3xxx 。

对于Subtarget ,前者为 MT7620n based boards ,后者为 MT7620a based boards。

其他选项根据个人喜好选择。

一般来说要选中LuCI界面,选中中文语言包等等。

开始编译:

执行 make -j2 V=s 进行编译。

-j后面的数字是电脑物理CPU数量加一。

V=s可以显示出编译的详细信息。

首次编译大概需要几个小时的时间。

错误排查:

编译失败,一般有两种情况:

1.代码下载链接失效。

首次编译时,编译程序会实时从网上下载一些软件包的代码。

如果下载链接失效,编译就会失败。

这时需要根据软件包的名称,从网上自行下载,然后放在 openwrt/dl/ 目录下,执行 make -j2 V=s 继续编译即可。

2.软件包自身有问题。

这时重新执行 make menuconfig ,取消对应软件包选中即可。

这种情况比较少见,目前已知的有 tor 等。

编译成功,但没有生成固件。

这种情况一般是因为选中的软件包过多,导致固件大小超过16MB。

重新执行 make menuconfig,去掉一些软件包,重新执行编译即可。

得到固件。

在排除了所有错误后,现在终于得到了固件。

对于如意云RY-1,固件在 openwrt/bin/ramips 目录下,形如

openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin

openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin

openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin

openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin

等等。

二、如何为一个新路由器编译openwrt

Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。

这些编译好的映像文件是基于默认的配置设置,且只针对受支持的平台或设备的。

因此,为什么要打造一个自己的映像文件,理由有以下四点:

您想拥有一个个性化的配置OpenWrt(彰显个性,在朋友圈子里显摆显摆,开个玩笑);

您想在实验性的平台上测试OpenWrt;

您参与测试或参与开发OpenWrt的工作;

或者,最简单的目的就是为了保持自己的Openwrt为最新版本;

若想实现上述目的,其实很简单,按下述文字即可成功编译出一个您的Openwrt来。

准备工作

在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:

一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);

确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)

OpenWrt源代码副本

首先, 开机登陆到支持编译Openwrt的操作系统(废话了)。

实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。

bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。

下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。

第二步, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):