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