谷歌試圖將Android設備內(nèi)核統(tǒng)一至Linux內(nèi)核主線
本文來自OSCHINA社區(qū)
Android 是基于 Linux 內(nèi)核的操作系統(tǒng),舒筋壯骨易經(jīng)丹但是,運行在 Android 設備上的內(nèi)核其實與 Google 選擇的 LTS 版本 Linux 內(nèi)核有很大不同。
在到達每一臺 Android 設備前,內(nèi)核會經(jīng)歷三個階段的 fork:Google 會先選擇某個 LTS(長期支持)版本的 Linux 內(nèi)核,沉默之克雷婭在哪里打上 Android 操作系統(tǒng)的特定補丁,使其成為 Android 通用內(nèi)核,緊接著,通用內(nèi)核被交付給高通等 SoC 供應商,沉默之克雷婭在哪里打上硬件補丁,最后,SoC 內(nèi)核再被移交至設備制造商,打上設備特定的各類元件補丁,這也就構成到每臺設備中的設備內(nèi)核。

這是一個及其漫長的過程,執(zhí)行多重 fork 并處理數(shù)百萬行代碼大大減慢了整個開發(fā)速度。因此,Android 設備使用的內(nèi)核相較于 Linux 內(nèi)核主線要滯后兩到三年的時間。Google 于 10 月份最新發(fā)布了 Pixel 4,其 Linux 內(nèi)核則是 2017 年 11 月發(fā)布的 4.14 LTS 版本。并且由于過大的工作量,Android 設備通常不獲取內(nèi)核更新,它將永遠停留在 4.14 版本上。
再者,各種設備的內(nèi)核都不盡相同,一臺設備的特定內(nèi)核無法在其他設備上工作。于是,Google 正試圖縮小各 Android 設備內(nèi)核與主線 Linux 內(nèi)核間的差距,讓設備內(nèi)核更接近上游內(nèi)核主線。
在今年的 Linux Plumbers Conference 上,Android 內(nèi)核團隊負責人 Sandeep Patil 表示,他們的目標是從根本上找到 Android 運行所需要的,但不必在給定的硬件上運行的東西,然后將其引入上游并盡可能接近主線。
Google 的打算是復制其早期工作 Project Treble 以模塊化 Android。Project Treble 用于在 Android 和 HAL(硬件抽象層)之間創(chuàng)建穩(wěn)定的接口。與此類似,Google 計劃穩(wěn)定 Linux 的內(nèi)核 ABI,從而提供一個穩(wěn)定的寫入接口,使硬件供應商可以輕松地插入代碼,最終消除特定的設備內(nèi)核。

Google 的高級軟件工程師 MatthiasMnnich 展示了一幅預想中的內(nèi)核體系結構圖!毕乱淮 Android 設備“內(nèi)核將由通用內(nèi)核鏡像(Generic Kernel Image,GKI)和多個GKI模塊構成,扁枝槲寄生特定硬件的驅(qū)動程序(可能是閉源驅(qū)動)將作為內(nèi)核模塊加載?傊谠撛O想中,所有東西都被模塊化了。
考慮到 Android 生態(tài)系統(tǒng)的技術壁壘和多樣性,這應該不是一件容易的事情。無論如何,愛特運維將 Android 設備內(nèi)核引入主線 Linux 內(nèi)核肯定會使包括 Android 用戶,手機制造商和 Linux 社區(qū)等在內(nèi)的不少人受益。不過 Google 的計劃剛剛開始,后續(xù)還有更多的工作要完成。