Yocto令Linux羽化成蝶

news/2024/11/7 14:29:17/

  作为开放源码运动的旗舰,Linux曾经是新兴软件企业变革传统软件产业结构的希望。可是,这些年走下来,Linux表现出来的辉煌光环似乎主要是成就了别人,例如风行全球的Android的基础就是Linux。反观Linux自身,却仍然在潜行。那么,Linux本身是否具备腾飞的基因?它需要怎样的机遇,才能羽化成蝶,一飞冲天?
  
变革,从基因到环境

  回想1998年,开放源代码运动如火如荼,因为它向人们预示——软件即将免费获得。这将是改变全球软件产业结构的一场翻天覆地的革命。

  这些年来,这种革命真的发生了,只是如果我们不去回想以往,就会觉得目前的一切是理所当然。只要看看我们许多人手中的Android智能手机,你知道其中的软件是免费的。最重要的是,其中的软件基础——Android操作系统是免费的。

  尽管Android的基础是Linux,但在这个世界上知道Android的人似乎多于知道Linux的人。这一方面说明Linux是具有羽化成蝶的基因,因为在智能手机领域它已经变成举世闻名的Android;另一方面又启发我们,它应该在其他的更广泛的领域羽化成蝶,从而对整个软件产业的变革发挥更大的作用。

  用比较研究的思维方法来观察Linux向Android的演变,有利于我们促成Linux在其他更广的空间里发挥潜力。那么,Android发生了怎样的变异,使其从传统Linux中脱颖而出呢?

  纵观整个过程不难发现,统一化、一致化是Linux羽化为Android 的重要推动力。在智能手机和平板电脑领域,Linux被一股强大的力量统一于Android。在其他领域,从事Linux软件开发的工程师和团队仍然处在“家庭作坊”的状况。这并非由太多人热衷于“家庭作坊”式的开发方式。其中的痛苦他们有切身感受。从一个仅有内核和简单网络功能的操作系统开始,一点一点地编织出一个可以与特定硬件环境相配合、投入实际应用的系统,这个过程本身就像是看着别人健步如飞而自己却在爬行。此后,硬件环境哪怕有一丝一毫的改变,就可能导致全面重新修改和测试整个软件系统。而且,这个过程会无休止地循环下去,直至这个产品生命周期的结束。

  反观Android,这是一个相对统一化、一致化的Linux系统。开发一个Android的系统,与开发一个Linux系统相比轻松多了,要担心的事情也少多了,速度也快多了。可见,Linux也需要类似于Android那样的变革。

Yocto适逢其时

  时光回转至2010年,开放源代码运动的精英们意识到了统一化、一致化对于Linux性命攸关,他们聚集起来,启动了Yocto计划,开始为开源社区培植变革的火种。

  通过提供通用的建构系统(Build System)和具备协同能力的开发技术,Yocto计划为Linux开发者启动了新的起点,重点是免除了他们浪费在Porting、Duplicating、Recreating和Maintaining这些低价值工作上的时间。

  这两年来,在Yocto的支持下,从最初的爬行到后来的直立行走,Linux社区的人们步伐已经越来越稳健。其中具有标志性的一环就是Yocto计划的兼容需求规范(Yocto Project Compliance Requirements)已经出炉了,这将全面推动变革与进步。

  那么,究竟什么是Yocto计划呢?它是一个Linux发行版本吗?我应该怎样把它用于自己的Linux项目呢?

  Yocto计划是一个开放源码协同计划,它提供必须的标准以及高质量的架构、工具和方法论,以便降低嵌入式Linux软件工程项目的复杂度,提高其可移植性。Yocto计划不是一个某家公司或者机构提供的Linux发行版本,但是许多硬件和软件公司都加入了Yocto计划,共同来支持嵌入式Linux开发者实现更好的跨平台兼容性和部件互操作性。那么,Yocto计划又是怎样做到这些呢?

  在嵌入式环境中建立一个可伸缩的Linux系统,必须依赖一些软件和工具集。请你设想这样的情形,你可以从开放源码社区得到Kernel、Userspace和Patch等等,也会做出你自己的工作,例如特定大小的文件系统、内核配置等等,然后应用适当的工具集来建构各种特定的应用系统,例如针对IA架构做一套系统,针对ARM架构做一套系统。

  这跟烹调做菜十分相似——用相同的食材和工具,只要稍微改变配方比例和火候,你就可以做成不同的菜肴。现在请你设想一下,如果没有通用的、好用的工具,例如菜刀、炉灶、锅和炒菜的铲子,你的烹调技艺将会很难发挥。在嵌入式Linux领域,如果没有Yocto 计划,你所遇到的情形就是这样——没有通用的资源,从Kernel、Userspace到Cross-Architecture Build,也没有通用的工具集 (Toolchain、Makefiles、Compilers、Debuggers等等 )。

  Yocto计划提供了上述所缺的一切,而且不会让用户有厂商锁定的困扰。这样,用户既拥有了高质量的标准化工具,又可以自行管理其风险。对于企业战略来说,拥有自主的技术选择是成功的必要条件。Linux项目中的互操作性、可移植性和可重用性将会让开发团队受益无穷。


