Google試圖將Android設備內核統一至Linux內核主線
Android是基於Linux內核的操作系統,但是,運行在Android設備上的內核其實與Google選擇的LTS版本Linux內核有很大不同。在到達每一台Android設備前,內核會經曆三個階段的fork:Google會先選擇某個LTS(長期支持)版本的Linux內核,打上Android操作系統的特定補丁,使其成為Android通用內核;緊接著,通用內核被交付給高通等SoC供應商,打上硬件補丁;最後,SoC內核再被移交至設備製造商,打上設備特定的各類元件補丁,這也就構成到每台設備中的設備內核。
這是一個及其漫長的過程,執行多重fork 並處理數百萬行代碼大大減慢了整個開發速度。因此,Android 設備使用的內核相較於Linux 內核主線要滯後兩到三年的時間。Google 於10 月份最新發布了Pixel 4,其Linux 內核則是2017 年11 月發布的4.14 LTS 版本。並且由於過大的工作量,Android 設備通常不獲取內核更新,它將永遠停留在4.14 版本上。
再者,各種設備的內核都不盡相同,一台設備的特定內核無法在其他設備上工作。於是,Google 正試圖縮小各Android 設備內核與主線Linux 內核間的差距,讓設備內核更接近上游內核主線。
在今年的Linux Plumbers Conference 上,Android 內核團隊負責人Sandeep Patil 表示,他們的目標是從根本上找到Android 運行所需要的、但不必在給定的硬件上運行的東西,然後將其引入上游並儘可能接近主線。
Google 的打算是複制其早期工作Project Treble 以模塊化Android。Project Treble 用於在Android 和HAL(硬件抽象層)之間創建穩定的接口。與此類似,Google 計劃穩定Linux 的內核 ABI,從而提供一個穩定的寫入接口,使硬件供應商可以輕鬆地插入代碼,最終消除特定的設備內核。
Google 的高級軟件工程師MatthiasMännich 展示了一幅預想中的內核體系結構圖。”下一代Android 設備“內核將由通用內核鏡像(Generic Kernel Image,GKI)和多個 GKI 模塊構成,特定硬件的驅動程序(可能是閉源驅動)將作為內核模塊加載。總之在該設想中,所有東西都被模塊化了。
考慮到Android生態系統的技術壁壘和多樣性,這應該不是一件容易的事情。無論如何,將Android設備內核引入主線Linux內核肯定會使包括Android用戶、手機製造商和Linux社區等在內的不少人受益。不過Google的計劃剛剛開始,後續還有更多的工作要完成。