智能路由器开发指南_book
最近购得一个openwrt书籍《智能路由器开发指南》,作者张永智。
Building a smart router with openwrt
作者网址:http://openwrt.bjbook.net/
作者提供软件包下载服务,和openwrt代码搜索引擎,同一网站。
书中所提到的系统使用openwrt 12.09和openwrt 15.05.1介绍。
作者希望通过本书的学习能够掌握openwrt各种技术的应用,同时在一定程度上可以参考openwrt的技术架构,使自己的职业技能有一个质的提高。
在异步社区http://www.epubit.com.cn/book/onlinechapter/43506有本书前两章内容,可供参考。
作者在前言中提到了openwrt成功的秘诀,可以学习参考。
可以实现路由器功能的开源软件很多,为什么只有OpenWrt成功了?OpenWrt软件成功的关键在于3个方面:领导者、基础设施以及实现软件的技术。通常领导者是最重要的,因为领导者决定着社区的规则和技术方向,但是每个人都是独特的而且是无法复制的,因此通常无法借鉴。基础设施和实现软件的技术则是可以借鉴的。
OpenWrt社区采用六大基础设施工具支撑整个社区的运转,这六大基础设施工具分别是代码管理工具Git、邮件列表、自动构建工具buildbot、文档管理工具WiKi、Trac和技术论坛。
代码管理工具Git可以跟踪文件和目录的历史信息,包含4个W(Who、When、Why和What),即谁做了修改,什么时间做了修改,为什么修改以及修改的内容是什么。此外,Git还支持分布式代码仓库,适合开源软件项目的跨地域开发,这个工具可以让每个人看到代码的变化过程。OpenWrt经过了12年的发展,代码仓库还保留了最初的提交记录。
邮件列表是代码审查及代码提交集成的地方,开发人员将修改代码生成补丁发送给所有的邮件订阅者,每个人都可以进行代码评审,核心开发人员看到后会将代码集成到代码仓库中。邮件内容可以永久保存到邮件列表中。邮件列表和普通邮件的主要区别在于订阅机制和存档机制,每个人都可以自由订阅并查看历史邮件。
自动构建工具buildbot的核心是一个作业调度系统,它会将任务排队,当提供了任务所需的资源时,执行任务并报告结果。buildbot不仅仅支持持续集成及自动化测试,还支持应用程序的自动化部署和软件发布的管理。同时在多个平台开发时,通常最后的编译验证都是重复的,编译机器人(buildbot)将这一部分接管过来,每日自动下载代码进行编译验证,并将安装包上传到文件服务器上,如果编译失败则将用邮件通知感兴趣的人。
文档管理工具WiKi的特点是具有开放性,可以让任何参与人员非常方便地进行编辑、访问和搜索。大多数软件公司的软件文档均保存为二进制格式,在经过一段时间和人员流动之后,这些文档就会成为固定的资料,因为它会被遗落在某个角落而无法找到,而OpenWrt社区的软件开发文档和使用手册均保存到WiKi上。WiKi是一个协同写作和分享平台,允许所有人修改页面。WiKi使用简化的语法来代替复杂的HTML语言,降低了内容维护的门槛。
Trac是一个集成WiKi和问题跟踪管理系统的项目管理平台,可以帮助开发人员更好地管理软件开发过程,从而开发出高质量的软件。任何人都可以使用该系统来提交Bug并查询当前的进展。Trac采用面向进度的项目管理模型,采用里程碑的方式来组织开发。里程碑是以ticket(问题)来组织的,所有的问题都解决了,就到达了里程碑。但社区并不完全遵从这个标准,因为其开发人员全部是志愿者,通常到了一定时间会发布一个版本。
技术论坛是一个技术讨论的平台,每个注册用户均可发帖参与讨论。在开发过程中,每个新版本的说明通过该平台发布。
社区的运转是通过以上所述的六大基础设施工具来实现的,我们通过这些工具可以理解到,开源软件和社区的精髓在于其开放性,任何人员均可以通过网络自由地获取其信息并参与其中,这样可以激励每个人贡献出自己的力量,开发人员同时也从社区获得回报。开源社区的工具大多都是相同的,掌握这些工具可以帮助你深入了解开源社区和OpenWrt。
OpenWrt技术上成功的秘诀在于:统一编译框架、统一配置接口(Unified Configuration Interface,UCI)、开放的软件包管理系统及其读写分区系统、系统总线ubus和进程管理模块procd。
- 统一编译框架使得数千个软件以相同的方式进行编译,并且可以在几十个平台编译。每个软件模块按照相同的步骤进行代码下载、解压缩、打补丁、配置、编译及生成安装包。
- 统一配置接口使得数千个软件在几十个平台上以相同的方式来存取配置数据,配置以统一格式的文本文件进行管理。
- 开放的软件包管理系统和读写分区系统使得软件管理非常方便,并且能够方便地处理软件包的依赖关系。读写分区系统可以自由地安装软件,而不像大多数专有系统需要全部重新编译才能安装新的软件。
- 系统总线ubus。每个进程均可以注册到系统总线上进行消息传递,并且提供命令行工具来访问系统总线。
- 进程管理模块procd。每一个进程交给procd来启动,并在意外退出之后再次调用。
所有的这些功能并不是一次性设计出来的,而是随着时间的推进,根据用户和开发进展逐步发展起来的,每一种技术都有其独特的价值。
那么怎样向openwrt提交代码呢?
参考作者的建议:如何贡献代码
智能路由器开发指南_book的更多相关文章
- Intel edison 智能硬件开发指南 基于YoctoProject
首先简单的介绍一下edison的板子: edison 芯片 22nm工艺,quark双核SoC,采用atom架构,针对小型智能设备 X86架构 相当于一台“奔腾级电脑” 低功耗,小体积,自带wifi ...
- 智能路由器操作系统OpenWrt
小米路由器的“MiWiFi”又让路由器成了关键词,每台智能路由器的系统是该款产品的亮点之一,其系统肯定有不少“好玩”的地方.为自己的智能路由器量身打造系统,并且纷纷开发了适合智能手机.平板电脑等使用的 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- HelloX操作系统网络功能简介及使用和开发指南
HelloX网络功能简介及使用和开发指南 HelloX网络功能简介 作为物联网操作系统,网络功能是必备的核心功能之一.按照规划,HelloX实现了两个不同类型的TCP/IP协议栈,一个面向资源受限的嵌 ...
- Boost程序库完全开发指南——深入C++“准”标准库(第3版)
内容简介 · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...
- 基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能
原文:基于Asterisk的VoIP开发指南--(1)实现基本呼叫功能 说明: 1.本文档探讨基于Asterisk如何实现VoIP的一些基本功能,包括基本呼叫功能的方案选取.主叫号码透传.如何编写As ...
- [翻译]现代java开发指南 第一部分
现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobol语言,现 ...
- [翻译]现代java开发指南 第三部分
现代java开发指南 第三部分 第三部分:Web开发 第一部分,第二部分,第三部分 =========================== 欢迎来到现代 Java 开发指南第三部分.在第一部分中,我们 ...
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
随机推荐
- 教程:基于Spring快速开发电子邮件发送功能
在Spring框架的spring-context-support.jar中有对电子邮件发送功能的封装: 基于Spring开发简单省事,而且更稳定.需要mail.jar包支持 @Component pu ...
- VisualStudio Shell简介 — 界面定制
项目组成 首先我们来看一下模板自动生成的工程文件: 它包括两个C++工程和两个C#工程,首先我们来看两个C++的工程: VSShellStub1, 这个是系统的启动项,它是最终的exe文件的 ...
- jdk7 cpocurrent ForJoinPool
19. 使用 ForkJoinPool 进行分叉和合并 ForkJoinPool 在 Java 7 中被引入.它和 ExecutorService 很相似,除了一点不同.ForkJoinPool 让我 ...
- form表单提交之前判断
1.使用onsubmit方法 <form name="Form" action="t" method="post" onsubmit= ...
- scala函数返回值
1.使用returndef functionName ([参数列表]) : [return type] = { function body return [expr] } 2.直接把返回值写在最后: ...
- java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)
Java代码: File filePic = new File(path+"1-ab1.png"); if(filePic.exists()){ FileInputStream i ...
- ElasticSearch 监控单个节点详解
1.介绍 集群健康 就像是光谱的一端——对集群的所有信息进行高度概述. 而 节点统计值 API 则是在另一端.它提供一个让人眼花缭乱的统计数据的数组,包含集群的每一个节点统计值. 节点统计值 提供的统 ...
- 获取本机IP,用户代理
1.获取本机IP:http://httpbin.org/ip 2.获取用户代理 https://httpbin.org/user-agent https://httpbin.org/ httpbin( ...
- Spark jdbc postgresql数据库连接和写入操作源代码解读
概述:Spark postgresql jdbc 数据库连接和写入操作源代码解读.具体记录了SparkSQL对数据库的操作,通过java程序.在本地开发和执行.总体为,Spark建立数据库连接,读取数 ...
- Hive 性能调优
避免执行MR select * or select field1,field2 limit 10 where语句中只有分区字段或该表的本地字段 使用本地set hive.exec.mode.local ...