首页 > 代码库 > 嵌入式Linux下开源路由器OpenWRT编译与下载

嵌入式Linux下开源路由器OpenWRT编译与下载

***************************************************************************************************************************
作者: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 fixes
      RC1 之后的重大改进

  • 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 images
      Linux 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 devices
      UCI 配置改进

  • 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的总结

       在编译和下载过程中要非常有耐性,因为有些时候网络并不是很好,就需要去查找是哪里导致停止等等。。


嵌入式Linux下开源路由器OpenWRT编译与下载