構(gòu)建你自己的Linux

今天Linux越來越成熟粘茄, 應(yīng)用越來越多先朦, 但是自己構(gòu)造次洼, 是購買商業(yè)版本依然困擾開發(fā)者似炎,這篇寫在2007年的文章很好地 回答了產(chǎn)業(yè)界長期的困惑一開源軟件為何要付費辛萍,商業(yè)的嵌入式Linux的價值何在悯姊。

?20世紀80年代初, 商用實時操作系統(tǒng)(RTOS)提供商的出 現(xiàn)贩毕,讓人們開始了一場曠日持久的爭論悯许。爭論的焦點是:到底應(yīng) 該購買商業(yè)的實時操作系統(tǒng)還是自己構(gòu)建實時操作系統(tǒng)呢?經(jīng)常 為嵌入式設(shè)備開發(fā)軟件的工程師們也卷入了這樣的爭論之中。如 今辉阶, 對于很多嵌入式設(shè)備來講先壕,Linux已經(jīng)成為了更受歡迎的操 作系統(tǒng)。但在這個嶄新的Linux世界谆甜, 有關(guān)購買還是自建的爭論 是不是依然存在呢?

要回答這個問題垃僚,必須理解以下兩點:

1)讓開發(fā)者選擇Linux作為嵌入式操作系統(tǒng), 而不是其他實時操傳統(tǒng)作系統(tǒng)的壓力规辱。

2) Linux與其他RTOS的一些細微差別谆棺, 其開源和軟件開發(fā) 過程、深遠地影響了實時操作系統(tǒng)開發(fā)和購買之間的平衡罕袋。

設(shè)備中的軟件內(nèi)容爆炸

在嵌入式系統(tǒng)世界中改淑,以下兩個方面的快速擴張是讓開發(fā)者 轉(zhuǎn)向Linux的基礎(chǔ):

1)新的復(fù)雜的產(chǎn)品種類增多。

2)嵌入式設(shè)備本身系統(tǒng)軟件需求的增加浴讯。

請試想一下朵夏,一個曾經(jīng)只需要微控制器和小型控制程序(固 件)的玩具制造廠,需要開發(fā)系列新產(chǎn)品兰珍、這些產(chǎn)品要基于完全 開源環(huán)境侍郭, 而且是多線程程序, 有TCP/IP連接掠河、藍牙無線通信 等亮元。結(jié)果、這家跨國消費電子公司突然發(fā)現(xiàn)將不得不為自己的產(chǎn) 品開發(fā)決定采用有上百萬行的操作系統(tǒng)軟件唠摹,因為現(xiàn)在每個產(chǎn)品 都要求有多線程程序以及網(wǎng)絡(luò)連接爆捞。內(nèi)部成本的增加以及產(chǎn)品設(shè)計開發(fā)復(fù)雜度的提高、都使得貫穿整個產(chǎn)品的軟件產(chǎn)生了風險勾拉。

可以這樣概括現(xiàn)在的系統(tǒng)軟件市場情形:

1)產(chǎn)品對復(fù)雜系統(tǒng)軟件的需求日益增加煮甥,包括網(wǎng)絡(luò)連接、 使用最具競爭力的高端微處理器技術(shù)藕赞,支持快速擴展和極度復(fù)雜 的I/O技術(shù)成肘。

2)很多不同的產(chǎn)品小組和團隊都對這類系統(tǒng)軟件有旺盛的 需求,連以前根本沒有任何計算內(nèi)容的產(chǎn)品也不例外斧蜕。外圍激烈 的競爭形勢根本不能忍受高成本的系統(tǒng)軟件双霍;現(xiàn)金預(yù)算約束也不 支持以前維持的內(nèi)部開發(fā)團隊; 一個公司的工程資源必須集中在 能增值的技術(shù)上才能保持自己的競爭力。

?3)現(xiàn)在的商業(yè)軟件的版稅部分成本是巨大的洒闸,嚴重地影響 了公司的利潤染坯。

4)選擇一個公共的策略性系統(tǒng)軟件平臺將使公司避免陷入 多種解決方案中而難以決策的窘境,而且這些解決方案都是高成 本架構(gòu)的丘逸、沒有一個方案具有完全的杠桿平衡力量单鹿,以往的工程經(jīng)驗顯示,統(tǒng)一的平臺可以降低成本并且加快產(chǎn)品開發(fā)周期深纲。

這些因素結(jié)合起來就使得基于Linux的操作系統(tǒng)成為一個卓 越的解決方案仲锄、以此來解決設(shè)備制造者面臨的越來越多的軟件內(nèi) 容危機。這一點有數(shù)以千萬計的電子設(shè)備(如移動電話囤萤、機頂盒昼窗、 高清晰電視等)采用了Linux為操作系統(tǒng)的實例為證。

