Tengo una idea de un proyecto que, por lo que leí, otros ya tuvieron y fracasaron: mi idea es crear un sistema operativo simple (nótese que utilizo esta palabra como sinónimo de "limitado" ).
¿A qué me refiero con "sistema operativo"?
Bueno, me refiero a:
- Un kernel
- Un shell con comandos built-in
- Una API
- Una biblioteca estándar
El orden en el que están los items es el orden de importancia que yo le doy a cada uno.
¿Puedo aclarar/especificar un poco más acerca de mi idea?
Sí, sí puedo: Mi idea es programar un microkernel que:
- Esté programado principalmente en ANSI C (algunas partes del código requerirán ensamblador)
- Cumpla con la especificación multiboot para poder cargarlo desde GRUB
- Tenga un controlador VGA simple para modo texto
- Cuente con una shell con comandos buil-in
- Pueda cargar binarios en formato plano
- Cuente con una API
- Cuente con una biblioteca estándar
¿Qué nombre le pondremos al sistema?
Preguntas como esta (y relacionadas) son las que causaron que otros proyectos no hayan llegado a nada.
¿Vamos a usar Git, SVN o algo parecido?
Sí, al menos es lo que planeo hacer yo. Yo estoy bastante familiarizado con Git y GitHub así que, si el proyecto atrae interesados, crearé un repositorio en GitHub (es accesible desde la web) con un nombre aleatorio que puede que sea el definitivo o no (probablemente no).
¿Para que arquitectura desarrollaremos?
Personalmente yo prefiero empezar con la arquitectura x86 (del 80386 para arriba), ya que es la que la mayoría de las computadoras actuales posee y el código compilado para x86 puede ser ejecutado en x86_64, la otra arquitectura "popular" (en realidad la más popular es armhf, pero estamos hablando de computadoras, no de sistemas embebidos ni celulares ).
¿Y el bootloader?
La idea principal del proyecto no es crear un bootloader, pero si alguno desea desarrollar uno ¡adelante!.
¿Qué pasará con los estándares?
Por ahí en el foro hay gente muy preocupada con el tema, así que acá va una respuesta corta y concisa: Siempre que sea posible deberíamos cumplir con los estándares POSIX (lo que no significa que el proyecto se convierta en una distribución GNU/Linux).
Y bueno, hasta acá con mi propuesta, espero atraer desarrolladores, interesados o futuros usuarios. Cualquier aporte u opinión será bien recibido/a.
P.D.: Pronto empezaré a publicar código que tengo por ahí guardado sobre el tema.
Enlaces de interés:
https://wiki.osdev.org/
http://www.osdever.net/
https://github.com/aarroyoc/next-divel
http://www.jamesmolloy.co.uk/
http://www.brokenthorn.com/Resources/
https://www.tutorialspoint.com/operating_system/