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的計劃剛剛開始,后續還有更多的工作要完成。
-
Android
+關注
關注
12文章
4024瀏覽量
133969 -
谷歌
+關注
關注
27文章
6254瀏覽量
111360 -
Linux
+關注
關注
88文章
11758瀏覽量
219005
發布評論請先 登錄
進迭時空 Upstream | K3 獲得 Linux 7.0 內核原生支持
Linux內核伙伴系統內存申請函數詳解:從原理到實戰
深入理解設備樹chosen節點:固件與內核的“配置橋梁”
Linux 6.8 內核 - 錯誤:找不到 cmdline 扁平化設備樹怎么解決?
Linux內核的“心跳”:jiffies如何為系統計時?
深入RK3588內核:rockchip_linux_defconfig的作用與調試價值
Linux系統內核參數調優實戰指南
【「Linux 設備驅動開發(第 2 版)」閱讀體驗】+讀深入理解Linux內核內存分配
【「Linux 設備驅動開發(第 2 版)」閱讀體驗】Linux內核開發基礎
【「Linux 設備驅動開發(第 2 版)」閱讀體驗】+讀內核處理的核心輔助函數
深入解析RK平臺Android/Linux Bootloader核心文件:android_bootloader.c
Linux內核printk日志級別全解析:從參數解讀到實操配置
Linux內核參數調優方案
如何配置和驗證Linux內核參數
樹莓派4 性能大比拼:標準Linux與實時Linux 4.19內核的延遲測試
谷歌Android設備內核引入主線Linux內核難嗎?
評論