OpenWRT环境的搭建,编译。
2019-07-13 02:29发布
生成海报
OpenWrt是一个高度模块化、高度主动化的嵌入式linux发行版,其编译和安装过程比通俗的linux发行版而言,要简单太多了。若是您是新手,您那胆怯的心大可放到肚子里,呵呵。对于新手来说最麻烦的生怕是安装开辟景象须要的软件了。
最根蒂根基前提:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.PC一台,机能强点,机能好编译得就快。linux推荐安装ubuntu 8.04中文版(或者suse)和fedora 11(对于初学者而言,最好是装在虚拟机如VM里,可省去很多麻烦。如安在VM里安装linux,您可多google或者baidu)
2.宽带一条,须要速度好点,因为有很多软件包是收集后安装。
3.耐烦和时候。
编译景象筹办(安装linux发行版和软件包):
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.安装好ubuntu8.04中文版本或者fedora 9或者11,搞定收集连接。
以非root用户登岸,打开“应用法度—-附件—-终端”。若是您已经安装好linux, 那么此步调请略去。
2.若是您选择ubuntu, 那么ubuntu开辟景象须要的软件有sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
然后
sudo apt-get
如您选择安装fedora11或者fedora9
Fedora 11 or 9:
# yum install autoconf binutils bison bzip2 flex gawk gcc gcc-c++ gettext make ncurses-devel patch unzip wget zlib-devel
因为fedora 安装包底本就很周全,所以需别的安装的器材较少。所以一般景象下,推荐安装fedora 11。对于初学者而言,最便利的办法是在VM上安装linux。
因为ubuntu底本就是基于suse, 所以若是您要以suse为开辟景象,那么您参考ubuntu的安装步调即可。
若是你能浏览英文,那么请参考
http://wiki.openwrt.org/doc/howto/buildroot,
OpenWrt英文论坛2006年文章:Building OpenWrt Kamikaze source
https://forum.openwrt.org/viewtopic.php?id=9180
这里有更具体权势巨子的申明。
4.获取OpenWrt源代码和安装包,更新
1. svn checkout svn://svn.openwrt.org/openwrt/trunk (我用的是此版本)
PS:wgethttp://downloads.openwrt.org/backfire/10.03/backfire_10.03_source.tar.bz2(今朝稳定版本,建议)
2. 搜检设备景象
[super@Ubuntu openwrt]¥cd ~
[super@Ubuntu ~]¥cp -r /usr/src/test/trunk ./
[super@Ubuntu ~]¥cd trunk/
[super@Ubuntu:~/openwrt/trunk]¥ ls

