Bueno, vamos por partes y conceptos generales (nada de codigo)
Sistema nuevo, desde cero.
Posix?: algun dia, de momento tenemos que, desde el sector se arranque se carque un loader (de unos pocos kb) y que el mismo sea capaz de pasar a modo protegido, logrando cargar un archivo grande, osea el kernel
¿por que el kernel es un archivo grande?: no lo es aun, pero si esto prospera serà, y nos encontraremos con la limitaciond e cargar un archivo de varios MB en memoria y ahi se complicará. Es mejor preeer esto desde el inicio.
Nombre: No soy partidario de empezar a decidir el nombre, el logo, y todos esos detalles que no hacen al sistema y solo son una distraccion para todos. No obstante, si insisten en ello, les propongo dos nombres. ProjectOS (o ProyectOS) y PolygonOS (o PoligonOS), ambos son un juegop de palabras, el primero (ProjectOS) significa Proyecto de Sistema Operativo, el segundo (PolygonOS) se basa en una idea mas elaborada, la misma consiste en que EN EL FUTURO el sistema será grafico (o tendra algun agregado como kde) que dibujará poligonos para construir una interface.
Considero que si se pone un nombre, debe tener algun tipo de coherencia y relacion con la idea. Sin ofender, Nitro OS suena a intento de suite stand alone de "niño hacker" recien iniciado.... suena demasiado "pomposo" y presumido. (lo digo con la mejor intension).
GRUB?: Se puede hacer que el kernel sea compatible con GRUB, no es dificil, es solo poner unos encabezados en el archivo del kernel para que GRUB pueda "entenderlo", no obstante DEBEMOS DESARROLLAR LA SECUENCIA DE INICIO DESDE CERO, para aprender bien ya que esa es la idea.
Codigo Minix / FBSD: Sirve como referencia... todos sirven, Minix, ReactOS, Linux, Menuet, FreeBSD.... incluso el nucleo de Mac OS X (Darwin) ¿sabían que es open source?, pero repito SOLO COMO REFERENCIA, no es la idea hacer un copy & paste y ya.... hay que entender la logica y funcionamiento del sistema completa, y para ello debemos ir todos juntos, paso a paso.
En cuanto a la documentacion, estoy deacuerdo. Debe documentarse en exceso, para que todos logremos entender que hace cada fragmento del sistema, en lo posible funcion por funcion (seria un exceso linea a linea).
GIT: La verdad no conozco GIT, yo uso SVN y vi que CodeGoogle lo usa, creo que seria conveniente CodeGoogle, veré si puedo crear uno.
Compilador a usar: sin dudas, GCC, es multiplataforma (Windows/Linux/MAC). Asi mismo, hay varios IDE's que trabajan con GCC, lamentablemente yo aun no logre hacer un Flat Binary (binario "puro") con Code::Blocks (IDE para GCC). Luego seguiré investigando.... otra alternativa de IDE es Dev C++.
Lenguaje: Sin dudas ANSI C dado que es el mas "nativo".
No queria dejar eso del "Juego con SDL": Amigo, eso sera MUCHO mas adelante (hablamos de años creo yo). SDL funcionaria en el sistema si se porta al mismo, no hay forma de usarla sino.
Resumire, de forma ordenada, las cosas que hay que hacer y su orden.
Boot Sector:
Uno por cada sistema de archivos, en principio:
Loader:
Programa reducido que logre:
- Pasar a modo protegido
- Esto es tema pendiente a debatir: GDT e IDT ¿en el loader o en el kernel?
- Debe ser capaz de cargar un archivo en memoria (el kernel), en lo posible de gran tamaño y luego pasarle el puntero para su ejecucion. Para hacer esto, el loader debe ser capaz de identificar el sistema de archivos desde el que se cargo, luego de detectar el sistema de archivos del que fue lanzado, debe buscar, encontrar y leer el kernel para hacer lo qeu dije antes.
Para finalizar quisiera expresar mi alegria por la gente que se ha sumado y decirles que si mantenemos una organizacion y una misma linea, lograremos llegar a buen puerto. Lo m{as importante es ir todos en el mismo sentido, y no distraernos con cosas demasiado lejanas en el tiempo (como jeugos, interfaces, drivers para dispositivos avanzados -placas graficas por ejemplo-), centremosno en iniciar el sistema, manejar la memoria e interceptar las interrupciones.
Si el so ejecutará programas, será DE A UNO, como lo hace DOS. Luego agregaremos MultiTask, no nos apuremos.
Yo me ausentare por 7 dias por razones laborales, pero luego volvere y vamos a darle con todo a esto gente. Si tienen ideas, vayan pensandolas, hagan un txt con sus ideas, analicen, pros y contras, como la implementarian?. Una descripcion lo mas detallada posible, asi todos podemos ir entendiendo nuestras ideas y debatirlas en grupo (no sean demasiado soñadores).
Nuevamente: Bienvenidos a todos y esperemos que mas gente se sume.