crackanimad0r/MesaOS

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

github.com/crackanimad0r/MesaOS
open-source
os
rust
showdev

README

MesaOS

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.

🌟 ¿Qué es MesaOS?

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.

¿Qué lo hace único?

  • Shim de drivers Linux reales: exporta kmalloc, printk, pci_*, dma_* y 400+ símbolos para cargar controladores de Linux sin modificar
  • Audio WAV streaming por HDA con resampleo en tiempo real y chunks de 512KB
  • Stack de red completo (ARP/IPv4/ICMP/DHCP/DNS/Ethernet) sobre virtio-net y RTL8139
  • Initrd permanente: los archivos inyectados en la ISO sobreviven al reinicio — persistencia sin disco
  • Shell interactivo con 82 comandos, pipes, redirección, historial, autocompletado y editor de texto
  • Compatibilidad binaria parcial con Linux: syscalls Linux, /proc, /sys, epoll, signalfd, eventfd, timerfd

🚀 Características

🧠 Kernel y Sistema

CaracterísticaDescripción
Kernel híbridoMonolítico con espacio de usuario en Ring 3
Multitarea apropiativaRound-robin con 5 estados, sleep queue, zombies
Syscalls nativasSYSCALL/SYSRET con validación SMAP/SMEP software
Linux compat~350 syscalls reconocidas, 60+ implementadas
Shim de drivers400+ símbolos del kernel Linux exportados
ACPIRSDP, MADT, AML interpreter vía crate aml
MultiprocesamientoDetección SMP (pendiente scheduler multicore)
SeguridadASLR, stack canary, rate-limiting, password hashing

🎮 Drivers

DriverDescripciónEstado
HDA Audio48kHz/16-bit/estéreo, CORB/RIRB, DMA streaming, codec routing
Virtio-NetMMIO, colas Rx/Tx, para QEMU
RTL8139Ethernet 10/100, PIO, IRQ
PS/2 KeyboardScan codes, layouts ES/US
RTC (CMOS)Reloj en tiempo real, timezone
BateríaACPI _BST/_BIF + EC fallback, cycle count, SOH
PC SpeakerTonos, beep, TTS experimental
FramebufferConsola, Rose Pine, renderizado HTML
UEFI NVRAMRead/write/list variables runtime services
NVMeCódigo completo (desactivado por seguridad)⏸️
xHCI (USB 3.0)Init y port scanning (drivers en construccion, pero la base ya hecha)
ATA/IDECódigo completo (desactivado por seguridad)⏸️

🌐 Red

ProtocoloEstado
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)🚧

📂 Sistema de Archivos

ComponenteEstado
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

🎵 Audio Player

CaracterísticaEstado
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

🖥️ Shell (82 comandos)

ComandoFunción
play f.wavReproduce audio WAV
hda test / hda vol 80Test / volumen HDA
battery-reportReporte completo de batería
nanoEditor de texto
neofetchInformación del sistema
ping 10.0.2.2ICMP echo
dhcpConfiguración de red
bios-analyzeEscaneo de BIOS
nvram list/read/write/delGestión UEFI NVRAM
su, passwd, useradd, userdelMultiusuario
exec f.elfEjecutar ELF en Ring 3
ps, kill, topGestión de procesos
`, >, >>`

🔋 Battery Report

Inspirado en upower -i de Linux. Dos fuentes de datos en cascada:

  1. ACPI AML (preferido): evalúa _BST/_BIF/_BTP
  2. EC directo (fallback): registros estándar 0xD0/0xD8
╔══════════════════════════════════════════════════════════════╗
║              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)

📦 Initrd Persistente

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.


🧱 Arquitectura

┌──────────────────────────────────────────────────────────┐
│                    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││
│  └──────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────┘

⚙️ Compilación

Requisitos

rustup toolchain install nightly
rustup default nightly
sudo apt install xorriso qemu-system-x86_64 git make gcc

Build

chmod +x build.sh

./build.sh build           # Compilar kernel + ISO

Ejecutar en QEMU

./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

Variables de entorno

NO_INJECT=1 ./build.sh build    # Compilar sin inyección
ARCH=aarch64 ./build.sh build   # ARM64 (experimental)

🗺️ Roadmap

  • v0.1 — Kernel base, memoria, scheduler, shell básico
  • v0.2 — HDA Audio, WAV streaming, red (ARP/IP/DHCP)
  • v0.3 — Initrd persistente, battery report, UEFI NVRAM
  • v0.4 — Linux shim, 350 syscalls, Ring 3, ELF loader, editor nano
  • [/] v0.5 — xHCI funcional (control transfers reales), USB storage
  • v0.6 — TCP state machine (conexiones reales)
  • v0.7 — SMP (scheduler multicore)
  • v0.8 — Servidor web HTTP embebido
  • v0.9 — Decodificador MP3 (Huffman + MDCT)
  • v1.0 — WiFi RTL8822CE

🧪 Hardware probado

PlataformaFunciona
QEMU (KVM/TCG)✅ Completo
HP 15s-eq2xxx✅ Audio, batería, red, NVMe
UEFI (Limine)
BIOS (GRUB)

⚠️ Aviso

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.


👤 Creador

Crackanimad0r / Crackanimador ⛩️


Hecho con ☕, 🦀 y mucha paciencia.

Contributors

crackanimad0r

5 commits

crackanimador

1 commits

