Skip to content

Sustrato Unikernel seL4 para os-console

Sustrato Unikernel seL4 para os-console

os-console está previsto para ejecutarse como una imagen unikernel seL4 Microkit en su forma de producción final (previsto Fase H2). Este artículo explica qué significa eso, qué ya funciona y qué queda por construir.


Qué Es un Unikernel

Un unikernel es una aplicación compilada directamente con los primitivos del sistema operativo que necesita, produciendo un único binario arrancable. No hay sistema operativo de propósito general, ni shell, ni gestor de paquetes, ni sistema de cuentas de usuario, ni superficie de ataque más allá del propio código de la aplicación y el kernel mínimo del que depende.

La distinción respecto a una VM convencional:

VM Convencional Unikernel
SO invitado (Linux/BSD) + aplicación Aplicación + kernel mínimo
SO de propósito general: shell, usuarios, paquetes Propósito único: solo una aplicación
Superficie de ataque del kernel compartido Sin kernel compartido; sin autoridad ambiental
Huella típica: 500 MB a 2 GB Huella típica: 10–50 MB
Tiempo de arranque: 5–30 segundos Tiempo de arranque: < 1 segundo

Un unikernel no puede ser comprometido con escalada de privilegios convencional porque no hay raíz a la que escalar. No hay shell al que acceder. Solo existe la aplicación y su conjunto de capacidades formalmente acotado.


seL4 Microkit

seL4 es un microkernel formalmente verificado. El kernel seL4 ha sido verificado mediante pruebas verificadas por máquina (Isabelle/HOL) que establecen la corrección del modelo de capacidades del kernel, la gestión de memoria y los mecanismos de IPC.

seL4 Microkit es el entorno operativo mínimo de seL4 para aplicaciones embebidas y unikernel. Define:

Dominios de Protección (PDs): La unidad de aislamiento. Cada PD tiene su propio espacio de nombres de capacidades y no puede leer ni escribir la memoria de otro PD. Los PDs se declaran estáticamente en tiempo de compilación en una especificación de sistema TOML.

Llamada a Procedimiento Protegido (PPC): IPC síncrono entre PDs. Un PD invoca un endpoint PPC. El kernel cambia el contexto de ejecución. El receptor retorna. El llamante reanuda. No se involucra memoria compartida a menos que se mapee explícitamente con una capacidad.


Qué Ya Funciona

moonshot-toolkit v0.3.1 (el orquestador de compilación de PointSav, 35 pruebas superadas) ya produce imágenes seL4 AArch64 arrancables:

# examples/hello-world.toml — funciona hoy
[system]
kernel = "vendor-sel4-kernel/build/aarch64-qemu/kernel.elf"
elfloader = "vendor-sel4-tools/elfloader-tool"

[pd](/wiki/pd)
name = "hello-pd"
binary = "examples/hello.elf"
priority = 100

Ejecutar cargo run -- build examples/hello-world.toml produce un ELF del cargador. QEMU lo arranca hasta: Booting all finished, dropped to user space.

vendor-sel4-kernel (v15.0.0-dev, BSD-2-Clause) está incluido como código fuente propio en el monorepo y se compila desde el código fuente. vendor-sel4-tools (cargador ELF, 44 fuentes C/ASM) está incluido y compilado por moonshot-toolkit.

El kernel arranca. La infraestructura está en su lugar.


El Diseño de 3 Dominios de Protección para os-console

La imagen seL4 del sistema prevista para os-console contiene tres Dominios de Protección:

Imagen del sistema seL4 de os-console
┌─────────────────────────────────────────┐
│ PD os-console          prioridad 100    │
│  Cartridges: F2 F3 F4 F6 F9 F11 F12   │
│  TUI ratatui; sin acceso directo a red │
│  Pila: 256 KiB; montón: 1 MiB          │
└──────────┬──────────────────┬───────────┘
           │ PPC (IPC sínc.)  │ PPC (IPC sínc.)
           ▼                  ▼
┌──────────────┐   ┌────────────────────┐
│ pd-red       │   │ pd-serie           │  prioridad 150/180
│ smoltcp      │   │ serie VirtIO       │
│ VirtIO-net   │   │ salida ratatui     │
│ HTTP/1.1     │   │ entrada teclado    │
└──────────────┘   └────────────────────┘
       ▲
       │ VirtIO-net (capacidad DMA)
       ▼
moonshot-hypervisor → red del host → servicios Totebox

El PD os-console realiza una solicitud HTTP llamando al pd-red mediante PPC. El pd-red posee la capacidad del dispositivo VirtIO-net. Si el PD os-console se ve comprometido, no puede exfiltrar datos directamente por la red — solo puede llamar al pd-red a través de su interfaz PPC definida.


moonshot-sel4-vmm: El Runtime de PD Soberano

seL4 Microkit requiere un pequeño runtime de Rust dentro de cada PD. El enfoque previsto es desarrollar un runtime propio de PointSav en moonshot-sel4-vmm.

La ABI de seL4 es pequeña y formalmente verificada — no cambia arbitrariamente porque las pruebas la restringen. Escribir enlaces propios (~300 líneas de Rust) lleva el mismo tiempo que integrar una biblioteca externa, pero deja el código bajo el control de PointSav.

moonshot-sel4-vmm está previsto para proporcionar:

  • _start() → inicialización de pila/montón → pd_main()
  • Envoltorios de llamadas al sistema seL4 (sel4_call, sel4_send, sel4_recv)
  • Tipo IPC microkit_msginfo_t conforme a la ABI de Microkit
  • Callbacks notified(ch: u64) y protected(ch: u64, msginfo) según el protocolo Microkit

Esta crate es compartida entre los tres binarios del sistema operativo: PDs de os-console, PDs de servicio de os-totebox y PDs de app-orchestration-* de os-orchestration.


La Pila Soberana de Compilación

La cadena de dependencias de runtime prevista para os-console como unikernel seL4:

Capa Componente Estado
Aplicación Código de cartridges de os-console Activo
Orquestador de compilación moonshot-toolkit v0.3.1 Activo
VMM del host moonshot-hypervisor Andamiaje — a rellenar
Runtime de PD moonshot-sel4-vmm Andamiaje — Fase H1
Sustrato de capacidades system-core, system-ledger v1.0.0 Activo
Kernel vendor-sel4-kernel v15.0.0-dev Código fuente propio BSD-2-Clause
Cargador ELF vendor-sel4-tools Código fuente propio BSD-2-Clause
PD de red smoltcp MIT; incluible como fuente propia
Arranque de desarrollo QEMU Solo herramienta de desarrollo

Nanos (unikernel comercial) y hermit-os (arquitectura de mini-SO externa) no se utilizan.


Hoja de Ruta de Fases

Fase H0 (actual): Alpine Linux en QEMU — valida la pila de servicios antes de invertir en el sustrato seL4.

Fase H1 (prevista, 4–6 semanas): Rellenar moonshot-sel4-vmm. Arrancar os-console como un único PD seL4. Renderizar la TUI mediante serie VirtIO. Portapapeles VirtIO funcional (imprescindible para operadores de pequeña empresa).

Fase H2 (prevista, 8–16 semanas): Diseño completo de 3 PDs. moonshot-hypervisor reemplaza QEMU. Imagen arrancable en menos de 1 segundo. Pila 100% soberana.

Fase H3 (prevista, Leapfrog 2030): El emparejamiento F11 se convierte en acuñación de capacidades. Tokens de capacidad seL4 a nivel de máquina. Revocación mediante system-ledger propagada al nivel del kernel.


Woodfine Capital Projects™, MCorp™, PointSav Digital Systems™, Totebox Orchestration™, Totebox Archive™ y Capability Geometry™ son marcas comerciales de Woodfine Capital Projects Inc., utilizadas en Canadá, los Estados Unidos, América Latina y Europa. Todas las demás marcas comerciales son propiedad de sus respectivos propietarios.

Important Information

Important Information

Corporate structure. PointSav Digital Systems ("PointSav") is a trade name of Woodfine Capital Projects Inc. ("Woodfine"). PointSav does not itself offer, sell, or solicit any security. Any securities offering associated with Woodfine's real-property direct-hold solutions is made exclusively by Woodfine, and only by means of the applicable Private Placement Memorandum.

No investment advice. This wiki's content is provided for engineering, operational, research, and development purposes. Nothing on this wiki constitutes investment advice or a solicitation to invest in any Woodfine partnership or direct-hold solution.

Intellectual property. The PointSav name, trade name, wordmark, and marks, together with all current and future PointSav- and Totebox-branded products, services, and offerings — and the software, source code, documentation, design system, and all related materials — are proprietary to Woodfine and its affiliates, except for components identified as open source. No rights are granted except as expressly set out in a written license or agreement. See TRADEMARK.md in this repository for the full trademark notice.

Open source components. Portions of the platform are made available under permissive open-source licenses identified in the accompanying repository. Use of those components is governed by their respective license terms.

No warranty; informational use. Content on this wiki is provided for general informational purposes only and does not constitute a representation, warranty, or commitment with respect to product functionality, availability, pricing, or roadmap. Some articles describe planned or intended features, capabilities, and milestones — language such as "planned," "intended," "targeted," "may," and "expected" marks this forward-looking content, which is subject to change and does not constitute a commitment regarding future performance.

Confidentiality. Where an article describes an operational or deployment detail that is not intended for public disclosure, that article is not published on this wiki. Content here is general-purpose engineering documentation, not customer-specific configuration.

Jurisdiction. Woodfine Capital Projects Inc. is organized in British Columbia, Canada. References to the Sovereign Data Foundation on this wiki describe a planned or intended initiative only, not a current equity holder or active governance body.

Changes to this notice. PointSav may update this notice from time to time; the version posted on this page governs.

Not a filing system. This wiki is not a securities filing system, an electronic disclosure repository, or a substitute for SEDAR+ or any other regulatory filing system. Formal securities filings are made through the applicable regulatory filing system, not through this wiki.

Full disclaimer. This notice supplements, and does not replace, the full Disclaimers article. In the event of any conflict, the full Disclaimers article governs.

Read the full disclaimer →