Lanzamiento del núcleo Asterinas 0.19, escrito en el lenguaje Rust y compatible con Linux

Se ha publicado la versión del proyecto Asterinas 0.19, que desarrolla un núcleo escrito en Rust y diseñado para ser utilizado en sistemas operativos de propósito general. El núcleo proporciona un ABI (Interfaz Binaria de Aplicación) compatible con el núcleo de Linux y que puede utilizarse en su lugar. Paralelamente, se está desarrollando la distribución Asterinas NixOS, que combina el núcleo Asterinas con el entorno del sistema NixOS. El código del proyecto se desarrolla desde 2022 y se distribuye bajo la licencia MPL (Licencia Pública de Mozilla).

Actualmente, el núcleo implementa más de 240 llamadas al sistema de Linux. En la distribución Asterinas NixOS, se ha verificado el funcionamiento de más de 100 paquetes de NixOS sobre el núcleo Asterinas. Entre los paquetes compatibles se encuentran: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama y Codex.

El núcleo ofrece soporte completo para la arquitectura x86-64, soporte parcial para ARM64, RISC-V 64 y x86-64 con aislamiento basado en Intel TDX, así como soporte inicial para la arquitectura LoongArch 64. Las áreas de aplicación priorizadas se centran en sistemas que dependen de Linux ABI, pero requieren un nivel de seguridad más alto. Por ejemplo, se sugiere utilizar Asterinas para la creación de un entorno del sistema seguro. máquinas virtuales, que utilizan tecnologías como ARM CCA, AMD SEV e Intel TDX, así como en el lado del sistema anfitrión, que asegura la ejecución de contenedores.

Para reducir la probabilidad de errores al trabajar con memoria, que son la principal fuente de las vulnerabilidades más peligrosas, se emplea el lenguaje Rust y la táctica de uso limitado de bloques unsafe en la escritura de Asterinas. El núcleo se construye utilizando la arquitectura framekernel, donde se intenta combinar las capacidades de aislamiento de los microkernels con la eficiencia de los núcleos monolíticos.

Los componentes del núcleo en Asterinas se colocan en un espacio de direcciones común, y la seguridad se logra a nivel de separación lógica entre el código seguro y el código donde no se pueden excluir problemas de seguridad. El núcleo se divide en dos partes, escritas en Rust: OS Framework y OS Services. En OS Services está prohibido el uso de bloques unsafe, y todas las operaciones de bajo nivel que requieren ejecución de código en bloques unsafe se trasladan a OS Framework y solo están disponibles a través de una API de alto nivel. Todas las llamadas al sistema, los sistemas de archivos y los controladores se implementan a nivel de OS Services y no pueden incluir bloques unsafe.

Para el desarrollo de servicios del sistema y módulos del núcleo, se ofrece la herramienta OSDK (Kit de Desarrollo de Sistema Operativo), que proporciona la utilidad cargo-osdk para la creación, compilación, prueba y ejecución de componentes del sistema operativo. Se ha preparado un conjunto de bibliotecas OSTD (Biblioteca Estándar del Sistema Operativo) para los desarrolladores, que incluye una edición de las bibliotecas estándar de Rust (crate std) adaptada para su uso en los componentes del sistema operativo.

Entre las novedades en Asterinas 0.19:

  • Se ha implementado el subsistema DRM (Gestor de Renderizado Directo), el dispositivo /dev/dri, la interfaz KMS (configuración de modo de kernel) y el controlador ‘modesetting’, que han permitido iniciar el conjunto gráfico nativo basado en X.Org Server y Mesa, en lugar del controlador fbdev anteriormente utilizado, que utilizaba el framebuffer.


  • Se ha añadido soporte para la arquitectura AArch64 (ARM64), que se utiliza ahora como la arquitectura principal en el desarrollo, junto con x86-64. Para AArch64 se ha implementado un segundo nivel de soporte, que implica la operatividad de las funcionalidades básicas, la verificación en un sistema de integración continua y una cobertura parcial con pruebas.
  • Se ha continuado con el trabajo de adaptación de Asterinas para su implementación como sistema invitado en contenedores VM de Kata Containers y Confidential Containers. Se ha propuesto una nueva implementación de Overlayfs, que pasa exitosamente las pruebas estándar de la FS del núcleo de Linux y xfstests. Se ha implementado una nueva API de montaje. Se ha estabilizado el código de virtio-fs. Se ha añadido soporte para el protocolo
    direct-boot, utilizado en QEMU, Cloud Hypervisor y Firecracker. Se ha acelerado la carga en máquinas virtuales, cuya memoria está cifrada mediante la tecnología Intel TDX.
  • En el marco de OSTD (Operative System Standard Library) se ha implementado una API básica para la creación de hipervisores minimalistas basados en Intel VMX.
  • Se ha añadido soporte para el modelo de desarrollo de controladores en Rust. Se ha añadido el componente aster-device con funcionalidades similares a las componentes del núcleo de Linux con primitivas y abstracciones básicas para el desarrollo de controladores, pero escrito en Rust sin código unsafe.
  • Se ha habilitado la posibilidad de auto-recompilación (self-hosting): desde un entorno con el núcleo Asterinas y paquetes de NixOS ahora se puede compilar el núcleo Asterinas.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster