谷歌发布 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 的兼容性支持听起来很吸引人,谷歌最近已经开放了这个项目,接受开源社区的贡献。