OpenWRT编译记录--TPLINK_WR841ND_V7

之前自己编译OpenWRT的一些记录,现在搬上来。简单介绍了编译环境的准备,编译过程,以及一些注意事项。

准备工作


本人是在Ubuntu环境下编辑的,首先安装编译所需要的组件包:

sudo apt-get update
sudo apt-get upgrade sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev

官网提供的如下:

Ubuntu 12.04LTS:

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

Ubuntu 64bit:

sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext

但个人还是建议一个个安装,方便识别错误。

下载OpenWRT源码


这里有具体的下载版本:https://dev.openwrt.org/wiki/GetSource

backfire据说较为稳定,但是支持的路由器没有trunk多,trunk更多称之为测试版,但编译好后使用也没什么问题。Attitude Adjustment也是一个稳定版本,我就选择的是12.09 branch(Attitude Adjustment)。

选好版本后,在自己的主目录下新建一个目录,取名 openwrt ,如下:

mkdir openwrt

然后进入新建目录并通过git下载OpenWRT源码,如下:

cd openwrt
git clone git://git.openwrt.org/12.09/openwrt.git

添加feeds并更新需要的组件包


此处就是下载一些你之后要编译进firmware里的一些软件。若有自己需要额外添加的组件,可以通过添加feeds来实现。比如,我需要添加openvswitch的支持,在目录下输入如下命令:

echo 'src-git openvswitch git://github.com/schuza/openvswitch.git' >> feeds.conf.default

然后,更新下载feeds组件包并安装:

./scripts/feeds update -a  //更新下载全部软件包./scripts/feeds update [包名])  //单独更新下载某软件包
./scripts/feeds install -a //安装全部软件包./scripts/feeds install [包名] //单独安装某软件包

menuconfig自定义选择


直接在 [openwrt主目录] 下输入命令  make menuconfig  即可开始自定义选择组件。注意之前没有 update 和 install feeds,则此处就会发现找不到相应的组件!这个是个图形化界面,选完之后保存(Y是选中,N是取消),其实写入了 .config 文件。

OpenWRT编译记录--TPLINK_WR841ND_V7

几个选择建议:(不过一切按需自己选)

* 添加luci及中文支持

LuCI—>Collections—– <*> luci
LuCI—>Translations—- <*> luci-i18n-chinese

* 添加USB挂载

Base system —> <*>block-mount

* 添加UTF-8编码

Kernel modules —> Native Language Support —> <*> kmod-nls-utf8

* 添加硬盘格式支持

Kernel modules —> Filesystems —> <*> kmod-fs-ext4

若之前添加过自己的组件,就对应选择上,否则编译不进去!

全部选择完,一定记住保存,才能成功写入  .config 文件。

编译前注意事项


这个是我遇到的问题了,最初编译的时候,编译过程不报错,但最后老是在bin文件夹下找不到需要的bin文件,最后才知道是默认的flash大小设置有点小,需要更改。我的路由器型号WL841N_V7(硬件方面改装成16M的flash),所以把默认的4M改成了8M,这样编译后就没问题了。

需要修改的文件

1.  [openwrt主目录] /tools/firmware-utils/src/mktplinkfw.c

{

    .id= "TL-WR841NDv7",

    .hw_id= HWID_TL_WR841ND_V7,

    .hw_rev= 1,

    .layout_id= "8M",   //这儿原来是4M

    }

2.  [openwrt主目录] /target/linux/ar71xx/image/Makefile

$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))   //之前是4Mlzma 

编译


一般情况下,编译直接在 [openwrt主目录] 下输入命令 make V=99 。可以查看编译过程具体信息。直接make无具体信息。编译完成后,在bin目录下就可以找到你编译好的bin文件,以及bin/packages下编译好的一些ipk文件,ipk文件可以直接安装于刷好的OpenWRT中。

注意:此处千万不要以root权限执行make,否则报N多错误。

另附一些编译选项

1. 在多核电脑中编译,常规用法为【 cpu处理器的数目 + 1】– 例如使用3进程来编译 (即双核CPU), 命令及参数: make -j 3 。这样可以加速编译,不过我没试过。

2. 后台编译,你还在忙其他,不想让编译耗费太多资源,只使用一些空闲的I/O和CPU能力来编译: ionice -c 3 nice -n19 make -j 2

3. 单独编译某个包: make package/[包名]/compile V=99 。编完后在bin/packages下会找到对应的ipk文件。

4. 重新编译某个包: make package/[包名]/{clean,compile,install} V=99 。

最后,贴两个官网的编译说明:

http://wiki.openwrt.org/doc/howto/buildroot.exigence

https://dev.openwrt.org/wiki/GetSource

上一篇:maven ssm 编译异常记录:


下一篇:Java遍历一个目录下的所有文件