知識社群Login
譯:Android 被 Linux kernel 社群開除
by 艾鍗學院, 2012-07-10 08:52, Views(1717)

原文:http://www.kroah.com/log/linux/android-kernel-problems.html
在 Linux kernel 2.6.33 版本,Android 程式碼,已經被移除。很多人開始詢問我到底發生了什麼事?Android 下一步又該怎麼辦?所以,以下就是我對這整件事情的意見……

首先,我要說,我是很喜歡 Android 手機平台。直到上週,我還是每天,使用我買的 developer G1,它完美的運作,讓用戶我非常高興。

從技術的角度,我也對 Android 感到高興。讓人驚奇,Google 運用 Linux 內核,純粹就用傳統的 Linux 系統,創造出一個具移植性,而且可靠的手機平台。這個平台是這麼特別,你甚至可以在手機上,換上一個 Linux 作業系統的 image 檔,兩種版本都可運作正常,完全不需任何修改。

Android 同時也解決了收機製造商,多年以來的一些問題:一個免費版本的 Java,及一個統一的應用程式中介層,讓程式人員針對它開發出軟體,可以運行在所有 Android 的手機上。因為這樣,所有現有的「Linux 手機聯盟」,不是已經群體滅亡,倖存的應該也會很快就默默的消失。

這有哪裡不對?

發生什麼事,讓 Android 程式碼,被從 Linux 核心刪除?簡單說,沒有人關心 Android 程式碼了,所以就刪了吧。就像我以前所聲明的,核心程式碼,分支版本,必須努力整併進主要版本,不然就會被刪除。

但是關於這點,有更大的問題存在。

Android 內核,並非只是在 drivers/staging/android 子目錄,的幾個怪異驅動程式而已。為了能讓 Android 運作,你需要用他們所新增的 lock type,並且用他們的安全模式,才能跟 Linux 內核掛勾上。

為了要寫 Android 上使用的 驅動程式,你需要正確的整合新的 lock,有時還要跟怪異的安全模式打交道。對了,還有一個完全不同的顯示硬體 frame buffer 架構。 

這意謂任何為 Android 平台寫的驅動程式,因為跟 Google 內核分支有相依性,所以就不能整併進主要內核分支,最終也不能進 kernel.org 內核分支。

就因為這樣,Google 已經造成很多的驅動程式,很多與平台相關的程式碼,不能整進主要內核分支。實質上,這已經變成了幾個特定製造商,所倚賴的內核分支。

現在 Linux 內核的的幾個分支版本,是依照幾個主要的發行版本,所制定的,目前相安無事。但是因為 Google 不想讓他們的程式碼,整併入主流的分支。Google 所寫出的驅動程式及平台相關的程式,被鎖住無法回饋給內核社群。而內核社群,已經花很多年,告訴這些 Linux 發行版本的公司,把他們的內核整併進來。然後這些發行商,他們就可以,套用新的安全性修正,套用大量且快速異動的程式碼。這些公司有聽到呼籲,你可以看到他們持續在他們所發行的版本,更新他們的內核。

但是現在他們被卡住了,那些使用 Android 相關平台或是驅動的公司,不能回饋給他們的上游。造成這些發行商,在回護及開發內核上,要花更大的功夫。

想要把 Android 內核碼整併進主分支,要如何做呢?

當 Android 的程式碼,整進一的臨時的分支,幾位核心程式的開發人員,會審核程式碼,然後指出該清理、該改變的地方,這樣程式碼才能夠被接受。有一些改變,會影響到內核跟使用者空間的界限,所以有些 Android 上的用戶空間的邏輯,也會因為內核的改變,而需跟著改變。但這可以免除了 Google 以外的員工,因為引進 Android 引起的不必要修改。

那,下一步呢?

我真的不知道。Google 似乎不再願意整併程式碼到上游。有些公司嘗試拿掉 Android 規格的介面,然後將程式碼上游。但這是需要很大的力氣,又顯得沒有必要。

衷心希望

我希望 Google 能回來,修正他們的程式,整併進主分支,然後回饋給上游。並停止他們對許多 Linux 鑲入式系統公司,所造成的障礙。

我以前曾經私底下幫忙解決這些問題,現在及以後將公開支持並幫忙解決這些問題,但我需要 Google 開發人員的幫忙,沒有他們,什麼都改不了。

好消息是,內核及使用者空間程式介面的改變,將不會影響任何 Android 應用程式的程式碼。所有這些改變,可以適用在整個系統,完全沒有問題。

我將在 CE Linux 論壇 2010 的演講上,談論 Android 的這一團亂。希望在這之前,情況會有所改善。不然 CELF 將秉持長久以來的慣例,在會議上發演講稿,大聲斥責他們已經幹出來的壞事情。