构建你自己的Linux

今天Linux越来越成熟, 应用越来越多, 但是自己构造, 是购买商业版本依然困扰开发者,这篇写在2007年的文章很好地 回答了产业界长期的困惑一开源软件为何要付费,商业的嵌入式Linux的价值何在。

?20世纪80年代初, 商用实时操作系统(RTOS)提供商的出 现,让人们开始了一场旷日持久的争论。争论的焦点是:到底应 该购买商业的实时操作系统还是自己构建实时操作系统呢?经常 为嵌入式设备开发软件的工程师们也卷入了这样的争论之中。如 今, 对于很多嵌入式设备来讲,Linux已经成为了更受欢迎的操 作系统。但在这个崭新的Linux世界, 有关购买还是自建的争论 是不是依然存在呢?

要回答这个问题,必须理解以下两点:

1)让开发者选择Linux作为嵌入式操作系统, 而不是其他实时操传统作系统的压力。

2) Linux与其他RTOS的一些细微差别, 其开源和软件开发 过程、深远地影响了实时操作系统开发和购买之间的平衡。

设备中的软件内容爆炸

在嵌入式系统世界中,以下两个方面的快速扩张是让开发者 转向Linux的基?。?/p>

1)新的复杂的产品种类增多。

2)嵌入式设备本身系统软件需求的增加。

请试想一下,一个曾经只需要微控制器和小型控制程序(固 件)的玩具制造厂,需要开发系列新产品、这些产品要基于完全 开源环境, 而且是多线程程序, 有TCP/IP连接、蓝牙无线通信 等。结果、这家跨国消费电子公司突然发现将不得不为自己的产 品开发决定采用有上百万行的操作系统软件,因为现在每个产品 都要求有多线程程序以及网络连接。内部成本的增加以及产品设计开发复杂度的提高、都使得贯穿整个产品的软件产生了风险。

可以这样概括现在的系统软件市场情形:

1)产品对复杂系统软件的需求日益增加,包括网络连接、 使用最具竞争力的高端微处理器技术,支持快速扩展和极度复杂 的I/O技术。

2)很多不同的产品小组和团队都对这类系统软件有旺盛的 需求,连以前根本没有任何计算内容的产品也不例外。外围激烈 的竞争形势根本不能忍受高成本的系统软件;现金预算约束也不 支持以前维持的内部开发团队; 一个公司的工程资源必须集中在 能增值的技术上才能保持自己的竞争力。

?3)现在的商业软件的版税部分成本是巨大的,严重地影响 了公司的利润。

4)选择一个公共的策略性系统软件平台将使公司避免陷入 多种解决方案中而难以决策的窘境,而且这些解决方案都是高成 本架构的、没有一个方案具有完全的杠杆平衡力量,以往的工程经验显示,统一的平台可以降低成本并且加快产品开发周期。

这些因素结合起来就使得基于Linux的操作系统成为一个卓 越的解决方案、以此来解决设备制造者面临的越来越多的软件内 容?;?。这一点有数以千万计的电子设备(如移动电话、机顶盒、 高清晰电视等)采用了Linux为操作系统的实例为证。

具有讽刺意味的是,今天虽然很多公司依然要面对制造多功 能高质量软件集成产品和强大的时间表压力,自己开发产品系统 软件的诱惑依然存在。时至今日,30多年前在RTOS领域里, 我 们听到的争论依然存在, 只不过, 现在争论的焦点变成了Linux。

显性成本

在嵌入式Linux和Linux发行版中有很多过程和成本的支出, 从下边7个方面的叙述中可见一斑:

?1)嵌入式Linux或Linux发行版由超出3000万行源代码构成。

?2)源代码一般包含19种或者更多的、不同步更新的、没有集成到上代码库川面的软件代码

?3)源代码常常每人改变。

?4)很多大公司使用广泛的嵌入式处理架构,需要24个微处 理器架构、并且其变量还有多于100个硬件平台的支持。

?5)必须支持多种主计算环境(如Windows、Linux、Solaris, 以及这些计算环境的各种版本等)。

?6)构建、测试、发布一个最初发行版最起码需要30个开发 人员(还不包括需要进行的维护、微小的改进或支持上的人力和 时间成本),整个成本加起来很容易达到数百万美元。

?7)正在进行的维护、增加的微小改进、支持,构造一个开 发的环境同样是笔不小的开支。

隐性成本

