谷歌开发者 几天前发布 计划实施一种机制,以在Linux上运行针对Linux编译的未修改程序 操作系统 紫红色。
要在用户空间中运行Linux程序, 计划提供一个“ starnix”层来支持Linux ABI。 在开发层中,Linux内核系统接口在作为Fuchsia操作系统进程启动的驱动程序中实现,该驱动程序在用户空间中运行,并将来自Linux程序的请求转换为对相应Fuchsia子系统的调用。
据观察,在项目开发过程中,许多紫红色子系统必须进行修改 实现Linux中可用的所有系统接口。 starnix的架构与Linux的Windows子系统的架构大致相同,后者使用Windows将Linux系统调用转换为Windows系统调用。
计划在Rust中实现starnix代码以最小化可能的漏洞向量可以用来将Linux进程的特权提升到starnix进程。
为了确保starnix的安全性,将尽可能使用标准的紫红色保护机制。
例如,当访问诸如文件系统,网络堆栈或图形子系统之类的系统服务时,starnix将仅转换请求,将Linux ABI转换为Fuchsia系统ABI,从而允许与通常的Fuchsia进程相同的限制。
这还将实现特定于Linux的授权机制,例如,定义在哪种情况下一个Linux进程有权终止另一个Linux进程。
紫红色的开发人员过去已经开发了对启动Linux应用程序的支持,但是他们尝试了一种类似于在Chrome OS上组织Linux应用程序启动方式的实现方式。
为了与Linux兼容,紫红色提供了Machina库,该程序使Linux程序可以在使用基于Zircon内核和Virtio规范的管理程序组成的特殊隔离虚拟机中运行。
不排除使用虚拟化, 因为完全实现Linux系统接口不是一件容易的事。
除了starnix斗篷, 可以创建一种机制,以使用在单独的虚拟机中运行的Linux内核来运行Linux可执行文件。 这种方法被认为是最容易实现的,但是也是最消耗资源的。
有一次,微软开始从翻译器开发其Linux兼容层,但最终转而在Windows Subsystem for Linux 2上使用本机Linux内核。
另外, 紫红色已经提供了POSIX Lite兼容性层 它在Fuchsia System ABI之上运行。 POSIX Lite允许您运行某些Linux程序,但需要重新编译应用程序代码,并且在某些情况下,需要修改源代码。
问题之一 与POSIX Lite 是所有POSIX功能的不完全实现, 包括更改进程的全局状态的调用(例如,kill功能),这与紫红色中的安全概念不一致,后者禁止更改进程的全局状态。 表示。
在移植开放应用程序的过程中使用POSIX Lite是合理的,但无法解决启动无法访问代码的程序的问题(例如,无法实现与包含已编译本机插入的Android应用程序的兼容性)。
让我们记住,在Fuchsia项目的框架内,Google正在开发一种通用操作系统,该操作系统能够在从工作站和智能手机到嵌入式和消费类技术的任何类型的设备上运行。 该开发基于创建Android平台的经验,并考虑了可扩展性和安全性方面的缺点。
该系统基于Zircon微内核,该内核基于LK项目的开发,已扩展用于各种类型的设备,包括智能手机和个人计算机。
数据来源: https://fuchsia.googlesource.com