楠木軒

谷歌發佈 Fuchsia OS“原生”運行安卓和 Linux 應用方法

由 万俟傲白 發佈於 科技

IT之家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 需要運行一個以上的虛擬機,這可能會拖累性能。

IT之家獲悉,本週,有人提出了一個提案,為 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 的兼容性支持聽起來很吸引人,谷歌最近已經開放了這個項目,接受開源社區的貢獻。