Skip to content
ย 
ย 

Latest commit

ย 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

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รญ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

๐ŸŽฎ Drivers

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) โธ๏ธ

๐ŸŒ Red

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) ๐Ÿšง

๐Ÿ“‚ Sistema de Archivos

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 โœ…

๐ŸŽต Audio Player

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 โœ…

๐Ÿ–ฅ๏ธ Shell (82 comandos)

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
` , >, >>`

๐Ÿ”‹ 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

Plataforma Funciona
QEMU (KVM/TCG) โœ… Completo
HP 15s-eq2xxx โœ… Audio, baterรญa, red, NVMe
UEFI (Limine) โœ…
BIOS (GRUB) โœ…

๐Ÿ• Experimento xclock en Rust

El workspace independiente de experiments/ incluye un reloj analรณgico ASCII escrito en Rust no_std. Se carga como un ELF aislado en Ring 3, sin acceso directo al framebuffer ni privilegios de kernel. Syscalls pequeรฑos y de alcance limitado proporcionan la hora RTC, el borrado/color de la consola y una seรฑal Ctrl+C enclavada. El shell del kernel espera mientras un hijo de exec estรก en primer plano, evitando carreras de teclado/pantalla; Ctrl+C termina xclock y restaura el prompt.

El lanzador QEMU seguro usa intencionalmente una sola CPU virtual porque el scheduler SMP de MesaOS todavรญa no es fiable con el shell del kernel y cargas Ring 3 concurrentes.

MesaOS xclock ejecutรกndose mediante QEMU, noVNC y Playwright

Consulta experiments/cmd/xclock/README.md para compilarlo, instalarlo y ejecutarlo.


โš ๏ธ 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.

About

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.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages