Descargas

El proyecto Kerla desarrolla un kernel compatible con Linux en el lenguaje Rust

los Chico Project está desarrollando un kernel de sistema operativo escrito en el lenguaje Rust. El nuevo kernel se centra inicialmente en garantizar la compatibilidad con el kernel de Linux en el nivel ABI, lo que permite que los binarios no modificados creados para Linux se ejecuten en un entorno basado en Kerla. El código se distribuye bajo licencias Apache 2.0 y MIT. El proyecto está siendo desarrollado por el desarrollador japonés Seiya Nuta, conocido por desarrollar el sistema operativo microkernel. Resea , escrito en el idioma C.

En la etapa actual de desarrollo, Kerla solo puede funcionar en sistemas con arquitectura x86_64 y implementado Llamadas básicas al sistema como write, stat, mmap, pipe y poll, admite señales, tuberías sin nombre y cambio de contexto. Se proporcionan llamadas como fork, wait4 y execve para controlar los procesos. Hay soporte para tty y pseudo-terminales (pty). Initramfs (para montar el FS raíz), tmpfs y devfs todavía son compatibles con los sistemas de archivos. Se construye una pila de red con soporte de socket TCP y UDP basada en el smoltcp Biblioteca.

El desarrollador ha preparado un entorno de arranque que se ejecuta en QEMU o en la máquina virtual Firecracker con el driver virtio-net, al que ya puedes conectarte vía SSH. Musl se usa como biblioteca del sistema y BusyBox se usa como utilidades de usuario.

Se creó un sistema de compilación basado en Docker, que permitirte Cree sus propios initramfs de arranque con el kernel de Kerla. Desarrollar por separado una carcasa de programa similar a un pez nsh y pila GUI Kasari basado en el protocolo Wayland.

El proyecto Kerla desarrolla un kernel compatible con Linux en el lenguaje Rust

El uso del lenguaje Rust en un proyecto le permite reducir la cantidad de errores en su código mediante el uso de técnicas de programación seguras y ser más eficiente en la identificación de problemas al trabajar con memoria. El manejo seguro de la memoria está garantizado en Rust en tiempo de compilación mediante comprobaciones de referencia, seguimiento de propiedad de objetos y vida útil del objeto (alcance), así como mediante la evaluación de la corrección del acceso a la memoria en tiempo de ejecución. Además, Rust proporciona protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, adopta el concepto de referencias y variables inmutables de forma predeterminada, proporciona una tipificación estática fuerte para minimizar los errores lógicos y simplifica el procesamiento de entrada con coincidencia de patrones. …

Para el desarrollo de componentes de bajo nivel como el kernel del sistema operativo, Rust ofrece soporte para punteros sin formato, empaquetado de estructuras, inserciones de ensamblador en línea e incrustación de archivos ensambladores. Para trabajar sin estar vinculado a la biblioteca estándar, existen paquetes de cajas separados para realizar operaciones con cadenas, vectores y banderas de bits. Las ventajas también incluyen las herramientas integradas para evaluar la calidad del código (linter, analizador de óxido) y la creación de pruebas unitarias que se pueden realizar no solo en dispositivos reales, sino también en QEMU.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba