openWrt是实现智能路由器功能的最成功的开源系统 。主要在于3个方面:领导者、基础设施、实现软件的技术 。
openWrt是linux的发行版 。
openWrt是嵌入式设备上运行的linux系统 。
openWrt 的文件系统是可写的,开发者无需在每一次修改后重新编译,令它更像一个小型的 Linux 电脑系统,也加快了开发速度 。
openWrt社区采用6大基础设施工具支撑整个社区的运转:
1.代码管理工具git 。可以跟踪文件和目录的历史信息;
2.邮件列表 。代码审查及代码提交集成的地方;
3.自动构建工具buildbot 。编译机器人,支持持续集成和自动化测试,以及应用程序的自动化部署和软件开发的管理;
4.文档管理工具WiKi 。可以让任何参与人员非常方便地进行编辑、访问和搜索;
5.Trac 。集成WiKi和问题跟踪管理系统的项目管理平台;
6.技术论坛 。技术讨论平台 。
openWrt英文官网:https://openwrt.org/ 中文官网:
http://www.openwrt.org.cn/
openWrt技术上的成功秘诀在于:
1.统一编译框架;
2.统一配置接口(uci);
3.开放的软件包管理系统及读写分区系统;
4.系统总线(ubus);
5.进程管理模块(proc);
openWrt特点:
1.代码里不含第三方开源宝,只包含开源包地址连接;
2.编译时自动下载源代码、打补丁来满足指定平台要求,并编译,还可以修改Makefile来下载最新的软件包;
3.使用LuCI作为最终用户管理界面 。LuCI是以Apache许可协议发布的web管理功能代码;
4.UCI通用配置管理方法;
5.通过脚本来调用iptables来实现防火墙功能,配置保存在UCI文件中;
6.开放和可扩展的OPKG格式安装升级包 。
路由器的整体架构:管理平面、控制平面、数据转发平面 。
openWrt是一个基于Linux的智能路由器操作系统,默认内置了一些基础功能,主要功能为3部分:网络功能、系统管理功能、状态监控功能 。
【开发环境及编译分析】
编译环境:VMware虚拟机、ubuntu系统
安装详细步骤:
http://blog.csdn.NET/u013142781/article/details/50529030
安装相关工具和库:
(1) 安装 SVN 工具,用于下载 openwrt 源码:
$:' sudo apt-get install subversion
(2) 安装 git 工具
$:' sudo apt-get install git-core
(3) 安装依赖的库文件
$:' sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk
下载openwrt源码:
$:' mkdir openwrt
$:' cd openwrt/
$:' git clone
git://git.openwrt.org/openwrt.git
下载完 openwrt 的源码后,为了使 openwrt 支持更多的软件,需要更新和安装其他源上面的软件:
$:' ./scripts/feeds update -a
$:' ./scripts/feeds install -a
编译前的配置:
$:' make menuconfig
根据CPU和路由器进行配置,配置后生成默认的编译配置文件 .config 。
编译:
$:' make V=s -j4
大概 4、5 个小时编译就会完成,V=s可以显示详细的编译过程和出错信息,-j4通过4个线程来编译,会快一些,然后在源码目录 bin 下面生成镜像 。
openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin 这个就是我们要的镜像 。
>> 单独编译一个模块,以TcpDump为例:
$:' make package/tcpdump/clean // 清除编译生成的文件
$:' make package/tcpdump/prepare // 编译准备,下载、解压缩、打补丁
$:' make package/tcpdump/configure // 根据设置选项配置生成Makefile
$:' make package/tcpdump/compile // 根据Makefile进行编译
$:' make package/tcpdump/install // 生成安装包
openWrt顶层目录含义:
config/ // 编译选项配置文件
docs/ // 文档目录
include/ // 包含准备环境脚本、下载脚本、编译Makefile以及编译指令
package/ // 各种功能的安装包
scripts/ // 包含准备环境脚本、下载脚本、编译Makefile以及编译指令
target/ // 嵌入式平台
toolchain/ // 编译器和C库等
tools/ // 通用命令,用来生成固件的辅助工具
在openWrt固件中,几乎所有的东西都是软件包(package),可以编译为 .ipk 结尾的安装包,这样就可以很方便的安装、升级和卸载 。
openWrt编译生成目录含义:
dl/ // 编译时下载软件代码包临时目录
feeds/ // 扩展软件包目录
bin/ // 编译完成后的最终成果目录
build_dir/ // 编译中间文件目录
staging_dir/ // 编译安装目录
log/ // 如果打开了log选项,则编译log保存在该目录下
推荐阅读
- 无基础唱歌技巧和发声方式教学 学习唱歌的方法
- |逆向思维:不要再努力的学习和工作,这是一个天大的错误
- 教你快速学习摩托车驾照怎么考 摩托车学习
- 电路电气图形符号大全 电路图常用符号
- 穿衣搭配|50+想要穿出高级感,快来和这位姐妹学习,普通单品都能超神
- Linux下常用的Shell脚本
- 热熔胶我们常用的几种实用的使用方法 热熔胶怎么用
- 常用消炎漱口水有危害吗
- 翡翠手镯|翡翠手镯知识你了解多少?瑕疵是正常的,来学习一下常识
- 勒脚的作用是什么
