Google試圖用Linux內(nèi)核主線來替換Android設備內(nèi)核
安卓是基于Linux內(nèi)核的操作系統(tǒng)。但在Android設備上運行的內(nèi)核與谷歌選擇的Linux內(nèi)核的LTS版本有很大區(qū)別。
在到達每一臺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ū)等等。但是,谷歌的計劃才剛剛開始,后面還有很多工作要做。