Google正在密集開發Fuchsia操作系統。近日,Google剛剛上線了Fuchsia的開發者網站(fuchsia.dev)。這是一個非常明顯的信號,谷歌要將這個全新的操作系統,從幕後帶到臺前了。

Google已經坐擁2個非常出名的操作系統了,Android和Chrome OS。其中的Android更是全球範圍內使用最為廣泛的移動操作系統。那麼谷歌為何還需要開發第三個操作系統呢?

我給出的回答是:Android無法滿足Google快速發展的業務的需要。

分裂的安卓生態

Tim Cook在每年的WWDC和秋季發布會上,最喜歡乾的就是數落Android的碎片化。通常來說iOS的最新版本能取得70%以上的升級率,而Android只有可憐的個位數。

而生態的分裂會影響用戶的體驗和用戶設備的安全。

Google每年都投入大量的人力、物力來開發、升級Android,以期在與iOS的競爭中取得優勢(有時只是追趕)。Android每年會增加數以百計的API,但是在一個分裂的生態系統,開發者只能面向2、3年前的API版本進行開發。(根據statcounter的數據,截至19年6月為止,有大約81.5%的iOS設備運行的是iOS 12,而同時,Android 9 (Pie)只有18.6%的比例。如果想要支持85%的設備,能使用的API就只能是5年前的Android 5.1 (Lollipop)了。這就導致了Android生態中的App無法從一年一次的OS升級中獲益。

此外,所有的軟體都會存在Bug,Android也是一樣。然而,Android操作系統是一體式的設計。你要不就是更新整個操作系統固件,要不就無法獲得任何更新。所以,設備的製造商(比如小米)必須通過修改AOSP(Android Open-Source Project)的代碼,才能發布他們修改過的OS版本。如果在Linux Kernel(Android基於Linux開發,並做了大量修改)中發現了安全漏洞(17年發現了454個,18年發現了176個),這個補丁需要先應用於Linux Kernel,然後再合併到Android的代碼樹中,然後SoC廠商(比如高通)再將代碼合併到BSP中,然後設備製造商才能合併補丁到他們的Android發行版,最後再推送到終端用戶手中。在這個鏈條上的每個玩家都需要經歷開發、測試和發布流程。所以通常情況下,我們需要6~24個月才能收到新發現的漏洞的補丁,有時甚至根本收不到補丁。

安卓無法解決問題

在安卓的生態系統中,有一個很明顯的鏈條:

Android生態鏈條

所以,如果Google想要升級終端客戶的設備,他們只能祈禱在中間的SoC和設備製造商能夠主動合併他的變更,並進行新的操作系統發布。

所以,Google隨著版本的更迭,將越來越多的服務從AOSP中,移動到了GMS(Google Mobile Service)中,以期達到讓Android更加模塊化,以及更加容易升級。這樣,Google可以跳過中間兩級,直接給終端用戶推送更新:

Google跳過SoC和設備製造商

但這個路徑無法更新內核、驅動和底層的系統服務。

就如上文所言,Android是基於Linux內核開發的。而Linux內核(以及Linux社區)拒絕提供一個穩定的設備驅動二進位介面。

所以大家只要將代碼整合到Linux Kernel的代碼樹,並將它合併到主線Linux內核中(有一些廠商是這麼做的),也可能他們只是複製了一份Linux Kernel,然後修改並發布,並不向上游合併(大多數廠商其實是這麼乾的)。

通過複製與修改的方式使用Linux Kernel

由於設備驅動是內核的一部分,所以Google無法採用GMS相同的方式來更新。

Fuchsia的解決方案

Google決心從Fuchsia設計的源頭上來避免Android的這些設計缺陷。

模塊化設計。Fuchsia是完全模塊化且層級化設計的。

你可以想像Fuchsia操作系統是一個蛋糕,由四層組成:

Fuchsia的分層蛋糕

Zircon內核是一個微內核。所有的設備驅動並不在內核內,而是在內核外作為獨立的進程存在。設備驅動和內核之間通過IPC(inter-process call,一種消息通訊機制)來互相協作。而設備驅動的界面是精心設計過的、穩定的、並且是通過一種平臺、語言無關的描述語言banjo描述的。因此,SoC 製造商可以獨立基於穩定的介面開發和發布設備驅動,而且驅動可以跨不同的OS或內核版本使用。

同時,Google引入一個新的多倉庫源代碼管理工具jiri。它與Android中使用的repo之間最大的區別是,它允許引用另一個manifest文件作為基礎,並替換其中的部分組件。這樣SoC和設備製造商就無需複製上游的源代碼,只需引用上游的代碼即可。(事實上,在Fuchsia中,topaz層引用了peridot層,peridot 層引用了garnet層,garnet層又引用了zircon)。

基於引用的Fuchsia生態

這樣就使得這個依賴的鏈條得到了解耦。所有的開發和更新可以並行進行:

產業鏈上下游各自向終端用戶推送更新

超越Android

Fuchsia的模塊化設計並不僅僅用於為手機創建定製的系統鏡像。Google更進一步,使得Fuchsia實現了極大的可伸縮性。分層模塊化的設計使得Fuchsia可以非常方便的剪裁定製操作系統,以用於手機、平板、筆記本電腦,以及路由器、智能音箱、機器人,甚至是Google的無人駕駛汽車。

它將成為第一個AI原生(內建深度學習、語音語義、人臉識別、圖像分類等人工智慧演算法),雲原生(與各種雲服務無縫集成),適用於各種設備的超級操作系統。

-

本文翻譯自作者本人的Medium文章,如需轉載請與我聯繫。

延伸閱讀

黃珏珅:如何編譯和運行Fuchsia操作系統?

zhuanlan.zhihu.com圖標
推薦閱讀:

相關文章