Linux是Android的始祖。后者已经风行全球,但Linux却仍然在潜行。这说明Linux的发掘遇到了严重的瓶颈,而克服这个瓶颈就是一 个非常大的挑战。这就是基于Linux的开发项目通常在商业上不够合算,具体地说,就是开发进度、成本以及产品上市之后的维护成本都有很大的不确定性,让 商业决策者很难做出清晰度判断,因此很难用于大规模的商业项目。
绝非大家都热衷于“作坊式”的开发,其中的痛苦,凡是用过Linux的嵌入式软件工程师都有切身感受。从一个仅有内核和简单网络功能的操作系统开始,一 点一滴地编织出一个可以与特定硬件环境相配合并可投入实际应用的系统,这个过程本身就像是看着别人健步如飞而自己却在爬行。此后,硬件环境哪怕有一丝一毫 的改变,就可能导致全面重新修改和测试整个软件系统。而且,这个过程会无休止地循环下去,直至这个产品生命周期的结束。
摆脱Linux开发零打碎敲的束缚
尽管软件开发工程是复杂的管理工程,但所用工具是否具备标准化、高效率、高可靠性,这是其中的关键因素。
在嵌入式环境中建立一个实际可用的Linux系统,必须依赖一些软件和工具集。请设想这样的情形,你从开放源码社区得到内核、用户空间和补丁等等,然后 开始做自己的工作(例如建立特定大小的文件系统、内核配置等等),然后应用适当的工具集来建构各种特定的应用软件。而且,你可能不得不针对IA架构做一套 系统,再针对ARM架构做一套系统。
实际上,嵌入式软件开发跟烹调做菜十分相似——用相同的食材和工具,只要稍微改变配方比例和火候,就可以做成不同的菜肴。
现在请设想一下,如果没有通用的、好用的工具(例如菜刀、炉灶、锅和炒菜的铲子),做菜所花的时间长短将难以预计,烹调出来的菜肴品质也很难稳定。相 反,如果刀具、炉灶和锅都是通用的,甚至是机械化、自动化的,情况就会大大不同。麦当劳、肯德基的厨房就是很好的实例——工具都是标准化的。在嵌入式 Linux领域,所遇到的情形就是这样——没有通用的资源,从内核、用户空间到跨架构构建,也没有通用的工具集(工具链、Makefile、编译器、调试 器等等)。
反观Android,这是一个相对统一化、一致化的Linux系统。与开发一个Linux系统相比,开发一个Android的系统轻松得多,要担心的事情也少得多,速度也快得多。那么,Linux怎样才能实现类似于Android那样的脱胎换骨?
以标准化的工具提升Linux项目的规模和效率
在2010年,开放源代码运动的精英们意识到,是否具备开发构件和工具的统一化、一致化将会关系到Linux的生命力。于是他们聚集起来,启动了 Yocto计划。这项计划的目的就是提供通用的建构系统和具备协同能力的开发,为Linux开发者免除他们浪费在移植、复制、重建和维护这些低价值工作上 的时间。这两年来,Yocto计划取得了重要进展,其中具有标志性的一环就是“Yocto计划兼容性需求规范(Yocto Project Compliance Requirements)”的推出。
Yocto计划是一个开放源码协同计划,它提供必备的标 准以及高质量的架构、工具和方法论,可以降低嵌入式Linux软件工程项目的复杂度,提高其可移植性。Yocto计划不是某一家公司或者机构提供的 Linux发行版本,而是吸引了许多硬件和软件公司都加入其中,共同来支持嵌入式Linux开发者实现更好的跨平台兼容性和部件互操作性。
更加诱人的是,Yocto不会让用户有厂商锁定的困扰。用户既拥有了高质量的标准化工具,又可以自行管理其风险。对于企业战略来说,拥有自主的技术选择是成功的必要条件。Linux项目中的互操作性、可移植性和可重用性将会让开发团队受益无穷。
声明: 本文由( 炫酷网站设计建设 )原创编译,转载请保留链接: Linux项目如何摆脱作坊式开发?