MirageOS 4.0 llega con nuevas utilidades, nuevo proceso de compilación y mas

marzo 31, 2022 , 0 Comments

Después de un año y medio de desarrollo se dio a conocer el lanzamiento de la nueva versión del proyecto «MirageOS 4.0» que permite crear sistemas operativos para una sola aplicación, en el que la aplicación se entrega como un «unikernel» autosuficiente que puede ejecutarse sin el uso de sistemas operativos, un kernel OS separado y cualquier capa.

Toda la funcionalidad de bajo nivel nativa del sistema operativo se implementa como una biblioteca adjunta a la aplicación.

Sobre MirageOS

Una aplicación se puede desarrollar en cualquier sistema operativo y luego compilarse en un kernel especializado (el concepto unikernel ) que puede ejecutarse directamente sobre hipervisores Xen, KVM, BHyve y VMM (OpenBSD), en plataformas móviles, como un proceso en un POSIX. compatible, o en entornos de nube de Amazon Elastic Compute Cloud y Google Compute Engine.

El entorno generado no contiene nada superfluo e interactúa directamente con el hipervisor sin controladores ni capas del sistema, lo que permite lograr una reducción significativa de los gastos generales y aumentar la seguridad.

Trabajar con MirageOS se reduce a tres etapas: preparar la configuración con la definición de los paquetes OPAM utilizados en el entorno , construir el entorno y lanzar el entorno. El tiempo de ejecución para ejecutarse sobre hipervisores se basa en el kernel Solo5 .

A pesar de que las aplicaciones y las bibliotecas se forman en el lenguaje de alto nivel OCaml, los entornos resultantes muestran un rendimiento bastante bueno y un tamaño mínimo (por ejemplo, el servidor DNS ocupa solo 200 KB).

El mantenimiento de los entornos también se simplifica, ya que si necesita actualizar el programa o cambiar la configuración, basta con crear y ejecutar un nuevo entorno. Se admiten varios cientos de bibliotecas en el lenguaje OCaml para realizar operaciones de red (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), trabajar con almacenamientos y proporcionar procesamiento de datos en paralelo.

Principales novedades de MirageOS 4.0

En esta nueva versión que se presenta de MirageOS se cambió el proceso de compilación de proyectos y unikernel. En lugar del sistema de compilación ocamlbuild utilizado anteriormente, se utilizan dune y los repositorios locales (monorepo).

Para crear dichos repositorios, se agregó una nueva utilidad, opam-monorepo, que permitió separar la administración de paquetes de la construcción desde la fuente. La utilidad opam-monorepo hace el trabajo de crear archivos de bloqueo para las dependencias relacionadas con el proyecto, descargar y extraer el código de dependencia y configurar el entorno para usar el sistema de construcción de dune, ademas vale la pena mencionar que la construcción en sí la realiza con dune.

Otro de los cambios que se destaca es que se proporciona un proceso de compilación repetible. El uso de archivos de bloqueo proporciona un enlace a las versiones de dependencia y le permite repetir completamente el proceso de compilación en cualquier momento con el mismo código.

Tambien se destaca que se implementó un nuevo proceso de compilación cruzada y se proporciona la capacidad de compilación cruzada para todas las plataformas de destino admitidas desde un entorno de compilación común, en el que, entre otras cosas, las dependencias y bibliotecas con enlaces C se compilan de forma cruzada, sin necesidad para agregar estos enlaces al paquete principal.

Por otra parte, se menciona que la utilidad opam-monorepo está disponible para su instalación con el administrador de paquetes opam y se puede usar en proyectos que usan el sistema de compilación dune. Para mantener parches que resuelvan problemas con la creación de dependencias en dune, se crearon dos repositorios dune-universe/opam-overlays y dune-universe/mirage-opam-overlays, que están habilitados de manera predeterminada cuando se usa la utilidad CLI de mirage.

De los demás cambios que se destacan:

  • La compilación cruzada se organiza utilizando los espacios de trabajo proporcionados por el sistema de compilación de dune.
  • Se ha agregado soporte para nuevas plataformas de destino, por ejemplo, se ha proporcionado experimentalmente la capacidad de crear aplicaciones independientes para trabajar en placas Raspberry Pi 4.
  • Se ha trabajado en la integración de partes de MirageOS en ecosistemas relacionados con el desarrollo de OCaml para simplificar el montaje de aplicaciones en forma de unikernel.
  • Muchos paquetes de MirageOS se han portado al sistema de compilación de dune.
  • Integración simplificada de MirageOS con bibliotecas C y Rust.
  • Nuevo tiempo de ejecución de OCaml propuesto para evitar libc (libre de libc).
  • Proporcionó la capacidad de utilizar el servicio Merlin para la integración con entornos de desarrollo integrado estándar.

Finalmente, si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.