***************************************************************************************************************************
作者:EasyWave 时间:2014.10.26
类别:Linux应用-开源路由器OpenWRT的编译与下载 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
一:开源路由器OpenWRT简介与特性
OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开发软件的工序。
OpenWRT不同于其他许多用于路由器的发行版,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。实际上,这意味着您能够使用您想要的功能而不加进其他的累赘,而支持这些功能工作的linux kernel又远比绝大多数发行版来得新。
对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。
二:开源路由器OpenWRT官网与下载
目前开源路由器OpenWRT的最新版本为:OpenWrt (Barrier Breaker) 14.07,当前主要更新和改进如下:
RC3 之后的重大改进various ath9k related fixes
a few board related fixes
fixes for packages depdending on curl
per feed download folders RC2 之后的重大改进
NAT & firewall throughput improvements
Security updates for OpenSSL & PolarSSL
Minor fixes in DHCP & DHCPv6 handling
Configuration support for GRE tunnels
Various other fixesRC1 之后的重大改进
fix a long standing ath9k deadlock bug
all feeds are now built
image builder now works and RC2 contains all board specific images
various board/stability fixes
Highlights since Attitude Adjustment
Default configuration and imagesLinux kernel 更新到版本 3.10
Procd: new preinit, init, hotplug and event system written in C
原生 IPv6 支持
RA & DHCPv6+PD client and server
Local prefix allocation & source-restricted routes (multihoming) 文件系统改进
Added support for sysupgrade on NAND-flash
Added support for filesystem snapshot and rollback
Rewritten mounting system in C for rootfs and block devicesUCI 配置改进
Support for testing configuration and rollback to working
last working state
Unified change trigger system to restart services on-demand
Added a data validation layer网络改进
Netifd now handles setup and configuration reload of wireless interfaces
Added reworked event support to allow obsoleting network hotplug-scripts
Added support for dynamic firewall rules and zones
Added support for transparent multicast to unicast translation for bridges
Various other fixes and improvements其他值得关注的 SDK 和其他重要改进
扩展 IPv6 支持
Added DS-Lite support and improved 6to4, 6in4 and 6rd-support
Experimental support for Lightweight 4over6, MAP-E and MAP-T
Draft-support for self-managing home networks (HNCP)
rpcd: new JSONRPC over HTTP-frontend for remote access to ubus
mdns: new lightweight mdns daemon (work in progress)
Initial support for the musl C standard library
Support for QMI-based 3g/4g modems
Support for DNSSEC validation
Added architecture for package signing and SHA256 hashing OpenWRT官方网址:openwrt.org,如下所示:
OpenWRT开发网址:dev.openwrt.org,如下所示:
上图的红色圈中的部分,是告诉我们如何去下OpenWRT的代码,点击进入之后,可以看到有git和svn两种方法下载,不过我选择git的方式来下载。如下所示:
上图中蓝色圈中部分的为现在一直在开发的版本,而红色圈中的部分为Rlease版本,具体想下载那个版本,就看自己的想法啦,不过我建议是下载红色圈中的部分,在采用git命令下载之前,需要先确保自己的机器上是否有安装git-core,如果没有的话,请用 sudo apt-get install git-core来安装git工具。安装完git工具之后,采用命令:git clone git://git.openwrt.org/14.07/openwrt.git下载,下载期间必须确保网络一直畅通。下载完之后的OpenWRT的目录基本结构如下所示:
之后需要采用命令:./scripts/feeds updata -a去更新OpenWRT的源码包,如下所示:
更新完之后,需要采用命令:./scripts/feeds install -a去下载更新包,如下所示:
需要注意的是,这个时候并没有将OpenWRT的任何源码下载下来,而是需要通过make命令之后才会去下载OpenWRT项目中所需要的源码的,这一点请一定要注意哦,这也是为什么编译的速度会很慢的根本原因。在OpenWRT项目中有个README文件,有些注意事项需要看看,如下所示:
上图中已经说的很清楚啦,首先需要安装一些必须的工具和第三方库,比如:gcc, binutils, bzip2, flex, python, perl, make, find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers.安装完这些工具和三方库之后,就采用make defconfig命令设置默认的配置文件,然后在这个配置文件的基础上去修改和配置自己项目所需的配置,后续的配置就都可以采用:make menuconfig来配置和修改,这个跟Linux配置菜单是一样的,当然里面的配置项目很多,需要花点时间去熟悉,目前我也在熟悉当中,不能讲太多的东西。
三:开源OpenWRT的编译
前面已经详细的介绍了如何下载OpenWRT,这个部分就简单地说明如何编译,编译过程出错之后,如何查看错误信息,一般来说,都是采用make命令来编译代码,如下所示:
而采用make V=s来编译和查看错误的信息。如下所示:
编译的过程会很漫长,这是因为在编译的过程中,会去下载相关的源码压缩包,一般第三方库是放在dl目录下,而其它的会放在toolchain目录下,如下所示:
四:开源OpenWRT的总结
在编译和下载过程中要非常有耐性,因为有些时候网络并不是很好,就需要去查找是哪里导致停止等等。。