3.feeds
Feeds是OpenWrt景象所须要的软件包套件。最首要的feeds有:
‘packages’一些额外的根蒂根基路由器特点软件
‘LuCI’OpenWrt默认的GUI
‘Xwrt’另一种可选的GUI界面
须要可以或许连接互联网。
鄙人载之前可以经由过程查看’feeds.conf.default’文件,来搜检哪些文件须要包含在景象中。
若是更新了feeds的设备文件,须要添加新的软件包用于生成体系。只需进行反复操纵:
[super@Ubuntu:~/openwrt/trunk]¥./scripts/feeds update -a
[super@Ubuntu:~/openwrt/trunk]¥./scripts/feeds install -a
4.进行设备
编译过程应用的交叉编译,交叉编译生成的SDK以及image等文件的类型取决于开辟景象、应用硬件、以及源码版本。所以要对本身的景象进行懂得,才干进行正确的设备。我在设备过程中,就碰到了这个题目,我的硬件是brcm47xx,在第一次编译的时辰,选择地是Target System (Broadcom BCM947xx/953xx),最后生成的包无法在router上安装,版本不匹配。第二次安装时,选择了Target System (Broadcom
BCM947xx/953xx[2.4]),安装成功,我的板子可能只支撑linux2.4的内核。(设备型号是Linksys Wrt54gs v3.0) (2011.05.01添加:其实Linksys Wrt54gs v3.0是支撑Linux 2.6版本的,Target System 选择 Broadcom BCM947xx/953xx,编译后也是可以用的,这周末因为项目须要改某个软件,每次批改代码后,都得从头编译一下固件,经过往返编译了十来次,都可以应用。别的。内核版本进级之后,无线驱动改成了mac802.11,而非以前的wl,认为wl.o这个专门的库只在linux2.4中才用到。)
[super@Ubuntu:~/openwrt/trunk]¥make defconfig
[super@Ubuntu:~/openwrt/trunk]¥make prereq
[super@Ubuntu:~/openwrt/trunk]¥make menuconfig
经由过程文本对话框进行选项设备,最首要的设备项有:
Target system(目标体系类型)
Package ion(软件包选择)
Build system settings (编译体系设置)
Kernel modules (内核模块)
[*]默示:这个包裹选中编译,并安装在firmware中;
[M]默示:这个软件包选中编译,但并不安装在firmware中。
在退出Menuconfig的时,会提示是否保存设备。(保存的文件为根目录下的.config)
在此我只对target system进行了选择;勾选了Advanced configuration option和Build the OpenWrt SDK选项。
下面对某些项进行说明
1.选择CPU型号
Target System—–Atheros AR71xx/AR7240/AR913x/AR934x
2.选择路由型号
Target Profile—-TP-LINK TL-WR703
3.添加luci
LuCI—>Collections—– <*> luci
4.添加luci的中文语言包
LuCI—>Translations—- <*> luci-i18n-chinese
5.添加DDNS
LuCI—>Applications —> <*>luci-app-ddns.
6.添加USB挂载
Base system —> <*>block-mount
7.添加硬盘格式支持
Kernel modules —> Filesystems —> <*> kmod-fs-ext4
8.添加UTF8编码
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
9.添加USB扩展支持
Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.
10.添加自动挂载工具
Utilities —> Filesystem —> <*> badblocks
开始编译make V=99,最后会得到一个4M的带中文luci的TL-WR703N固件。
5. 编译
(1)一般景象,应用一个简单的号令:
[super@Ubuntu:~/openwrt/trunk¥make V=99 (一般只用这个命令进行编译就行)
(2)在多核处理惩罚器体系上为进步速度,可应用(例如用3核处理惩罚器):
[super@Ubuntu:~/openwrt/trunk]¥ make –j 3
(3)在后台进行编译,应用余暇的I/O资料和CPU机能,可应用(例如应用双核处理惩罚器)
[super@Ubuntu:~/openwrt/trunk]¥ onice -c 3 nice -n 20 make -j 2
(4)编译一个零丁的软件包(例如在cups软件包):
[super@Ubuntu:~/openwrt/trunk]¥make package/cups/compile V=99 (对于自己增加的或者某个组件进行编译就行,后一篇会用到)
(5)若是特别原因须要解析编译报错信息:
[super@Ubuntu:~/openwrt/trunk]¥ make V=99 2>&1 |tee build.log |grep -i error
申明:将编译的所有输出信息保存在build.log中,将error信息打印在屏幕上。
(6)一个错杂指令的应用
[super@Ubuntu:~/openwrt/trunk]¥ ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 |tee build.log |egrep -i ""(warn|error)""
申明:将编译的所有输出信息保存在build.log中,将error和warning信息打印在屏幕上。编译过程应用双核CPU,占用后台资料。
6.生成镜像(Image)地位
新生成的镜像会默认放在新建的一个bin目次下。例如:/bin/brcm-2.4/packages
文件说明:
a: Openwrt-ramips-rt305x-dir-615-h1-squashfs-sysupgrade.bin:这个就是我要的镜像文件
b: OpenWrt-SDK-ramips-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2:这个就是你在make menuconfig是选择Build the OpenWrt SDK生成的软件包,下一篇文章会介绍。
c:OpenWrt-Toolchain-ramips-for-mipsel_24kec+dsp-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2:这个好理解吧,就是你的交叉编译工具链,看文件名就知道了吧(target system是ramips,host system是mipsel_24kec+dsp,使用的编译工具以及库是gcc-4.6-linaro_uClibc-0.9.33.2。)
将编译好的镜像做个备份,例如备份到/目次下:
[openwrt@localhost trunk]¥ cp bin /
好了到此就编译成镜像了可以烧写到你的开发板当中去了。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