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/trunkmake 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 / 好了到此就编译成镜像了可以烧写到你的开发板当中去了。