4 puntos por GN⁺ 2025-04-27 | 1 comentarios | Compartir por WhatsApp
  • RetrOS-32 es un proyecto de sistema operativo de hobby de 32 bits basado en la arquitectura i386
  • Ofrece funciones de gráficos, multitarea y redes, y también ha sido probado en hardware real
  • Está escrito en C, C++ y ensamblador, y soporta compilación multiplataforma mediante Docker
  • Es posible construir un sistema de usuario, ejecutarlo en emulación con QEMU y arrancarlo en hardware físico
  • El proyecto cuenta con funciones de kernel bastante completas y una pila de red, y sigue agregando características de forma continua

Introducción al proyecto RetrOS-32bit

  • Es un proyecto de desarrollo de un sistema operativo de hobby de 32 bits basado en la arquitectura i386
  • Soporta entorno gráfico, multitarea y funciones de red
  • Fecha de inicio del proyecto: 12 de mayo de 2022

Información básica de inicio de sesión

  • Cuentas de usuario predeterminadas: system, admin, guest
  • La contraseña de admin es admin, y guest no tiene contraseña
  • Se pueden crear nuevos usuarios con el comando admin create <nombre_de_usuario> <contraseña>

Principales lenguajes y herramientas de desarrollo

  • C, Assembly: kernel, utilidades y sistema de compilación
  • C++: aplicaciones de espacio de usuario
  • Make: automatización de compilación
  • Docker: proporciona un entorno de compilación multiplataforma

Hardware probado

  • Lenovo x240
  • Asus Eee PC series
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

Primeros pasos (Getting Started)

Herramientas necesarias (Prerequisites)

  • Docker: compilación multiplataforma
  • QEMU: emulación de máquina virtual
  • Entorno Linux/WSL: build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS: se requiere usar Docker (limitaciones para compilar x86 de 32 bits)

Instalación (Installation)

  • Clonar el repositorio Git
  • Inicializar los submódulos de Git
  • Crear el archivo de imagen con los comandos make compile, make img
  • Ejecutar el emulador QEMU con el comando make qemu

En MacOS y Windows se recomienda usar Docker

Uso (Usage)

  • Subir el archivo .img y ejecutarlo en el sitio copy.sh v86
  • También se puede ejecutar directamente con QEMU: make qemu o qemu-system-i386 <nombre_de_imagen>
  • En hardware físico, se puede arrancar grabando un ISO basado en GRUB en USB/CD

Estructura del proyecto (resumen breve)

  • apps: aplicaciones de espacio de usuario
  • bin: archivos binarios
  • boot: código fuente del bootloader
  • drivers: drivers del kernel
  • fs: código del sistema de archivos
  • graphics: código de procesamiento gráfico
  • include: archivos de encabezado
  • kernel: código fuente principal del kernel
  • lib: bibliotecas
  • net: código de red
  • rootfs: sistema de archivos raíz
  • tests: código de pruebas
  • tools: herramientas de compilación y utilidades

Hoja de ruta de desarrollo (Roadmap)

  • Bootloader personalizado y arranque compatible con GRUB completados
  • Implementados planificación preventiva multihilo y separación entre kernel y espacio de usuario
  • Pila de red: Ethernet, IP, ARP, UDP, TCP, DHCP, DNS completados
  • Sistema gráfico: implementados gestor de ventanas, widgets y renderizado con doble framebuffer
  • Sistema de archivos: similar a Ext2, soporte para FAT16, lectura/escritura disponible
  • Planes futuros: agregar soporte para servidor web, FTP, IRC, SSH, Telnet, HTTP y HTML

1 comentarios

 
GN⁺ 2025-04-27
Comentarios de Hacker News
  • Este tipo de proyectos da mucho más gusto verlos que la IA. No parece que se vaya a vender, pero muestra a un técnico trabajando de forma creativa
    • En mis últimos años de adolescencia estudié mucho desarrollo de SO como hobby. Todavía sigo haciendo kernels pequeños (recientemente hice que un kernel pequeño de RISCV imprimiera un mensaje para mi pareja)
  • Uno de los proyectos de pasión más impresionantes que he visto en mucho tiempo. Me pregunto por qué escribió su propio compilador de C
  • La fuente predeterminada del sistema debería ser una variante más condensada. El sistema se vería mucho más pulido
    • Está claro que las letras necesitan más espacio horizontal. Cada carácter debería ser más angosto y el espacio entre caracteres debería ser el menor posible; con el tamaño de fuente y la resolución actuales, alrededor de un píxel sería suficiente
    • No sé mucho sobre sistemas de fuentes, pero supongo que es una fuente bitmap monoespaciada. No sé qué tan difícil sea hacer esos cambios dentro del código base, pero si implica demasiado trabajo, no te preocupes por eso
    • Estoy construyendo un sitio de web OS desde cero y hace poco reescribí por completo la clase de fuentes. Por eso tengo este tema en la cabeza
  • ¡Excelente! Si empezaras de nuevo hoy, ¿qué harías diferente?
    • ¿Qué piensas sobre la adecuación del lenguaje para las partes de bajo nivel? (por ejemplo, quedarse con C, o un subconjunto simple de C++, o alguno de los lenguajes nuevos)
    • Teniendo tantos recursos disponibles, ¿cómo mantuviste interesante el proyecto sin copiar código de otras personas?
  • ¡Felicidades! Como alguien que usó una Commodore PET 2001 en 1977, se ve genial. He estado jugando con KolibriOS y MenuetOSx64, pero quería crear mi propio SO. ¡Lo lograste! Ojalá sigas adelante
  • Solo quería dejar unas felicitaciones. El proyecto me impresionó mucho. He sido fan del desarrollo de SO desde que era adolescente, y da gusto ver que este logro se hizo realidad. Me da curiosidad cómo se inicializa el subsistema gráfico. Te deseo mucho éxito
  • ¿Será grande y profesional como GNU? :)
  • ¿Podrías explicar cómo interactúa este compilador con el sistema operativo? En particular, me interesa cómo maneja funciones como las estructuras y cuáles son las limitaciones actuales o las mejoras planeadas en esta área
  • Es interesante ver que varios proyectos alcancen hitos al mismo tiempo. Da tranquilidad saber que todavía hay personas que trabajan a fondo con las computadoras y comparten los resultados
    • Ojalá sigas adelante
  • Veo rastros de Turbo C/QBasic en el editor
    • Mis respetos por el proyecto