向Linux移植的方法與策略
摘要:本文概述了將設(shè)備軟件從原來的平臺(tái)上移植到Linux平臺(tái)的方法和策略。
關(guān)鍵詞:Linux;開放源代碼;移植;DSO
Linux和開放源代碼社群已成為設(shè)備軟件領(lǐng)域的熱門話題。將設(shè)備軟件從原來的平臺(tái)上移植到Linux平臺(tái),的確可以為電子產(chǎn)品制造企業(yè)帶來不少好處。但是,對(duì)于這種平臺(tái)移植過程中可能遇到的問題,如果不是預(yù)先有所認(rèn)知并妥善處理,很可能就會(huì)使這項(xiàng)工作費(fèi)力不討好,甚至面臨得不償失的后果。
要通過向Linux的移植獲得實(shí)際的回報(bào),自然就要清楚地看到這項(xiàng)工作可以得到哪些好處,同時(shí)明白自己要付出的代價(jià)。
一般說來,電子產(chǎn)品制造企業(yè)將設(shè)備軟件移植到Linux平臺(tái),主要可以獲得商業(yè)和技術(shù)兩個(gè)方面的好處,歸結(jié)起來包括:
*免權(quán)力金
*容易獲得源代碼
*可以從商業(yè)或者非商業(yè)多方面獲得軟件模塊和工具
*更容易招募開發(fā)人員
*更廣泛的溝通與協(xié)作資源
*容易為所選的處理器找到支持來源
在上述所有因素中,免權(quán)力金所帶來的吸引力最大。Linux平臺(tái)的TCO(Total Owner ship Cost,總體擁有成本)低于其他操作系統(tǒng),因而常常成為企業(yè)選擇移植到Linux平臺(tái)的決定性因素。
慎選Linux平臺(tái)
Linux操作系統(tǒng)到處都拿得到,這是選擇Linux的一大好處。但是,如果處理不好,錯(cuò)誤的選擇就可能成為一系列麻煩的開始。操作系統(tǒng)是整個(gè)應(yīng)用的平臺(tái),最重要的是可靠性。如果你選用的操作系統(tǒng)來源不可靠,就很難相信它能夠成為可靠的設(shè)備軟件平臺(tái),因而給你的總體擁有成本帶來很大的風(fēng)險(xiǎn)。在此決策過程中,最重要的一項(xiàng)決定是:選擇商業(yè)套裝Linux軟件平臺(tái)(CommercialGradeLinux),還是自行獲取源代碼并自行完成平臺(tái)和工具的集成和調(diào)試。
以Linux為平臺(tái)的設(shè)備軟件開發(fā)者首先必須明確自己所要做的事情——是要在Linux平臺(tái)上進(jìn)行產(chǎn)品開發(fā),而不是要去開發(fā)Linux操作系統(tǒng)。因此,為了降低TCP而選擇Linux平臺(tái)的決策者,一般都會(huì)選擇商用套裝的Linux軟件,而不傾向于把自己寶貴的金錢和時(shí)間浪費(fèi)在源代碼的整理和工具的集成、測(cè)試等基礎(chǔ)性的工作上。只有這樣,電子產(chǎn)品廠商才可以把更多的財(cái)務(wù)和人力資源用于開發(fā)產(chǎn)品的新功能,解決客戶關(guān)心的問題,使自己的產(chǎn)品具有更強(qiáng)的市場(chǎng)競(jìng)爭(zhēng)力。
另一個(gè)促使決策者選擇商業(yè)套裝Linux平臺(tái)的原因是產(chǎn)品上市速度。如果不選擇商用套件,就必須自行維護(hù)Linux版本,需要投入大量的資源和時(shí)間。反過來,如果選擇預(yù)先組合并且經(jīng)過驗(yàn)證的商用Linux套件,就能夠加快產(chǎn)品的上市速度。一般說來,商用套裝Linux平臺(tái)的提供商都會(huì)提供相應(yīng)的技術(shù)支持和顧問咨詢,這就更加有助于縮短電子產(chǎn)品廠商所面臨的技術(shù)差距。相對(duì)于從開放源代碼社群獲得技術(shù)支持,商用套裝Linux提供商的支持更有保障,更有助于縮短產(chǎn)品上市時(shí)間,同時(shí)提升客戶滿意度。
此外,商用套裝軟件提供商都已經(jīng)形成了一定的合作伙伴體系。尤其是當(dāng)電子產(chǎn)品制造企業(yè)所選擇的硬件平臺(tái)缺乏開放源代碼社群支持的時(shí)候,商用套裝軟件提供商及其合作伙伴體系的支持能力就更顯示出特有的優(yōu)勢(shì),而且成為決定產(chǎn)品開發(fā)項(xiàng)目成敗的關(guān)鍵因素。
如果不選擇商用套裝Linux平臺(tái),而是選擇開放源碼社群,這就意味著你的開發(fā)工具都要來自開放源碼社群。相對(duì)而言,你就可以對(duì)這些軟件工具掌握較高的控制權(quán),也可以任意選擇其他相容的開發(fā)工具,用來為你的產(chǎn)品設(shè)計(jì)增加所需的功能。開放源碼意味著不需要與別的公司簽署任何軟件購(gòu)買或技術(shù)支持合約。對(duì)于某些電子產(chǎn)品企業(yè)來說,不需要與另外的廠商簽署復(fù)雜的軟件購(gòu)買與支持合約,就可以免除一些繁瑣的行政工作。
開放源代碼工具的經(jīng)常成本(NormalCost)通常比較低,這是因?yàn)槿〉眠@些工具不需要直接的金錢成本。由于可以免費(fèi)獲得開發(fā)工具,而且這些開發(fā)工具流通比較廣泛,因此可以較快地投入產(chǎn)品設(shè)計(jì)工程項(xiàng)目。不過,必須注意的是,如果選擇自行取得操作系統(tǒng),就應(yīng)當(dāng)在做出決定之前充分考慮到將會(huì)付出的機(jī)會(huì)成本。
雖然大多數(shù)開放源代碼使用者都對(duì)單獨(dú)的開發(fā)工具的品質(zhì)給以肯定,但這些工具如何集成起來、融為一體,選擇開放源代碼平臺(tái)的產(chǎn)品制造商就只好自行解決和確認(rèn)。事實(shí)上,各個(gè)開發(fā)工具之間能否相互配合比單個(gè)開發(fā)工具的品質(zhì)更為重要。如果選擇了商用套裝Linux平臺(tái),有些供應(yīng)商就可以提供整合式的開發(fā)套件,在出貨前都已經(jīng)進(jìn)行了商用級(jí)的品質(zhì)確認(rèn)。
值得注意的,并非每個(gè)宣稱提供Linux操作系統(tǒng)和開發(fā)工具的廠商都提供商業(yè)級(jí)(Commercial Grade)Linux的套裝軟件和相應(yīng)的全球化支持與服務(wù)。例如,有的嵌入式Linux軟件提供商自行為L(zhǎng)inux增加了許多內(nèi)容,并且采用了非標(biāo)準(zhǔn)的代碼,形成了所謂的“專有版Linux”,往往與原來的Linux社群反而沒有多少聯(lián)系了,這與采用Linux的目標(biāo)是相背離的。
反過來,像WindRiver這樣的商用套件開發(fā)工具提供商的產(chǎn)品不僅提供最原始、純正的Linux內(nèi)核代碼,而且預(yù)先整合了各種開發(fā)工具和符合特定行業(yè)需求的工具和參考設(shè)計(jì),這就使得電子產(chǎn)品制造商不僅可以基于一個(gè)標(biāo)準(zhǔn)、純正、開放的Linux開放源碼平臺(tái),而且免除了工具整合的工作,從而可以專注于應(yīng)用軟件功能特性的開發(fā)。如果產(chǎn)品制造商有額外需求,例如增加第三方的Plug-in,這都會(huì)增加整合的工作量,而商用套裝Linux平臺(tái)提供商就可以提供額外的功能與支持,這些都無法從免費(fèi)的開放源代碼社群獲得。此外,商用套裝Linux平臺(tái)提供商還可以提供更完善的技術(shù)支持和專業(yè)服務(wù),幫助產(chǎn)品制造商克服開發(fā)過程中遇到的困難。
移植方法與過程
當(dāng)選定了操作系統(tǒng)及其來源和開發(fā)工具套件之后,在開始產(chǎn)品開發(fā)之前,還必須進(jìn)行一些準(zhǔn)備工作,以便產(chǎn)品開發(fā)項(xiàng)目執(zhí)行得更為成功,并且確保今后的工作能夠得心應(yīng)手。
第一步是建立評(píng)估體系,作為日后衡量向Linux的移植是否成功的依據(jù)。在這個(gè)評(píng)估體系中,必須考慮到以下幾個(gè)因素:第一,為何要從原來的平臺(tái)移植到Linux;第二,是否有明確的目標(biāo)來定義向Linux平臺(tái)移植的成功;第三,是否建立了衡量工作效率的方法;第四,如果進(jìn)行這種移植的目的是降低TCO,那么這個(gè)目標(biāo)是否真正達(dá)到了;第五,有哪些指標(biāo)必須進(jìn)行評(píng)估,而哪些指標(biāo)則不一定要考慮。
這種評(píng)估應(yīng)該盡量采用量化的方法。例如,必須設(shè)定明確的ROI(投資報(bào)酬率)、TCO以及其他指標(biāo),以此來評(píng)估企業(yè)向Linux的移植是否獲得成功。不同的評(píng)估方法可能對(duì)移植的成敗與效果得出不同的結(jié)論。例如,降低TCO的指標(biāo)還可以細(xì)分為免付權(quán)力金、相對(duì)便宜的程序代碼維護(hù)以及人力資源成本的節(jié)省等。另外有些方面則可以從策略的角度來進(jìn)行概念性的評(píng)估,包括由于選用了Linux和商用套件而獲得了競(jìng)爭(zhēng)差異性的機(jī)會(huì),或者為企業(yè)開辟了新的收入來源。總之,如果沒有清晰的評(píng)估體系,你永遠(yuǎn)都不會(huì)知道自己所做的事情是否成功,是否獲得了實(shí)際的效益。
另外,風(fēng)險(xiǎn)因素也不可忽視。例如,如果向Linux平臺(tái)的移植不成功,將會(huì)對(duì)TCO造成多大程度的影響。如果忽視了風(fēng)險(xiǎn)的存在,其后果常常更加難以收拾。
第二步是確定企業(yè)自身需要哪些外部支持。電子產(chǎn)品制造企業(yè)可能需要一些特定行業(yè)領(lǐng)域的支持,例如測(cè)試與驗(yàn)證、技術(shù)培訓(xùn)或者項(xiàng)目管理等。因此,企業(yè)可以考慮將部分工作委托給有技術(shù)實(shí)力和經(jīng)驗(yàn)的外部服務(wù)提供商,幫助自己解決一些基礎(chǔ)性的問題,從而使自己的精力集中在應(yīng)用軟件的開發(fā)方面。
最后,電子產(chǎn)品制造商還必須仔細(xì)審視其向Linux平臺(tái)移植的進(jìn)度計(jì)劃。這個(gè)問題常常被忽視。VDC調(diào)查資料顯示:超過40%的設(shè)備軟件受訪企業(yè)都認(rèn)為,造成項(xiàng)目進(jìn)度延誤的主要因素就是他們自己制定了不切實(shí)際的進(jìn)度計(jì)劃。如果去實(shí)際檢驗(yàn)一下項(xiàng)目的進(jìn)度,就會(huì)發(fā)現(xiàn)事情比想象的嚴(yán)重。VDC報(bào)告還指出,超過三分之一的設(shè)備軟件項(xiàng)目的進(jìn)度都落后于計(jì)劃,甚至有10%的項(xiàng)目最終干脆放棄了。雖然導(dǎo)致進(jìn)度延誤的原因各不相同,但是在制定計(jì)劃的時(shí)候就充分考慮到各種可能的問題并做好預(yù)防措施,顯然有助于避免許多問題的發(fā)生。
向Linux平臺(tái)移植的確是一項(xiàng)不容易的工作,這個(gè)操作系統(tǒng)原本是為了企業(yè)系統(tǒng)而設(shè)計(jì)的,如果沒有針對(duì)設(shè)備軟件應(yīng)用做出適當(dāng)?shù)恼{(diào)整,其中就會(huì)隱藏著許多風(fēng)險(xiǎn),這也是許多電子設(shè)備廠商傾向于選擇經(jīng)過專業(yè)設(shè)備軟件提供商集成與驗(yàn)證的商業(yè)套裝Linux的主要原因。
需要逾越的難題
設(shè)備軟件的運(yùn)行架構(gòu)與原本Linux所針對(duì)的企業(yè)運(yùn)行環(huán)境有很大的不同。設(shè)備軟件開發(fā)者可以選擇最接近設(shè)備軟件環(huán)境的Linux軟件架構(gòu),以便簡(jiǎn)化移植的過程。但是,從以下幾個(gè)問題可以看出,其中的障礙還是不小的:
第一,Linux的系統(tǒng)調(diào)用(SystemCall)與設(shè)備軟件平臺(tái)所使用的應(yīng)用程序代碼和中間件不同,因此設(shè)備軟件開發(fā)可能與Linux軟件開發(fā)存在一些概念上的差異;
第二,現(xiàn)有的設(shè)備軟件操作系統(tǒng)和Linux之間的I/O架構(gòu)也存在差異;
第三,內(nèi)部程序或者內(nèi)部處理器之間的通信存在的差異可能更大。Linux內(nèi)核程序和線程(Thread)很可能和設(shè)備軟件開發(fā)者現(xiàn)有的應(yīng)用程序開發(fā)經(jīng)驗(yàn)截然不同。
所以,當(dāng)你向Linux移植的過程開始之后,必須隨時(shí)掌握列入評(píng)估體系的關(guān)鍵指標(biāo),并且要保證其詳細(xì)程度深入到軟件架構(gòu)的層次。發(fā)現(xiàn)問題所在,以及發(fā)現(xiàn)問題的時(shí)機(jī)都是非常重要的。性能調(diào)試的指標(biāo)或者問題本應(yīng)在需求分析階段就得到解決,如果這些問題被延誤到系統(tǒng)集成測(cè)試和優(yōu)化階段,就會(huì)給問題的判定帶來極大的麻煩與困難。
引入DSO的好時(shí)機(jī)
向Linux移植的另一個(gè)重要影響是它對(duì)軟件開發(fā)環(huán)境所帶來的沖擊。這可能意味著企業(yè)組織架構(gòu)的重大變化,因此必須確保有效的管理、組織和溝通。不過,Linux同時(shí)也很可能給軟件人員帶來一個(gè)很好的改善機(jī)會(huì)。
為了讓企業(yè)向Linux轉(zhuǎn)移的過程達(dá)到最簡(jiǎn)化和正面的效應(yīng),必須建立科學(xué)的評(píng)估體系以便衡量移植所帶來的成效,并從項(xiàng)目一開始就在這個(gè)評(píng)估體系中對(duì)確定的指標(biāo)進(jìn)行追蹤衡量。除了嚴(yán)謹(jǐn)?shù)囊?guī)則以外,還必須為整個(gè)過程建立完善的文檔,并且與整個(gè)團(tuán)隊(duì)就工作進(jìn)程展開充分的溝通。事實(shí)上,這也是任何軟件項(xiàng)目都必須遵循的原則和流程。附圖給出了一個(gè)已經(jīng)在一些移植項(xiàng)目中經(jīng)過實(shí)踐的方法,顯示了一個(gè)軟件項(xiàng)目必須遵循的步驟,稱之為DSO方法學(xué)(Device Software Optimization Methdology)。
企業(yè)向Linux移植為什么有可能成為全面提升其軟件開放能力的重要機(jī)會(huì)呢?因?yàn)榕c傳統(tǒng)的嵌入式軟件開發(fā)工具不同,DSO提供了更加完整的解決方案。傳統(tǒng)的嵌入式軟件開發(fā)環(huán)境,一般都是針對(duì)某個(gè)產(chǎn)品的開發(fā),選擇一個(gè)RTOS(嵌入式實(shí)時(shí)操作系統(tǒng)),再加上一些開發(fā)、調(diào)試工具。DSO方法則完全不同,它是在整個(gè)電子制造企業(yè)和產(chǎn)品生命周期這兩個(gè)更大的范疇內(nèi)對(duì)設(shè)備軟件的開發(fā)、部署和維護(hù)進(jìn)行規(guī)劃,充分考慮到產(chǎn)品生命周期各個(gè)階段的需求,實(shí)現(xiàn)了更大跨度的最優(yōu)化。有了DSO,甚至可以在設(shè)備中實(shí)現(xiàn)遠(yuǎn)程管理和維護(hù)功能,讓電子產(chǎn)品制造商在自己的辦公室即可對(duì)遠(yuǎn)方的設(shè)備提供現(xiàn)場(chǎng)維護(hù)和支持,從而以更低的成本使設(shè)備的使用率和性能保持最佳狀態(tài)。
WindRiver是幫助企業(yè)實(shí)施DSO方法學(xué)的開拓者和領(lǐng)先者,并且正在致力于把自己20多年的設(shè)備軟件經(jīng)驗(yàn)融入到Linux平臺(tái)之中。在DSO方法學(xué)指導(dǎo)下實(shí)施向Linux的移植,讓設(shè)備軟件開發(fā)者集中精力從事應(yīng)用開發(fā)層面的創(chuàng)新,而不需要在操作系統(tǒng)和工具集成方面消耗過多的資源,從而為設(shè)備軟件的性能、成本和可靠性注入新的活力,在根本上增強(qiáng)其產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力。