开源嵌入式操作系统,其字面意思有3点,即开放源代码、嵌入式和操作系统,但实质上其流行的关键在于其可扩展性。
开源是指开放源代码,是指软件在开放源代码许可证下发布软件,保障软件用户自由查看软件源代码的权利。这同时也保障了用于修改、复制和再分发的权利,但仍需遵守开源许可协议中的一些约束。开放源代码不仅仅指开放源代码的软件,也是一种软件开发模式。
“许可证”是指授权条款,是指使用、修改、复制和再分发的条款和条件的法律文件。最常见的开源许可证有几种:GNU GPL许可证、Apache许可证等。许可证通常也称为许可协议。
“Apache许可证”是著名非盈利开源组织Apache采用的协议。该协议鼓励代码共享和尊重原作者的著作权,同样允许代码修改、再发布(作为开源或商业软件)。获得该许可证需要满足以下4个条件。
Apache许可协议是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布和销售。
GPL是著名的开源软件Linux采用的许可协议。GPL许可证和Apache许可证等鼓励代码重用的许可很不一样。GPL许可证的出发点是代码的开源使用和引用/修改/衍生代码的开源使用,但不允许修改和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用使用各种商业软件公司发布各种Linux系统以及他们的源代码。
GPL许可证主要有以下两个特点。
嵌入式系统,是指嵌入到硬件系统内部,为特定应用功能而设计的专用软件系统。与个人计算机的通用操作系统不同,嵌入式系统通常只针对特殊的用途。因此可以对它进行优化,并裁剪到最小。现在通用的硬件系统发展非常迅速,因此出现了在通用硬件系统上的嵌入式操作系统。目前在嵌入式领域广泛使用的操作系统有:Linux、Windows Embedded和VxWorks等。
基于Linux内核也衍生出很多操作系统发行版本。Linux基金会负责Linux内核的开发、发行及维护工作。对于各个基于Linux内核的发行版本来说,可以选择某款Linux内核长期支持版(LFS)作为自己操作系统的内核。如果对主干版本进行修改,可以将修改反馈给上游。等到下次升级内核版本时,就会得到包含自己修改代码的内核了。
相对于专有的闭源操作系统,如Windows和Mac,开源Linux操作系统最大的特点就是其可扩展性非常好。但如果从头开始构建操作系统,则会因为使用者的技术水平、软件包的依赖关系、软件包的版本等出现很多不可预知的兼容性问题。这就要求个人和企业用户在选择操作系统时需要注意根据自己的实际情况来选择,这也是目前使用开源Linux操作系统较为困难的最主要原因。还好有些技术社区组织已经针对某些领域做了一些特殊的定制和优化。例如,针对防火墙的操作系统有IPFire;针对智能路由器领域通常使用的嵌入式操作系统有Tomato和OpenWrt等;针对个人桌面领域操作系统有Ubuntu和Fedora等;针对手机有Android和Firefox OS等。它们均是基于Linux内核的操作系统。
OpenWrt是一个嵌入式设备的Linux发行版,以GPL许可协议发行。
OpenWrt项目始于2004年1月,其第一个版本采用了LinkSys的源码。在LinkSys的代码收费后,改为采用正式发布的Linux内核来集成,并将OpenWrt完全模块化,不断推出补丁和驱动。OpenWrt的主要特点在于其高扩展性,并且文件系统可写,开发者无需在每一次修改后完全重新编译,只要编译自己的软件包即可,这样就加快了开发的进度。另外OpenWrt提供了SDK,每个运行软件均能够以SDK来进行编译,以软件包形式进行安装和卸载。其主要特点有如下几个。
Android是谷歌研发的一款智能终端操作系统,是一种基于Linux的开放源代码的操作系统,主要使用于移动设备 ,如智能手机、平板计算机等,也应用于智能电视等。它由谷歌公司和开放手机联盟领导开发。Android操作系统最初由安迪·鲁宾开发,最初目的是用于数码相机的操作系统。2005年8月谷歌全资收购了Android操作系统。2007年11月,谷歌与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟,共同研发改良Android系统。随后谷歌以Apache开源许可协议的授权方式发布了Android的源代码,Android以JAVA层封装了系统层提供给应用开发者统一的API接口。第一部Android智能手机发布于2008年10月。目前,Android已逐渐扩展到平板计算机及其他领域,如电视、智能手表、数码相机和游戏机等。2015年,Android以85%的市场占有率占据移动操作系统市场之首。表1所示为OpenWrt和Android的比较。
Android操作系统已经演化为一个移动设备开发平台,其软件层次大体上分为4层,即操作系统内核、中间层、应用程序框架层和应用程序。应用程序框架层为应用程序开发者提供了功能强大的API,包括图形显示的各种组件,如视图、列表、文本框、按钮以及嵌入式的Web浏览器等。
Tomato是一种小型的LinkSys的WRT54G是博通路由器的另外一种可选的替换固件。它有一个新的易于使用的GUI,一个新的带宽监控工具,更为先进的服务质量(QoS)和访问限制,使用新的无线功能,如WDS和无线客户端模式,P2P最大连接上的限制,允许你运行自定义脚本或者Telnet、SSH登录到路由器,在做各种各样的事情。例如重新编程的SES/AOSS按钮,添加无线站点调查来查看你的Wi-Fi邻居,等等。Tomato有以下特点。
它有一些明显缺点,例如仅有发布说明,没有详细修改记录;最近不再更新等。
DD-WRT是一个基于Linux的开源固件,适合各种各样的无线路由器和嵌入式操作系统。其重点在于提供最简单的处理,同时在各种硬件平台的框架内支持大量的功能。它是另外一款路由器代码发行版,从2006年2月开始开发,没有分支稳定版本。代码库包含所有的代码,包含SVN信息共大约18GB。其代码始终在更新,2015年10月也有代码提交。有一个缺点是SVN上包含所有的代码,没有分支及标签,无法区分稳定版本。用在私人用途,DD-WRT是免费的,如果用在商业用途则需要获取软件许可。
表2所示为开源路由器各种发行版本的对比。
OpenWrt相对于其他几个无线路由器操作系统来说,版本管理最为规范,社区最活跃,是最适合选为基础来进一步开发的。当然,OpenWrt也适合初学者来学习。
本文节选自《智能路由器开发指南》
内容简介
OpenWrt是在实现路由器功能方面最受欢迎的开源软件之一。本书基于OpenWrt,详细介绍了智能路由器的开发。本书共计15章,按照认识路由器的顺序进行编写,介绍了智能路由器、开发环境及编译分析、OpenWrt包管理系统、OpenWrt配置、软件开发、GDB调试、网络基础知识、路由器基础软件模块、常用软件模块、IP路由、DNS与DHCP、iptables防火墙、UCI防火墙、UPnP、网络测试及分析工具等。丰富的理论知识和代码示例可以帮助读者深入认识和理解OpenWrt技术,并能够提升开发水平和开发效率。
本书适合软件架构师、软件开发工程师、软件测试工程师以及计算机相关专业的学生阅读。读者通过阅读本书,不仅可以掌握OpenWrt技术,还能进一步提升自己的软件开发水平。