OpenWrt 可以被描述为一个嵌入式的 Linux 发行版,(主流路由器固件有 dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。—— OpenWrt百度百科
wiki上官方步骤:点击进入
我采用的编译环境是Ubuntu14.04 LTS版的。
下面是为大家整理的编译依赖环境的安装命令:
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
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
用上面的两条命令即可完成编译环境的搭建。
我们这里的源码一律采用主干最新代码,主干最新代码有一个好处是最新的设备容易支持,但“不稳定”。当然这个“不稳定”并不是说有严重的BUG,已经足够咱们使用啦。需要下载分支源码的自行百度,这儿就不提供了。
大家可以去GitHub上下载源码:点击进入下载界面
也可以通过git将源码下载到本地(在这儿推荐这种方法),这样的话方便更新。
// 新建一个文件夹
$ mkdir openwrt// 进入这个文件夹
$ cd openwrt
// 下载主干源码
$ git clone git://github.com/openwrt/openwrt.git
====== 等待一段时间 最新源码下载完成 ======
// 进入到源码下载目录
$ cd openwrt
这时候,源码下载完毕。
熟悉编译流程的同学们知道,下载完成源码后,就应该更执行和更新和安装命令。但是这个时候往往更新会失败,为什么呢?— 原因就是一些更新源已经更换为git地址了,但是feeds.conf.default文件采用的还是https/http的地址。我们将这个文件里面的地址修改一下即可。
注意:feeds.conf.default文件就在下载的源码目录下。
// 修改feeds.conf.default文件
$ vi feeds.conf.default
通过命令将https更换为git
:%s/https/git/g
// 保存文件
:wq!
下图为修改完成后的效果
![]()
注意:如上图所示,有些git地址被注释掉了,我们一般情况下不用去修改。
这个是后我们在执行更新和安装命令:
./scripts/feeds update -a
./scripts/feeds install -a
更新和安装完软件包后,我们就开始根据需要定制我们的路由器啦。
执行 make menuconfig
通过文本对话框进行选项配置,最主要的配置项有:
Target system(目标系统类型,即路由器CPU架构)
Subtarget (子目标,即路由器芯片型号)
Target Profile (目标文件, 即路由器型号)
LuCI (LuCI界面设置)
基本配置:
我采用的是斐讯K2路由器,网上百度CPU型号为MT7620,芯片架构为MIPS,路由器型号为PSG1208,那么我的基本配置就为:
Target system -> MediaTek Ralink MIPS
Subtarget -> MT7620 based boards
Target Profile -> Phicomm PSG1208
LuCI配置:
LuCI是一个界面,即刷完路由器后,我们需要登陆“192.168.1.1”来设置路由器参数的界面。
LuCI->
1. Collections->
<*> luci-ssl-openssl
2. Modules->
Translations->
<*>English (en)
<*>Chinese (zh-cn)
配置完以上信息后,OpenWrt最基本的一些配置已经完成。
执行make V=s进行编译。
或者执行 make -j2 V=s进行编译。(-j2为两个线程,-j4为四个线程,具体看自己的电脑是几线程的,当然线程越多,编译越快。)
注意:第一次编译过程中会下载工具包,所下载的包在dl文件夹下,因此比较慢,耐心等待即可。
所生成的文件在openwrt/bin/targets/ramips/mt7620目录下,其中openwrt-ramips-mt7620-psg1208-squashfs-sysupgrade.bin为编译出来的固件。
假如编译成功,我们可以尝试通过修改make menuconfig将其它软件包编译到固件中。
至此,结束。