Fuchsia OS está trabajando en soporte para ejecutar programas de Linux sin modificar
Los desarrolladores de Google dieron a conocer hace pocos dias un plan para implementar un mecanismo ejecutar programas no modificados compilados para Linux en el sistema operativo «Fuchsia».
Para ejecutar programas de Linux en el espacio del usuario, se planea proporcionar una capa «starnix» para brindar compatibilidad con la ABI de Linux. En la capa desarrollada, las interfaces del sistema del kernel de Linux se implementan en un controlador que se lanza como un proceso para el sistema operativo Fuchsia, que se ejecuta en el espacio del usuario y traduce las solicitudes de los programas de Linux a las llamadas a los subsistemas Fuchsia correspondientes.
Se observa que durante el desarrollo del proyecto, muchos subsistemas Fuchsia tendrán que ser modificados para implementar todas las interfaces del sistema disponibles en Linux. La arquitectura de starnix es en gran medida la misma que la del subsistema de Windows para Linux que usa Windows para traducir las llamadas al sistema de Linux a las llamadas al sistema de Windows.
Se planea implementar el código starnix en Rust para minimizar los posibles vectores de vulnerabilidades que potencialmente pueden usarse para elevar los privilegios de un proceso de Linux al proceso starnix.
Para garantizar la seguridad en starnix, se utilizarán los mecanismos de protección estándar Fuchsia siempre que sea posible.
Por ejemplo, al acceder a servicios del sistema como el sistema de archivos, la pila de redes o el subsistema de gráficos, starnix solo traducirá las solicitudes, convirtiendo la ABI de Linux en la ABI del sistema Fuchsia, lo que permite las mismas restricciones que se aplican a los procesos Fuchsia habituales.
Esto también implementará mecanismos de autorización específicos de Linux, por ejemplo, definiendo en qué situaciones un proceso de Linux tiene derecho a terminar otro.
Los desarrolladores de Fuchsia han desarrollado soporte para lanzar aplicaciones Linux en el pasado, pero experimentaron con una implementación que funciona por analogía con la forma en que se organiza el lanzamiento de aplicaciones Linux en Chrome OS.
Para la compatibilidad con Linux, Fuchsia ofreció la biblioteca Machina, que permitía ejecutar programas de Linux en una máquina virtual aislada especial formada mediante un hipervisor basado en el kernel de Zircon y las especificaciones de Virtio.
No se descarta el uso de la virtualización, ya que la implementación completa de la interfaz del sistema Linux no es una tarea trivial.
Además de la capa de starnix, es posible crear un mecanismo para ejecutar ejecutables de Linux usando un kernel de Linux que se ejecuta en una máquina virtual separada. Este método se considera el más fácil de implementar, pero también el que consume más recursos.
En un momento, Microsoft comenzó a desarrollar su capa de compatibilidad de Linux a partir del traductor, pero finalmente cambió a usar el kernel nativo de Linux en el Subsistema de Windows para Linux 2.
Además, Fuchsia ya proporciona una capa de compatibilidad POSIX Lite que se ejecuta en la parte superior de Fuchsia System ABI. POSIX Lite le permite ejecutar algunos programas de Linux, pero requiere la recompilación del código de la aplicación y, en algunos casos, la modificación del código fuente.
Uno de los problemas con POSIX Lite es la implementación incompleta de todas las funciones de POSIX, incluidas las llamadas para cambiar el estado global de los procesos (por ejemplo, la función de matar), que están en desacuerdo con los conceptos de seguridad en Fuchsia, que prohíben cambiar el estado global de los procesos. Expresar.
El uso de POSIX Lite se justifica en el proceso de portar aplicaciones abiertas, pero no resuelve problemas con el lanzamiento de programas para los que no hay acceso al código (por ejemplo, es imposible lograr compatibilidad con aplicaciones de Android que contienen inserciones nativas compiladas).
Recordemos que en el marco del proyecto Fuchsia, Google está desarrollando un sistema operativo universal capaz de operar en cualquier tipo de dispositivo, desde estaciones de trabajo y smartphones hasta tecnología embebida y de consumo. El desarrollo se basa en la experiencia de crear la plataforma Android y tiene en cuenta las deficiencias en el campo del escalado y la seguridad.
El sistema se basa en el microkernel Zircon, basado en los desarrollos del proyecto LK, extendido para su uso en varias clases de dispositivos, incluidos teléfonos inteligentes y computadoras personales.
Fuente: https://fuchsia.googlesource.com