智能路由器开发指南_book

最近购得一个openwrt书籍《智能路由器开发指南》,做者张永智。html

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提交代码呢?

参考做者的建议:如何贡献代码

相关文章
相关标签/搜索