Mach puro, sin híbridos
A diferencia de XNU, no hay una capa BSD dentro del núcleo. El rendimiento viene de un IPC clase L4, auxiliares estilo vDSO y caché de páginas, no de meter política en el núcleo.
En desarrollo activo
KyberOS powered by Mach X
Un solo núcleo, mantenido puro: tareas, hilos, puertos, mensajes. Encima, una personalidad UNIX/POSIX. A un lado, una personalidad Linux que habla la ABI de llamadas al sistema de Linux, para que el software de Linux corra sin modificar sobre Mach.
Los binarios nativos son Mach-O; ELF pertenece a la
personalidad de compatibilidad. Piensa en WSL1 + Mach, solo
que el núcleo anfitrión es Mach y el ABI anfitrión es Mach-O.
Hello, Mach!
KyberOS powered by Mach X
Visión
Tomar el micronúcleo Mach y mantenerlo puro: micronúcleo, IPC, servidores en espacio de usuario. Combinarlo con una personalidad UNIX/POSIX y ofrecer compatibilidad binaria con Linux, para que el software de Linux corra sin modificaciones.
Linux creció monolítico: los controladores, los sistemas de archivos y la política de llamadas al sistema comparten un solo espacio de direcciones y una sola superficie de fallos, con decenas de millones de líneas. Mach trazó la forma opuesta. Tareas, hilos, puertos, mensajes y memoria virtual son las únicas primitivas del núcleo; los controladores, los sistemas de archivos y el propio POSIX viven en servidores de espacio de usuario, conectados por IPC.
«Mach + POSIX» por sí solo no es nuevo. GNU/Hurd lo persigue desde 1990, y XNU lo logró renunciando a la pureza, metiendo BSD dentro del núcleo. Lo nuevo es la combinación que nadie había entregado: un núcleo Mach puro construido con clang/LLVM sobre x86_64, y una personalidad con la ABI de llamadas al sistema de Linux que corre software de Linux sin modificar, mientras el ABI nativo sigue siendo Mach-O.
Por qué
Linux ganó por ser suficientemente bueno, en todas partes, de golpe. Mach perdió por llegar temprano, lento e inconcluso. Ninguno de los dos resultados es una ley de la física. KyberOS existe para descubrir cómo se ve el micronúcleo cuando alguien por fin lo termina.
A diferencia de XNU, no hay una capa BSD dentro del núcleo. El rendimiento viene de un IPC clase L4, auxiliares estilo vDSO y caché de páginas, no de meter política en el núcleo.
Mach fue diseñado para alojar varias personalidades de SO a la vez. KyberOS incluye UNIX (primaria) y Linux (compatibilidad) como capas delgadas sobre un núcleo POSIX compartido.
Los puertos son capacidades: sin autoridad ambiental, sin nombres globales. La frontera entre personalidades funciona también como frontera de aislamiento de capacidades.
clang + ld64.lld producen el ABI Mach-O
nativo y un dyld propio se encarga del enlazado dinámico. ELF existe
solo dentro de la personalidad Linux.
Las ida y vuelta de un RPC nulo ya se miden en pocos cientos de ciclos, con una ruta rápida de entrega directa en desarrollo. La velocidad es una restricción de diseño, no un añadido.
Seguimiento de versiones, una experiencia de arranque cuidada, herramientas profesionales: «KyberOS powered by Mach X» con la pureza que XNU abandonó.
El panorama
Una tabla honesta, incluidas las filas que perdemos. KyberOS es joven; el punto de la comparación es la forma del diseño, no el marcador.
| KyberOS | Linux | XNU | GNU/Hurd | seL4 | |
|---|---|---|---|---|---|
| Modelo de núcleo | micronúcleo Mach puro | monolítico | híbrido: Mach + BSD dentro del núcleo | micronúcleo Mach + suite de servidores | micronúcleo verificado |
| Binarios nativos | Mach-O | ELF | Mach-O | ELF | ninguno; es un componente |
| Binarios de Linux | sin modificar, vía personalidad Linux (planeado) | nativos | no | fuentes POSIX, no ABI ELF | no |
| Personalidades de SO | varias, simultáneas | una | una (BSD) | una (el Hurd) | las que construyas |
| Controladores y sistemas de archivos | servidores en espacio de usuario | en el núcleo | en el núcleo (IOKit) | traductores en espacio de usuario | componentes en espacio de usuario |
| Modelo de seguridad | capacidades por derechos de puerto; la frontera de personalidad es la frontera de aislamiento | autoridad ambiental + LSM | BSD + puertos Mach + MACF | puertos y traductores | capacidades formales, con pruebas |
| Dónde vive la política | servidores en espacio de usuario | el núcleo | el núcleo | los servidores | tú decides |
| Madurez | en desarrollo, arranca en QEMU | hace funcionar al mundo | cada dispositivo Apple | investigación + port a Debian | defensa, aeroespacial, embebidos |
Filas que perdemos a propósito: seL4 está formalmente verificado y probado en campo; nosotros todavía no. La compatibilidad con Linux es un hito del roadmap, no algo que ya se entregue. Lo que ninguna otra fila combina: un núcleo Mach puro, un ABI nativo Mach-O y binarios de Linux corriendo como personalidad invitada.
Arquitectura
El trap del núcleo es un enrutador delgado: lee el campo de personalidad de la tarea y entrega el trap al punto de entrada de emulación de esa personalidad. El núcleo nunca interpreta un número de llamada al sistema.
El núcleo POSIX es una biblioteca enlazada en cada servidor de personalidad, no un proceso servidor compartido, así que la frontera entre personalidades sigue siendo una frontera real de aislamiento. Las capas delgadas solo manejan lo que diverge: kqueue vs epoll, clone vs rfork, sysctl vs procfs, dialectos de ptrace.
La idea de Mach de muchos servidores «casi nunca ocurrió»; el costo de IPC castigaba la descomposición. KyberOS arranca con un servidor por personalidad y descompone solo donde la medición lo justifica.
clang + LLVM es la cadena nativa: ld64.lld para
Mach-O, ld.lld/GNU ld para el núcleo. LTO, PGO y CFI son
de primera clase. Se construye con CMake + Ninja; nada de autotools
en nuestro árbol.
Hoja de ruta
El núcleo arranca en QEMU hoy, con gestión de memoria, tareas e IPC Mach funcionando. El desarrollo es privado por ahora; los hitos de abajo son orientativos, no promesas.
Cimientos: arranque multiboot2 + PVH, PMM, memoria virtual en la mitad alta, heap del núcleo, vm_fault de Mach con COW en ambos lados, ring 3, syscall/sysret.
IPC nativo Mach: espacios, puertos, mensajes tipados, mach_msg_trap bloqueante, temporizador LAPIC y la ruta rápida de entrega directa. La puerta para el trabajo en dyld.
Servidor de consola por IPC + la primera traducción de syscall de Linux: write(1) → IPC Mach → consola → serial.
Puesta a punto de la personalidad UNIX sobre la interfaz 4.3BSD congelada, y luego el hito del shell POSIX: /bin/sh con tuberías, fork/exec y control de trabajos.
La personalidad Linux sobre el mismo andamiaje, y después libc: primero musl (Mach-O estático), después glibc (dinámico).
Sandboxing por capacidades y MAC, arranque seguro/medido, SMP, controladores de hardware rump-kernel, espacios de nombres y contenedores.
Carta del núcleo
Cada característica del núcleo debe pasar las cinco reglas, o ganarse una excepción numerada y fechada en el registro de decisiones, con una medición que la justifique.
Construido con tareas, hilos, puertos, mensajes, vm_map, vm_object, objetos de memoria y el planificador. Ningún tipo nuevo de objeto de núcleo.
El núcleo ofrece la capacidad; un servidor en espacio de usuario decide cómo usarla.
Las funciones visibles al usuario son interfaces estilo MIG sobre puertos servidos por el núcleo. El conjunto de traps se mantiene pequeño y estable.
El acceso pasa por derechos de puerto. Nada depende de autoridad ambiental, IDs de usuario o nombres globales.
Épocas, zonas por CPU, búsquedas sin bloqueo, donación de prioridad estilo turnstile: cualquier técnica moderna es válida detrás de una interfaz sin cambios y una semántica observable sin cambios.
Mach renace
Mach no falló por falta de mérito. Falló por llegar demasiado pronto: demasiado ambicioso, demasiado inconcluso para una industria que necesitaba el software para ayer. Así que la industria lanzó sus ideas de todas formas, dentro de núcleos que cambiaron pureza por velocidad. Cada dispositivo Apple es un Mach que se comprometió. KyberOS es el Mach que no lo hizo.
Nada de esto existiría si sus autores no lo hubieran escrito todo. Artículos, manuales, definiciones de interfaz: un diseño documentado con el cuidado suficiente para sobrevivir a su propio laboratorio. Rochester lo sembró, Pittsburgh lo construyó, Utah lo cargó, GNU lo mantuvo caliente y Apple demostró que sus ideas podían mover mil millones de dispositivos. Nosotros solo somos las siguientes manos al volante.
KyberOS no es un clon y no es nostalgia. Es el mismo proyecto, retomado: el micronúcleo que ellos esbozaron, terminado con cuarenta años de retrospectiva. Mach renace.
A la gente de Rochester, Pittsburgh, Utah, Grenoble y Cupertino, y a todos los que alguna vez compilaron Mach, escribieron para él o creyeron que el núcleo podía ser pequeño:
Gracias. Ahora lo llevamos nosotros.