具有諷刺意味的是涛舍,今天雖然很多公司依然要面對制造多功 能高質(zhì)量軟件集成產(chǎn)品和強大的時間表壓力澄惊,自己開發(fā)產(chǎn)品系統(tǒng) 軟件的誘惑依然存在。時至今日富雅,30多年前在RTOS領(lǐng)域里掸驱, 我 們聽到的爭論依然存在, 只不過没佑, 現(xiàn)在爭論的焦點變成了Linux毕贼。

顯性成本

在嵌入式Linux和Linux發(fā)行版中有很多過程和成本的支出, 從下邊7個方面的敘述中可見一斑:

?1)嵌入式Linux或Linux發(fā)行版由超出3000萬行源代碼構(gòu)成蛤奢。

?2)源代碼一般包含19種或者更多的鬼癣、不同步更新的、沒有集成到上代碼庫川面的軟件代碼

?3)源代碼常常每人改變啤贩。

?4)很多大公司使用廣泛的嵌入式處理架構(gòu)待秃,需要24個微處 理器架構(gòu)、并且其變量還有多于100個硬件平臺的支持痹屹。

?5)必須支持多種主計算環(huán)境(如Windows章郁、Linux、Solaris志衍, 以及這些計算環(huán)境的各種版本等)暖庄。

?6)構(gòu)建、測試楼肪、發(fā)布一個最初發(fā)行版最起碼需要30個開發(fā) 人員(還不包括需要進行的維護培廓、微小的改進或支持上的人力和 時間成本),整個成本加起來很容易達到數(shù)百萬美元春叫。

?7)正在進行的維護医舆、增加的微小改進俘侠、支持,構(gòu)造一個開 發(fā)的環(huán)境同樣是筆不小的開支蔬将。

隱性成本

對于一個成功軟件開發(fā)的過程來說,很多工作是隱性的或經(jīng)常被忽略的央星,包括以下幾項:

1)開發(fā)一個可以全面測試和質(zhì)量保證(QA)能力系統(tǒng):測 試套件是為操作系統(tǒng)本身開發(fā)的霞怀,支持大量的I/O設(shè)備,特別是 為SoC設(shè)備定制的莉给。一個典型的移動設(shè)備SoC內(nèi)部有20~30個復(fù)雜 的I/O設(shè)備毙石,它們都需要測試。支持每一個架構(gòu)參考板的物理底 層颓遏、同樣需要開發(fā)和布置徐矩。

2)創(chuàng)建一個有效構(gòu)建計算環(huán)境,以便盡可能快地更改構(gòu)建(以小時計叁幢,而不是天)滤灯,否則構(gòu)建過程本身在整個項目開發(fā)流 中會成為一個瓶頸。

3)開發(fā)工具:交叉調(diào)試曼玩、內(nèi)存泄漏檢測工具鳞骤、性能調(diào)整工 具、內(nèi)核識別的調(diào)試等黍判。一般情況下豫尽,項目資金很少分配到工具 的開發(fā)上,因為大部分錢必須投在內(nèi)核本身的開發(fā)上顷帖。

4)發(fā)布培訓課程和課程材料:Linux系統(tǒng)極其龐大而且功能 繁多美旧,開發(fā)人員需要在其編程模板、設(shè)備驅(qū)動架構(gòu)和開發(fā)工具上 訓練贬墩,以便快速出成果榴嗅。

這些隱性努力的成本加上前邊討論過的顯性開發(fā)成本,對于 正確構(gòu)建和支持一個嵌入式Linux系統(tǒng)都是必需的震糖。

開發(fā)過程录肯、新的復(fù)雜度和成本

傳統(tǒng)的內(nèi)部開發(fā)過程,整個軟件開發(fā)要很嚴格地遵守從頭到 尾的開發(fā)步驟吊说。與此不同论咏,Linux開發(fā)過程始于大量沒有定制的 過程、這就是開源開發(fā)進程颁井。一個公司可能對一項特別的開源項 目有重大貢獻厅贪,但絕不可能控制整個進程;公司能做的僅僅是影 響和參與雅宾。比如养涮,Linux更新版本的速度可以不同。從微小bug的 解決、適度新特性改進贯吓,到整個底層系統(tǒng)的改變懈凹,引進新功能、 不穩(wěn)定以及新的bug都可以影響Linux版本改變的頻率悄谐。

為這些改變所做的整個支出大到讓人沮喪的介评。讓我們跟蹤一 個獨立LinuxCPU架構(gòu)活動, 以MIPS為例來說明這種情況:為保 證跟蹤每天發(fā)生的改變爬舰,開發(fā)人員需要監(jiān)視11種不同的異步開源 項目的Email通信们陆, 包括:kernel.org-Linux內(nèi)核的核心、gcc以及glibcprojects(核心的工具鏈和庫)情屹, 還有至少9種其他的能組成可用Linux開發(fā)環(huán)境的因素坪仇,kerneL org本身每無可能有近 5000條信息,其中1000多條需要反復(fù)評估垃你,因為它們可能會應(yīng)用 到你們Linux的源代碼部分椅文。如果忽視了這些信息, 認為自己現(xiàn)在的系統(tǒng)運行正常蜡镶,這將后患無窮雾袱。比如,一個最新的13行代碼 的安全補丁能起到保護你的嵌入式Linux的作用官还, 如果你忽略了 這13行代碼芹橡、那么補丁可能要用多于80萬行的代碼來補救。這是 一個典型例子望伦,你是現(xiàn)在付賬還是以后付林说,當然后付的費用更多 了。

所以屯伞,需要開發(fā)新的進程來適應(yīng)開源進程的動態(tài)化開發(fā)過程腿箩, 這個進程可能會與任何公司內(nèi)部開發(fā)進程相交叉。將自己的內(nèi)部 軟件開發(fā)進程和外部開源進程相結(jié)合是十分必要的劣摇。這種結(jié)合的 實現(xiàn)方式可以作為企業(yè)競爭的優(yōu)勢珠移,但是必須以知識財富的形式 小心保護。

自己構(gòu)建Linux項目很少考慮這種開源開發(fā)進程的成本末融。 如 果沒有正確的Linux/開源意識的引導(dǎo)钧惧, 開發(fā)進度表和產(chǎn)品質(zhì)量都 將遭受不可知的風險或徹底的失敗。這些新開發(fā)進程成本應(yīng)該和前邊提到的顯性成本一起包括在付出之中勾习。

綜觀總成本

考慮以上所有的因素浓瞪,可以認為:要開發(fā)一個商業(yè)可用嵌入 式Linux發(fā)行版本, 時間上和財力上的投資是不菲的巧婶, 而通常企 業(yè)在這兩項上的投入又常常是非常有限的乾颁。 為整個開發(fā)進程設(shè)計一個成本模型是很重要的涂乌,成本要包括 工具, 對小英岭、中湾盒、大型Linux的支持維護等。即使最簡單的Linux系統(tǒng)開發(fā)诅妹,開發(fā)成本也動輒以百萬美元計历涝。系統(tǒng)越高級,成本也 就越高漾唉。

摘自《嵌入式操作系統(tǒng)風云錄》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堰塌,隨后出現(xiàn)的幾起案子赵刑,更是在濱河造成了極大的恐慌,老刑警劉巖场刑,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件般此,死亡現(xiàn)場離奇詭異,居然都是意外死亡牵现,警方通過查閱死者的電腦和手機铐懊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞎疼,“玉大人科乎,你說我怎么就攤上這事≡艏保” “怎么了茅茂?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長太抓。 經(jīng)常有香客問我多搀,道長耍属,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮懊蒸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楷兽。我一直安慰自己凳怨,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布机打。 她就那樣靜靜地躺著矫户,像睡著了一般。 火紅的嫁衣襯著肌膚如雪残邀。 梳的紋絲不亂的頭發(fā)上皆辽,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天柑蛇,我揣著相機與錄音,去河邊找鬼驱闷。 笑死耻台,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的空另。 我是一名探鬼主播盆耽,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扼菠!你這毒婦竟也來了摄杂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤循榆,失蹤者是張志新(化名)和其女友劉穎析恢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秧饮,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡映挂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盗尸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柑船。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泼各,靈堂內(nèi)的尸體忽然破棺而出鞍时,到底是詐尸還是另有隱情,我是刑警寧澤历恐,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布寸癌,位于F島的核電站,受9級特大地震影響弱贼,放射性物質(zhì)發(fā)生泄漏蒸苇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一吮旅、第九天 我趴在偏房一處隱蔽的房頂上張望溪烤。 院中可真熱鬧,春花似錦庇勃、人聲如沸檬嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸳兽。三九已至,卻和暖如春罕拂,著一層夾襖步出監(jiān)牢的瞬間揍异,已是汗流浹背全陨。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衷掷,地道東北人辱姨。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像戚嗅,于是被迫代替她去往敵國和親雨涛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容