1. 程式人生 > 資訊 >谷歌 Fuchsia OS 計劃 “原生”支援執行安卓和 Linux 應用程式

谷歌 Fuchsia OS 計劃 “原生”支援執行安卓和 Linux 應用程式

2月14日訊息外媒 9to5 Google 報道,多年來,谷歌一直在開發 Fuchsia OS,這是一款明顯不基於 Linux 的作業系統。Fuchsia OS 作業系統的最新提案展示了這款 “不是 Linux”的作業系統如何能夠同時執行 Android 和 Linux 的 “未修改”應用程式。

打造一個新的作業系統,尤其是像 Fuchsia 這樣從零開始的作業系統,其中一個比較大的問題是——人們理所當然地希望能夠在這個作業系統上執行自己喜歡的應用。在 Fuchsia 的情況中,理論上可以作為 Chrome OS 和 Android 的繼承者,人們很可能期望能夠同時執行 Android 應用和 Linux 應用,以及原生的 Fuchsia 應用。

到目前為止,人們期望 Fuchsia 能夠以 Chrome OS 目前能夠執行 Linux 應用的方式來實現這一點,即在虛擬機器中執行完整的 Linux 例項。Chrome OS 甚至準備使用同樣的策略來實現其執行 Android 應用的能力,這要歸功於一個名為 arcvm 的專案。

然而,虛擬機器的方案也有一些缺點。首先,在 “host”(例如 Fuchsia)和 “guest”(Android)之間管理檔案可能是棘手或繁瑣的。此外,Fuchsia 強調安全,試圖儘可能讓程式相互隔離。為了保持 Linux 應用的這種隔離程度,Fuchsia 需要執行一個以上的虛擬機器,這可能會拖累效能。

獲悉,本週,有人提出了一個

提案,為 Fuchsia 提供了替代解決方案,以計劃執行 Linux 和 Android 的程式。Fuchsia 將獲得名為 “Starnix”的系統,而不是執行 Linux 本身,它將作為 Linux 核心的指令和 Fuchsia 的 Zircon 核心指令之間的翻譯器

本質上,Linux 程式將 “正常”執行,不會區分出它不是在基於 Linux 的作業系統中執行的事實。同時,Starnix 需要做的工作是確保應用程式能夠在 Fuchsia 上執行,就像它在 Linux 上正常執行的那樣。如果你對 Linux 的工作方式非常熟悉,Starnix 的完整提案是一個有趣的內容,特別是他們支援 Linux“as she is spoke”的計劃。

對於那些對 Fuchsia 有偶然興趣的使用者來說,更有趣的是開發者打算如何使用 Starnix。在多個場合,提案中都提到了使用 Starnix 直接在 Fuchsia 上執行 Android 的程式碼。

“隨著我們擴大希望在 Fuchsia 上執行軟體的範圍,我們遇到了希望在 Fuchsia 上執行的軟體,但我們沒有能力重新編譯。例如,Android 應用程式包含已經為 Linux 編譯的原生代碼模組。為了在 Fuchsia 上執行這些軟體,我們需要能夠在不修改它們的情況下執行二進位制檔案。

例如,我們將執行一些來自 Android 原始碼樹的低階測試二進位制檔案,以及來自 Linux 測試專案的二進位制檔案。”

從中我們可以看出,谷歌可能是打算讓 Fuchsia 能夠深度支援 Android 應用,不需要例外,比如對於使用 Android NDK 用 C 或 C++ 編寫的應用。當然,從長遠來看,Starnix 應該只是作為一種權宜之計,讓谷歌的 Fuchsia 作業系統能夠更廣泛地使用,同時等待開發者將他們的應用移植到新的作業系統中。幾乎在所有情況下,原生的 Fuchsia 應用都應該比通過 Starnix 執行的 Linux 或 Android 應用表現更好。

也就是說,Fuchsia 的 Starnix 只是在提案階段,需要做大量的工作才能有類似於適當的 Android/Linux 到 Fuchsia/Zircon 的相容性。為了儘量避免這種工作缺陷,谷歌一直在研究類似專案的成功和失敗,比如最初的微軟 Windows Subsystem for Linux(WSL1)。不過,這項提議還需要經過審視,Fuchsia 重新使用虛擬機器來滿足其 Linux 和 Android 需求的可能性還是很大的。

Fuchsia 增加 Linux 和 Android 的相容性支援聽起來很吸引人,谷歌最近已經開放了這個專案,接受開源社群的貢獻。