对于一个成功软件开发的过程来说,很多工作是隐性的或经常被忽略的,包括以下几项:

1)开发一个可以全面测试和质量保证(QA)能力系统:测 试套件是为操作系统本身开发的,支持大量的I/O设备,特别是 为SoC设备定制的。一个典型的移动设备SoC内部有20~30个复杂 的I/O设备,它们都需要测试。支持每一个架构参考板的物理底 层、同样需要开发和布置。

2)创建一个有效构建计算环境,以便尽可能快地更改构建(以小时计,而不是天),否则构建过程本身在整个项目开发流 中会成为一个瓶颈。

3)开发工具:交叉调试、内存泄漏检测工具、性能调整工 具、内核识别的调试等。一般情况下,项目资金很少分配到工具 的开发上,因为大部分钱必须投在内核本身的开发上。

4)发布培训课程和课程材料:Linux系统极其庞大而且功能 繁多,开发人员需要在其编程模板、设备驱动架构和开发工具上 训练,以便快速出成果。

这些隐性努力的成本加上前边讨论过的显性开发成本,对于 正确构建和支持一个嵌入式Linux系统都是必需的。

开发过程、新的复杂度和成本

传统的内部开发过程,整个软件开发要很严格地遵守从头到 尾的开发步骤。与此不同,Linux开发过程始于大量没有定制的 过程、这就是开源开发进程。一个公司可能对一项特别的开源项 目有重大贡献,但绝不可能控制整个进程;公司能做的仅仅是影 响和参与。比如,Linux更新版本的速度可以不同。从微小bug的 解决、适度新特性改进,到整个底层系统的改变,引进新功能、 不稳定以及新的bug都可以影响Linux版本改变的频率。

为这些改变所做的整个支出大到让人沮丧的。让我们跟踪一 个独立LinuxCPU架构活动, 以MIPS为例来说明这种情况:为保 证跟踪每天发生的改变,开发人员需要监视11种不同的异步开源 项目的Email通信, 包括:kernel.org-Linux内核的核心、gcc以及glibcprojects(核心的工具链和库), 还有至少9种其他的能组成可用Linux开发环境的因素,kerneL org本身每无可能有近 5000条信息,其中1000多条需要反复评估,因为它们可能会应用 到你们Linux的源代码部分。如果忽视了这些信息, 认为自己现在的系统运行正常,这将后患无穷。比如,一个最新的13行代码 的安全补丁能起到?;つ愕那度胧絃inux的作用, 如果你忽略了 这13行代码、那么补丁可能要用多于80万行的代码来补救。这是 一个典型例子,你是现在付账还是以后付,当然后付的费用更多 了。

所以,需要开发新的进程来适应开源进程的动态化开发过程, 这个进程可能会与任何公司内部开发进程相交叉。将自己的内部 软件开发进程和外部开源进程相结合是十分必要的。这种结合的 实现方式可以作为企业竞争的优势,但是必须以知识财富的形式 小心?;?。

自己构建Linux项目很少考虑这种开源开发进程的成本。 如 果没有正确的Linux/开源意识的引导, 开发进度表和产品质量都 将遭受不可知的风险或彻底的失败。这些新开发进程成本应该和前边提到的显性成本一起包括在付出之中。

综观总成本

考虑以上所有的因素,可以认为:要开发一个商业可用嵌入 式Linux发行版本, 时间上和财力上的投资是不菲的, 而通常企 业在这两项上的投入又常常是非常有限的。 为整个开发进程设计一个成本模型是很重要的,成本要包括 工具, 对小、中、大型Linux的支持维护等。即使最简单的Linux系统开发,开发成本也动辄以百万美元计。系统越高级,成本也 就越高。

摘自《嵌入式操作系统风云录》

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Linux大家可能都比较熟悉了,我们先来看一下QNX的简介。 QNX简介 关于QNX名字的由来有一则趣事:Gord...
    汽车软件后花园阅读 785评论 0 0
  • 姓名:吴兆阳 学号:14020199009 转自韦东山 嵌牛导读:对嵌入式初学者,没有足够的视野选择一个合适投入方...
    吴兆阳阅读 2,381评论 0 4
  • 我对嵌入式系统平台的定义很简单:能让电子产品的原因程序得以顺利开发的环境,主要包括; 系统软件与驱动程序 硬件平台...
    Leon_Geo阅读 646评论 0 1
  • 夜莺2517阅读 127,717评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 6,887评论 1 6