crackanimad0r/MesaOS

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

github.com/crackanimad0r/MesaOS
open-source
os
rust
showdev

README

MesaOS

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.

🌟 ¿Qué es MesaOS?

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.

¿Qué lo hace único?

  • Shim de drivers Linux reales: exporta kmalloc, printk, pci_*, dma_* y 400+ símbolos para cargar controladores de Linux sin modificar
  • Audio WAV streaming por HDA con resampleo en tiempo real y chunks de 512KB
  • Stack de red completo (ARP/IPv4/ICMP/DHCP/DNS/Ethernet) sobre virtio-net y RTL8139
  • Initrd permanente: los archivos inyectados en la ISO sobreviven al reinicio — persistencia sin disco
  • Shell interactivo con 82 comandos, pipes, redirección, historial, autocompletado y editor de texto
  • Compatibilidad binaria parcial con Linux: syscalls Linux, /proc, /sys, epoll, signalfd, eventfd, timerfd

🚀 Características

🧠 Kernel y Sistema

CaracterísticaDescripción
Kernel híbridoMonolítico con espacio de usuario en Ring 3
Multitarea apropiativaRound-robin con 5 estados, sleep queue, zombies
Syscalls nativasSYSCALL/SYSRET con validación SMAP/SMEP software
Linux compat~350 syscalls reconocidas, 60+ implementadas
Shim de drivers400+ símbolos del kernel Linux exportados
ACPIRSDP, MADT, AML interpreter vía crate aml
MultiprocesamientoDetección SMP (pendiente scheduler multicore)
SeguridadASLR, stack canary, rate-limiting, password hashing

🎮 Drivers

DriverDescripciónEstado
HDA Audio48kHz/16-bit/estéreo, CORB/RIRB, DMA streaming, codec routing
Virtio-NetMMIO, colas Rx/Tx, para QEMU
RTL8139Ethernet 10/100, PIO, IRQ
PS/2 KeyboardScan codes, layouts ES/US
RTC (CMOS)Reloj en tiempo real, timezone
BateríaACPI _BST/_BIF + EC fallback, cycle count, SOH
PC SpeakerTonos, beep, TTS experimental
FramebufferConsola, Rose Pine, renderizado HTML
UEFI NVRAMRead/write/list variables runtime services
NVMeCódigo completo (desactivado por seguridad)⏸️
xHCI (USB 3.0)Init y port scanning (drivers en construccion, pero la base ya hecha)
ATA/IDECódigo completo (desactivado por seguridad)⏸️

🌐 Red

ProtocoloEstado
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)🚧

📂 Sistema de Archivos

ComponenteEstado
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

🎵 Audio Player

CaracterísticaEstado
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

🖥️ Shell (82 comandos)

ComandoFunción
play f.wavReproduce audio WAV
hda test / hda vol 80Test / volumen HDA
battery-reportReporte completo de batería
nanoEditor de texto
neofetchInformación del sistema
ping 10.0.2.2ICMP echo
dhcpConfiguración de red
bios-analyzeEscaneo de BIOS
nvram list/read/write/delGestión UEFI NVRAM
su, passwd, useradd, userdelMultiusuario
exec f.elfEjecutar ELF en Ring 3
ps, kill, topGestión de procesos
`, >, >>`

🔋 Battery Report

Inspirado en upower -i de Linux. Dos fuentes de datos en cascada:

  1. ACPI AML (preferido): evalúa _BST/_BIF/_BTP
  2. EC directo (fallback): registros estándar 0xD0/0xD8
╔══════════════════════════════════════════════════════════════╗
║              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)

📦 Initrd Persistente

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.


🧱 Arquitectura

┌──────────────────────────────────────────────────────────┐
│                    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││
│  └──────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────┘

⚙️ Compilación

Requisitos

rustup toolchain install nightly
rustup default nightly
sudo apt install xorriso qemu-system-x86_64 git make gcc

Build

chmod +x build.sh

./build.sh build           # Compilar kernel + ISO

Ejecutar en QEMU

./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

Variables de entorno

NO_INJECT=1 ./build.sh build    # Compilar sin inyección
ARCH=aarch64 ./build.sh build   # ARM64 (experimental)

🗺️ Roadmap

  • v0.1 — Kernel base, memoria, scheduler, shell básico
  • v0.2 — HDA Audio, WAV streaming, red (ARP/IP/DHCP)
  • v0.3 — Initrd persistente, battery report, UEFI NVRAM
  • v0.4 — Linux shim, 350 syscalls, Ring 3, ELF loader, editor nano
  • [/] v0.5 — xHCI funcional (control transfers reales), USB storage
  • v0.6 — TCP state machine (conexiones reales)
  • v0.7 — SMP (scheduler multicore)
  • v0.8 — Servidor web HTTP embebido
  • v0.9 — Decodificador MP3 (Huffman + MDCT)
  • v1.0 — WiFi RTL8822CE

🧪 Hardware probado

PlataformaFunciona
QEMU (KVM/TCG)✅ Completo
HP 15s-eq2xxx✅ Audio, batería, red, NVMe
UEFI (Limine)
BIOS (GRUB)

⚠️ Aviso

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.


👤 Creador

Crackanimad0r / Crackanimador ⛩️


Hecho con ☕, 🦀 y mucha paciencia.

Contributors

crackanimad0r

5 commits

crackanimador

1 commits

Languages

C

97.8%