Linux Kernel驅逐Android:到底發生了什么?
前日Linux Kernel維護者Greg Kroah-Hartman把Android代碼從Linux Kernel代碼庫中刪除的消息引來了廣泛關注,開發界已有很多評論對此事進行討論。ifanr今日提供了當天Greg聲明的全譯文,下面就讓我們來看看。
2.6.33 版內核移除了Android的代碼。很多人不斷地問我發生了什么,對于Android下一步要怎么辦。這里是我對整件事情的澄清:
首先,我很喜歡Android平臺。直到上周,我還每天使用我的開發手機G1。它工作良好,作為用戶我很滿意。另外,從技術角度我也很喜歡他。令人驚奇的是,Google僅僅使用Linux內核構建了一個可移植的和健壯的手機平臺,而并沒有使用”傳統”Linux的任何其他東西。更加難能可貴的是,你可以 在Android系統之上安裝一個”真正”的Linux鏡像,兩者都能正常工作而無需任何修改。
Android 也解決了手機制造商多年來遇到的問題:它創造了一個免費的Java虛擬機和統一的應用軟件層,使程序可以在所有集成它的手機平臺上運行。因為他它的出現, 所有現存的”Linux手機協會”(”Linux Phone Consortium” )組織都宣告終結,或者即將關閉。
出了什么問題?
發生了什么致使Android內核代碼被刪除? 簡單的說,沒有人關心代碼,所以他被刪除了。正如我之前的聲明,開發分支的代碼需要繼續修改才能合并進內核主線內核樹,否則將被刪除。但是,這兒還有更嚴重的問題。Android代碼不僅僅是drivers/staging/android目錄下的一些驅動程序。 Android系統的正常運行,需要Google創建的一種新的內核鎖和其安全模型鎖依賴的核心系統中的鉤子(hooks)。要寫出能夠在Android上執行的驅動程序,你需要恰當的使用新的內核鎖,有時候還需要使用怪異的安全模型。
這意味著所有為Android硬件平臺編寫的驅動都不能融合進主線內核樹,它們在主線內核中會編譯失敗。因為它們依賴的代碼只存在于Google的內核分支中。因為上面這些,Google阻礙了大量硬件驅動、平臺代碼和主線內核樹的整合。并創建了一個很多制造商現在依賴的內核分支。(譯者評論:邪惡的做法,利用開源的成果謀利,而并沒有回饋開源社區)
創造內核源代碼分支并沒有問題,幾乎每一個發行版都有自己的分支。但是更糟的是,Google不把他們的代碼整合進主線內核樹,使編寫驅動和平臺代碼的公司無法回饋開源社區。內核開發社區早在幾年前就告訴這些公司使他們的代碼合并進主線內核,以得到自動的安全修復和自動處理API變動,很多公司聽從建議,內核的每次發布都包含大量這些公司貢獻的代碼。
但是現在他們被卡主了,Android相關平臺代碼和驅動不能被整合進上游系統,這迫使這些公司維護和開發周期的大幅延長。
具體要怎么做?
我真的不知道。Google沒有表現出要使他們的代碼向上游整合的任何跡象。一些公司想要修改Android相關接口使其向上游整合,但是這需要大得多的努力,這并不是必須的。
希望
#t#我還抱有希望,希望Google能花時間修改他們的代碼庫,使其融合進上游代碼,停止他們對大量嵌入式Linux硬件公司造成的巨大阻礙。
過去,我私下里提議幫助完成這個工作,現在我再次公開表態,但是我需要Google開發人員的幫助。沒有他們,什么都改變不了。好消息是所有對內核/用戶空 間API的修改對于Android堆棧上層所有的代碼(例如應用程序)都沒有任何影響,所以這些工作可以在不對全局造成影響的情況下完成。
我會在”2010Linux消費電子論壇”(CE Linux Forum 2010 conference.)上再次討論這個問題。希望他們在會議之前改進這個問題,否則論壇將遵循長久以來的傳統,由演講者對與會者們大聲控訴他們正在做的壞事。