MesaOS es un sistema operativo de 64 bits escrito desde cero utilizando Rust. Con el objetivo de ser distinto a los OS actuales / MesaOS is a 64-bit operating system written from scratch using Rust. Its goal is to be different from current operating systems.
40
stars
6
commits
C
primary language
Sep 7, 2026
updated
Un sistema operativo de 64 bits escrito desde cero en Rust.
Kernel híbrido · Multitarea apropiativa · Shim de drivers Linux · Audio HD · Red TCP/IP
🤖 Nota sobre el desarrollo: MesaOS es un experimento de arquitectura de sistemas diseñado y dirigido por crackanimador (estudiante de ESO).
Todo el código fuente ha sido generado mediante modelos de Lenguaje (IA) siguiendo mis especificaciones, mientras que el diseño de la arquitectura, la depuración de errores, las pruebas en hardware real y la integración del sistema son 100% trabajo humano.
MesaOS es un sistema operativo x86_64 escrito 100% desde cero en Rust. No es un Linux desde arriba ni un BSD modificado — es un kernel original con arquitectura híbrida que combina la seguridad de Rust con la compatibilidad de Linux vía un shim de más de 400 símbolos del kernel exportados.
kmalloc, printk, pci_*, dma_* y 400+ símbolos para cargar controladores de Linux sin modificar/proc, /sys, epoll, signalfd, eventfd, timerfd| Característica | Descripción |
|---|---|
| Kernel híbrido | Monolítico con espacio de usuario en Ring 3 |
| Multitarea apropiativa | Round-robin con 5 estados, sleep queue, zombies |
| Syscalls nativas | SYSCALL/SYSRET con validación SMAP/SMEP software |
| Linux compat | ~350 syscalls reconocidas, 60+ implementadas |
| Shim de drivers | 400+ símbolos del kernel Linux exportados |
| ACPI | RSDP, MADT, AML interpreter vía crate aml |
| Multiprocesamiento | Detección SMP (pendiente scheduler multicore) |
| Seguridad | ASLR, stack canary, rate-limiting, password hashing |
| Driver | Descripción | Estado |
|---|---|---|
| HDA Audio | 48kHz/16-bit/estéreo, CORB/RIRB, DMA streaming, codec routing | ✅ |
| Virtio-Net | MMIO, colas Rx/Tx, para QEMU | ✅ |
| RTL8139 | Ethernet 10/100, PIO, IRQ | ✅ |
| PS/2 Keyboard | Scan codes, layouts ES/US | ✅ |
| RTC (CMOS) | Reloj en tiempo real, timezone | ✅ |
| Batería | ACPI _BST/_BIF + EC fallback, cycle count, SOH | ✅ |
| PC Speaker | Tonos, beep, TTS experimental | ✅ |
| Framebuffer | Consola, Rose Pine, renderizado HTML | ✅ |
| UEFI NVRAM | Read/write/list variables runtime services | ✅ |
| NVMe | Código completo (desactivado por seguridad) | ⏸️ |
| xHCI (USB 3.0) | Init y port scanning (drivers en construccion, pero la base ya hecha) | ✅ |
| ATA/IDE | Código completo (desactivado por seguridad) | ⏸️ |
| Protocolo | Estado |
|---|---|
| Ethernet — Frame parsing/creation | ✅ |
| ARP — Caché, requests, replies | ✅ |
| IPv4 — Enrutamiento, fragmentación | ✅ |
| ICMP — Echo (ping) | ✅ |
| TCP — Parseo de headers | 🚧 |
| UDP | 🚧 |
| DHCP — Cliente | ✅ |
| DNS — Resolución | ✅ |
| RNDIS — USB tethering (Por ahora, solo iniciacion NCP) | 🚧 |
| Componente | Estado |
|---|---|
| VFS abstracto con File/Directory/Symlink/Device | ✅ |
| RamFS — Árbol en memoria | ✅ |
| Initrd — Archivos embebidos en ISO (persistente) | ✅ |
| Particiones — MBR/GPT parseadas | ✅ |
write/read/mkdir/rmdir/rename/chown/link/symlink | ✅ |
| Característica | Estado |
|---|---|
| WAV PCM 8/16/24/32 bits, mono/estéreo | ✅ |
| Resampleo lineal por chunks (evita OOM) | ✅ |
| Streaming DMA con chunks de 512KB (~2.7s) | ✅ |
| MP3 — Metadatos (duración, bitrate, sample rate) | ✅ |
Comandos: play, audio-info, audio-list | ✅ |
| Comando | Función |
|---|---|
play f.wav | Reproduce audio WAV |
hda test / hda vol 80 | Test / volumen HDA |
battery-report | Reporte completo de batería |
nano | Editor de texto |
neofetch | Información del sistema |
ping 10.0.2.2 | ICMP echo |
dhcp | Configuración de red |
bios-analyze | Escaneo de BIOS |
nvram list/read/write/del | Gestión UEFI NVRAM |
su, passwd, useradd, userdel | Multiusuario |
exec f.elf | Ejecutar ELF en Ring 3 |
ps, kill, top | Gestión de procesos |
| ` | , >, >>` |
Inspirado en upower -i de Linux. Dos fuentes de datos en cascada:
_BST/_BIF/_BTP╔══════════════════════════════════════════════════════════════╗
║ MESA OS - B A T T E R Y R E P O R T ║
╚══════════════════════════════════════════════════════════════╝
state discharging
percentage 72%
energy-full-design 45000 mWh
energy-now 30600 mWh
time-to-empty 2:27:33
capacity (SOH) 94%
cycle-count 124
source AML (ACPI _BST/_BIF)
battery-report # Reporte completo
battery-report -w # Modo monitor (refresca cada 2s)
battery-report -b # Brief (una línea)
battery-report -v # Verbose (OEM info, warnings)
Los archivos que inyectes en la ISO se quedan para siempre. No se pierden al reiniciar porque van embebidos en el kernel dentro de la ISO.
# Inyectar archivos y reconstruir en un solo paso
./tools/inject_build.sh mis_datos/
# O por separado
./tools/inject_to_iso.sh archivo.wav config.conf
./build.sh build
# Restaurar ISO limpia (sin archivos)
./build.sh restore
Los archivos aparecen en
/inyect/dentro del OS.
┌──────────────────────────────────────────────────────────┐
│ RING 3 (USUARIO) │
│ Procesos ELF · Shell · Pipes · Syscalls Linux/MesaOS │
├──────────────────────────────────────────────────────────┤
│ RING 0 (KERNEL) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Scheduler │ │ Memoria │ │ Linux Shim │ │
│ │ Round-Robin │ │ PMM/VMM │ │ 400+ símbolos │ │
│ │ Sleep Queue │ │ Heap/HHDM │ │ workqueues │ │
│ │ Zombies │ │ Paginación │ │ timers │ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Drivers │ │ Red │ │ Filesystem │ │
│ │ HDA Audio │ │ ARP/IPv4 │ │ VFS · RamFS │ │
│ │ RTL8139 │ │ ICMP/DHCP │ │ Initrd · MBR │ │
│ │ Virtio-Net │ │ DNS/TCP │ │ GPT │ │
│ │ xHCI/NVMe │ │ Ethernet │ │ │ │
│ │ Keyboard │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐│
│ │ x86_64: GDT · IDT · APIC/PIC · SYSCALL/SYSRET · TSS││
│ └──────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────┘
rustup toolchain install nightly
rustup default nightly
sudo apt install xorriso qemu-system-x86_64 git make gcc
chmod +x build.sh
./build.sh build # Compilar kernel + ISO
./build.sh run # Virtio-net (recomendado)
./build.sh run-nvme # Con NVMe simulado
./build.sh run-usb # Con xHCI USB
./build.sh run-wifi # Con display gráfico
NO_INJECT=1 ./build.sh build # Compilar sin inyección
ARCH=aarch64 ./build.sh build # ARM64 (experimental)
| Plataforma | Funciona |
|---|---|
| QEMU (KVM/TCG) | ✅ Completo |
| HP 15s-eq2xxx | ✅ Audio, batería, red, NVMe |
| UEFI (Limine) | ✅ |
| BIOS (GRUB) | ✅ |
El driver NVMe sobrescribe el Sector 0 (tabla de particiones) durante la inicialización.
No ejecutes en hardware con datos importantes si llega a descomentar el driver NVMe. Usa QEMU o un disco de pruebas.
Ademas, La version de Qemu puede tener errores por culpa del SMP, pero en si todas las funciones van como deben ir.
Crackanimad0r / Crackanimador ⛩️
Hecho con ☕, 🦀 y mucha paciencia.
5 commits
1 commits
C
97.8%
MesaOS es un sistema operativo de 64 bits escrito desde cero utilizando Rust. Con el objetivo de ser distinto a los OS actuales / MesaOS is a 64-bit operating system written from scratch using Rust. Its goal is to be different from current operating systems.
40
stars
6
commits
C
primary language
Sep 7, 2026
updated
Un sistema operativo de 64 bits escrito desde cero en Rust.
Kernel híbrido · Multitarea apropiativa · Shim de drivers Linux · Audio HD · Red TCP/IP
🤖 Nota sobre el desarrollo: MesaOS es un experimento de arquitectura de sistemas diseñado y dirigido por crackanimador (estudiante de ESO).
Todo el código fuente ha sido generado mediante modelos de Lenguaje (IA) siguiendo mis especificaciones, mientras que el diseño de la arquitectura, la depuración de errores, las pruebas en hardware real y la integración del sistema son 100% trabajo humano.
MesaOS es un sistema operativo x86_64 escrito 100% desde cero en Rust. No es un Linux desde arriba ni un BSD modificado — es un kernel original con arquitectura híbrida que combina la seguridad de Rust con la compatibilidad de Linux vía un shim de más de 400 símbolos del kernel exportados.
kmalloc, printk, pci_*, dma_* y 400+ símbolos para cargar controladores de Linux sin modificar/proc, /sys, epoll, signalfd, eventfd, timerfd| Característica | Descripción |
|---|---|
| Kernel híbrido | Monolítico con espacio de usuario en Ring 3 |
| Multitarea apropiativa | Round-robin con 5 estados, sleep queue, zombies |
| Syscalls nativas | SYSCALL/SYSRET con validación SMAP/SMEP software |
| Linux compat | ~350 syscalls reconocidas, 60+ implementadas |
| Shim de drivers | 400+ símbolos del kernel Linux exportados |
| ACPI | RSDP, MADT, AML interpreter vía crate aml |
| Multiprocesamiento | Detección SMP (pendiente scheduler multicore) |
| Seguridad | ASLR, stack canary, rate-limiting, password hashing |
| Driver | Descripción | Estado |
|---|---|---|
| HDA Audio | 48kHz/16-bit/estéreo, CORB/RIRB, DMA streaming, codec routing | ✅ |
| Virtio-Net | MMIO, colas Rx/Tx, para QEMU | ✅ |
| RTL8139 | Ethernet 10/100, PIO, IRQ | ✅ |
| PS/2 Keyboard | Scan codes, layouts ES/US | ✅ |
| RTC (CMOS) | Reloj en tiempo real, timezone | ✅ |
| Batería | ACPI _BST/_BIF + EC fallback, cycle count, SOH | ✅ |
| PC Speaker | Tonos, beep, TTS experimental | ✅ |
| Framebuffer | Consola, Rose Pine, renderizado HTML | ✅ |
| UEFI NVRAM | Read/write/list variables runtime services | ✅ |
| NVMe | Código completo (desactivado por seguridad) | ⏸️ |
| xHCI (USB 3.0) | Init y port scanning (drivers en construccion, pero la base ya hecha) | ✅ |
| ATA/IDE | Código completo (desactivado por seguridad) | ⏸️ |
| Protocolo | Estado |
|---|---|
| Ethernet — Frame parsing/creation | ✅ |
| ARP — Caché, requests, replies | ✅ |
| IPv4 — Enrutamiento, fragmentación | ✅ |
| ICMP — Echo (ping) | ✅ |
| TCP — Parseo de headers | 🚧 |
| UDP | 🚧 |
| DHCP — Cliente | ✅ |
| DNS — Resolución | ✅ |
| RNDIS — USB tethering (Por ahora, solo iniciacion NCP) | 🚧 |
| Componente | Estado |
|---|---|
| VFS abstracto con File/Directory/Symlink/Device | ✅ |
| RamFS — Árbol en memoria | ✅ |
| Initrd — Archivos embebidos en ISO (persistente) | ✅ |
| Particiones — MBR/GPT parseadas | ✅ |
write/read/mkdir/rmdir/rename/chown/link/symlink | ✅ |
| Característica | Estado |
|---|---|
| WAV PCM 8/16/24/32 bits, mono/estéreo | ✅ |
| Resampleo lineal por chunks (evita OOM) | ✅ |
| Streaming DMA con chunks de 512KB (~2.7s) | ✅ |
| MP3 — Metadatos (duración, bitrate, sample rate) | ✅ |
Comandos: play, audio-info, audio-list | ✅ |
| Comando | Función |
|---|---|
play f.wav | Reproduce audio WAV |
hda test / hda vol 80 | Test / volumen HDA |
battery-report | Reporte completo de batería |
nano | Editor de texto |
neofetch | Información del sistema |
ping 10.0.2.2 | ICMP echo |
dhcp | Configuración de red |
bios-analyze | Escaneo de BIOS |
nvram list/read/write/del | Gestión UEFI NVRAM |
su, passwd, useradd, userdel | Multiusuario |
exec f.elf | Ejecutar ELF en Ring 3 |
ps, kill, top | Gestión de procesos |
| ` | , >, >>` |
Inspirado en upower -i de Linux. Dos fuentes de datos en cascada:
_BST/_BIF/_BTP╔══════════════════════════════════════════════════════════════╗
║ MESA OS - B A T T E R Y R E P O R T ║
╚══════════════════════════════════════════════════════════════╝
state discharging
percentage 72%
energy-full-design 45000 mWh
energy-now 30600 mWh
time-to-empty 2:27:33
capacity (SOH) 94%
cycle-count 124
source AML (ACPI _BST/_BIF)
battery-report # Reporte completo
battery-report -w # Modo monitor (refresca cada 2s)
battery-report -b # Brief (una línea)
battery-report -v # Verbose (OEM info, warnings)
Los archivos que inyectes en la ISO se quedan para siempre. No se pierden al reiniciar porque van embebidos en el kernel dentro de la ISO.
# Inyectar archivos y reconstruir en un solo paso
./tools/inject_build.sh mis_datos/
# O por separado
./tools/inject_to_iso.sh archivo.wav config.conf
./build.sh build
# Restaurar ISO limpia (sin archivos)
./build.sh restore
Los archivos aparecen en
/inyect/dentro del OS.
┌──────────────────────────────────────────────────────────┐
│ RING 3 (USUARIO) │
│ Procesos ELF · Shell · Pipes · Syscalls Linux/MesaOS │
├──────────────────────────────────────────────────────────┤
│ RING 0 (KERNEL) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Scheduler │ │ Memoria │ │ Linux Shim │ │
│ │ Round-Robin │ │ PMM/VMM │ │ 400+ símbolos │ │
│ │ Sleep Queue │ │ Heap/HHDM │ │ workqueues │ │
│ │ Zombies │ │ Paginación │ │ timers │ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ Drivers │ │ Red │ │ Filesystem │ │
│ │ HDA Audio │ │ ARP/IPv4 │ │ VFS · RamFS │ │
│ │ RTL8139 │ │ ICMP/DHCP │ │ Initrd · MBR │ │
│ │ Virtio-Net │ │ DNS/TCP │ │ GPT │ │
│ │ xHCI/NVMe │ │ Ethernet │ │ │ │
│ │ Keyboard │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐│
│ │ x86_64: GDT · IDT · APIC/PIC · SYSCALL/SYSRET · TSS││
│ └──────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────┘
rustup toolchain install nightly
rustup default nightly
sudo apt install xorriso qemu-system-x86_64 git make gcc
chmod +x build.sh
./build.sh build # Compilar kernel + ISO
./build.sh run # Virtio-net (recomendado)
./build.sh run-nvme # Con NVMe simulado
./build.sh run-usb # Con xHCI USB
./build.sh run-wifi # Con display gráfico
NO_INJECT=1 ./build.sh build # Compilar sin inyección
ARCH=aarch64 ./build.sh build # ARM64 (experimental)
| Plataforma | Funciona |
|---|---|
| QEMU (KVM/TCG) | ✅ Completo |
| HP 15s-eq2xxx | ✅ Audio, batería, red, NVMe |
| UEFI (Limine) | ✅ |
| BIOS (GRUB) | ✅ |
El driver NVMe sobrescribe el Sector 0 (tabla de particiones) durante la inicialización.
No ejecutes en hardware con datos importantes si llega a descomentar el driver NVMe. Usa QEMU o un disco de pruebas.
Ademas, La version de Qemu puede tener errores por culpa del SMP, pero en si todas las funciones van como deben ir.
Crackanimad0r / Crackanimador ⛩️
Hecho con ☕, 🦀 y mucha paciencia.
5 commits
1 commits
C
97.8%