http://www.ppmy.cn/news/824002.html

相关文章

编程便笺:Html5等待还是炉灶另起

html5是一场分合的大戏,看得人眼花缭乱;html5也是热词,时不时可以爆炒一顿,紧抓开发着的眼球;与html5相关的往往是五年计划、十年计划,在今天这样的环境下,可以説难能可贵,只是在赌开…

燃料分配问题C++贪心算法

考虑贪心&#xff0c;我们应该让尽可能多地机器进行工作&#xff0c;如果把燃料全部投入到少数几个机器上&#xff0c;那么很容易到达上限。而燃料越分散&#xff0c;则越不容易达到上限。 #include <cstdio> #include <algorithm> #define ll long long using na…

[人工智能][转]机器学习之迭代法

浅说机器学习中“迭代法” 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(…

电影《摔跤吧!爸爸》四个触动我的瞬间

昨天晚上和女儿一起看了《摔跤吧!爸爸》&#xff0c;最开始我提议要和她一起看这个电影的时候&#xff0c;她还是有些排斥的&#xff0c;可能是因为她觉得这是大人们喜欢的印度电影&#xff0c;她一个9岁的小女孩不感兴趣&#xff0c;后来在我的“强迫”下&#xff0c;才安静坐…

产品读书《B端产品经理必修课:从业务逻辑到产品构建全攻略》

很幸运的是2019年3月份读完了这本B端产品经理必修课&#xff0c;今天也就是2019年11月25日整理书籍再次拿出来看的时候&#xff0c;自己已经身在小米&#xff0c;主要是我当时忘记这本书的作者就是现在的同事宽同学了&#xff0c;了解其人&#xff0c;更要从书中再去品味。 产品…

为什么会做的越多,错的越多

每次写文章前&#xff0c;我都会翻翻旧文&#xff0c;今天讲的观点&#xff0c;旧文其实也提过 caoz谈能力成长 - 取舍之道 那些用力过猛的员工 再谈职场中的用力过猛 但我觉得&#xff0c;还是有必要老调重弹。 产品设计&#xff0c;运营中&#xff0c;为什么做减法难&#xf…

一个技术总监的忠告:精通那么多技术为何还是做不好一个项目?

一位技术大牛根据经历过的项目&#xff0c;发自内心的经验总结和项目复盘&#xff0c;对程序员的成长帮助非常大。很诚恳和专业的一篇文章&#xff0c;很少有程序员这么关心细节质量&#xff0c;同时又有宏观视角&#xff0c;确实承载了作者十几年的修行。文章很硬核&#xff0…

【Java从入门到天黑|01】SE入门之Java的前生今世

大家好,我是孙叫兽,微信公众号【孙叫兽杂谈】,本期给大家分享一下JavaSE的入门部分之Java的前生今世。 Java : 一个帝国的诞生 C语言帝国的统治 现在是公元1995年, C语言帝国已经统治了我们20多年, 实在是太久了。 1972年, 随着C语言的诞生和Unix的问世, 帝国