Otra vez al ruedo: ¿hacer un SO?

Iniciado por SERBice, 17 Febrero 2011, 10:56 AM

0 Miembros y 1 Visitante están viendo este tema.

RON06

Hola a todos!!

A mi también me gustaría contribuir en un proyecto como este, pero reconozco que es algo que requiere muchos conocimientos, tiempo y dedicación.

Además es un proyecto bastante ambicioso y difícil de realizar.

Yo básicamente en lo que puedo ayudar es en la programación en C++, aunque esto no es suficiente :( y además supongo que se necesita un nivel elevado y de momento no lo tengo.

Saludos  ::)

Khronos14

Hola, creo que de momento lo primero sería que SERBice (puesto que es el creador del post y de la idea) creara una cuenta en algún repositorio de código (codegoogle, sourceforge). De esta manera podríamos colaborar todos, subiendo nuestros aportes.

Estuve pensando en el tema del bootloader y lo mejor es cargar nuestro kernel desde una imagen .iso. Cargar el kernel desde un .img es muy sencillo pero cuando pasa los 1440KB hay que portar el código para que se cargué desde una .iso. Creo que lo más conveniente es usar Grub y para crear la iso utilizar mkisofs desde consola (funciona en Windows y en GNU/Linux).

Mañana subiré un amago de kernel para que escriba algo en pantalla.

Saludos.

SERBice

Cita de: RON06 en 19 Febrero 2011, 13:46 PMrequiere muchos conocimientos, tiempo y dedicación.

Además es un proyecto bastante ambicioso y difícil de realizar.

Requiere conocimientos, tiempo y dedicacion, por supuesto.

Ambicioso?, eso es relativo. como dije antes, no se pretende competir con nada ni nadie, ni siquiera con MS-DOS. La idea es aprender y lograr hacer algo razonablemente estable y operativo, por mas limitado que sea.


Cita de: Khronos14 en 19 Febrero 2011, 15:37 PM
Hola, creo que de momento lo primero sería que SERBice (puesto que es el creador del post y de la idea) creara una cuenta en algún repositorio de código (codegoogle, sourceforge). De esta manera podríamos colaborar todos, subiendo nuestros aportes.

Estuve pensando en el tema del bootloader y lo mejor es cargar nuestro kernel desde una imagen .iso. Cargar el kernel desde un .img es muy sencillo pero cuando pasa los 1440KB hay que portar el código para que se cargué desde una .iso. Creo que lo más conveniente es usar Grub y para crear la iso utilizar mkisofs desde consola (funciona en Windows y en GNU/Linux).

Mañana subiré un amago de kernel para que escriba algo en pantalla.

Saludos.


Muchas veces (en otros threads y proyectos) se ha discutido sobre si construir un bootloader o usar grub, lilo o alguno similar.

La idea del proyecto es hacer un So desde lo mas abajo posible, lo cual incluye el boot sector, bootstrap (bootloader) y luego el kernel. De momento iremos pasoa  paso, BootSector y BootLoader, luego nos preocuparemos por el kernel.

para hacer la secuencia boot necesitamos, minimamente, soportar FAT12/16, para de este modo leer los arhcivos que iran ejecutandose secuencialmente (Boot Sect > Boot Loader > Kernel > Drivers), de otro modo no podriamos leer nada.

En cuanto a lo del repositorio, hace varios dias estuve evaluando las diferentes alternativas y tengo pensado hacer un repositorio.

Luego le echare un ojo a codegoogle... ¿alguien sabe si codegoogle tiene SVN o algun sistema similar?


Solo como cierre de este mensaje: Recuerden que la idea es aprender, desarrollar y lograr hacer algo como grupo. No se pretende hacer algo de altisimo nivel con GUI... no es la idea competir o asemejarse a NT, Linux ni a DOS, sino hacer un simple SO (que probablemente crezca con el paso del tiempo y el aporte de la gente).

Yo soy partidario de VER y usar las ideas y fragmentos de codigos de otros proyectos (como GRUB, Linux, ReactOS, Wine -para soportar soft windows-, especificaciones coff y elf, etc), pero siempre desarrollando un modelo propio, aun cuando este no sea la mejor implementacion, pero la idea es hacer algo propio de este grupo, no hacer copy/paste.

mauriciodelos

Me parece genial la idea. Brindo mis pocos conocimientos a este humilde emprendimiento, ayudar en lo que se pueda.
El fanatismo es la máxima estupidez humana.

anonimo12121

Jajaja yo podria hacer minijuegos para el SO xDD con SDL...
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

gotenx

Cita de: Xafirot en 20 Febrero 2011, 13:29 PM
Jajaja yo podria hacer minijuegos para el SO xDD con SDL...
Dudo que puedas usar librerias  :laugh:
En cuanto al S.O. es una buena idea, hacerlo entre todos, en cierto foro del que no voy a decir el nombre un usuario del que tampoco voy a decir el nombre esta trabajando en un S.O. llamado Luxur. Ya le ha incluido incluso una Interfaz Grafica (Simulada y con colorines, nada de GUIs).
Lo que quiero decir con esto, es que no es una idea tan descabellada, que si se tienen los conocimientos y las ganas de hacerlo se puede lograr.
Por cierto ¿Vas a usar POSIX o algo por el estilo o todo desde 0 ?

D4RIO

Hi again boys,

Hoy me puse a curiosear por el foro, y veo esto. Como saben, tengo un poco de code de BootSector, pero no tiene nada relacionado a carga del kernel ni sistema de archivos.

En mi opinión, si alguien tiene la documentación de lo necesario para bootear desde GRUB es lo ideal, sino está el boot de FreeBSD que está bien armado.

Se debería abarcar C desde el principio, con esto quiero decir que podría usarse el código de Minix hasta el seteo del main() de INIT. Después el Kernel y lo demás se van diferenciando.

Si va a ser un proyecto para aprender, divertirse y joder un poco, hagámoslo seguro y bien friki. Los microkernels son para que el usuario cargue cosas en caliente. Podemos hacer un monolítico y diferenciar bien la kernel-land para hacer que el sistema completo sea caprichoso.

Bueno, acá tienen a alguien para ANSI C, ensamblador, algo de x86 y organizacion.

Por cierto, sigue mi invitación a que se use GIT. Lo estoy usando en la empresa, para los proyectos que me toca llevar, y la verdad es que GIT hace la vida más fácil. Ya portaré mi lenguaje (aún gestandose en C) a este nuevo SO cuando se pueda.

Saludos!
OpenBSDFreeBSD

Khronos14

Al final, me retrasé un día en publicar este amago de kernel. Como ya dije utiliza Grub como bootloader y carga un pequeño kernel en C.
Utilicé como tutorial: http://www.osdever.net/bkerndev/Docs/basickernel.htm

Me ayudó muchísimo y conseguí crear una ISO booteable que mostrara esto:



Lamentablemente, solo se puede compilar desde GNU/Linux aunque el manual está hecho para Windows no fui capaz de compilarlo en Windows: ¡me falla el linker!
Mi idea era tener 2 scripts: 1 .bat y un .sh y poder compilarlo tanto en Windows como en GNU/Linux.

Nitro OS no es el nombre definitivo del kernel  ;D, fue una tontería que se me ocurrió. La imagen está tomada desde mi netbook con Ubuntu netbook 10.10, mientras tenía manuales abiertos en mi pc Windows  :xD


/*
* Nitro OS kernel
*
*/

#include "inc/types.h"
#include "inc/video.h"

void NitroOS (ULONG magic, ULONG addr)
{
InitVgaMode();
WriteLine("Kernel name: Nitro OS\n");
WriteLine("Prueba de un Kernel cargado desde Grub para elhacker.net\n\n");
WriteLine("Fdo: Khronos\n");
   for (;;);
}


Aquí os dejo todo el código fuente, con la ISO ya lista por si queréis probarla.
http://www.multiupload.com/E12IIORG3K

Creo que lo mejor es que se cree un repositorio para ir subiendo nuestros aportes, porque andar subiéndolo a un servidor de descargas es un coñazo para todos. También, si alguien es capaz de compilarlo desde Windows, se agradecería mucho su aporte.

Saludos.

Riki_89D

Una idea genialisima,me apunto yo tambien,me interesa muchisimo este tema sobre los S.O


saludos

D4RIO

Tiren un nombre y creo un proyecto en GitHub.

¿Alguien más que esté familiarizado con el flujo de desarrollo distribuído clásico de GIT con parches y redes de confianza?  De otra forma puedo encargarme de la administración de esta parte (al menos por ahora).

También se necesitarán maintainers. Al inicio basta con que el kernel pueda correr el proceso INIT, así que el planificador de tareas no necesita capacidad de planificar. Hay que ver qué partes se desarrollan, y en mi opinión, el code de FreeBSD es siempre una buena referencia si no se sabe que hacer.

Por ahora me parece buena idea compilarlo en LINUX, ya que al fin y al cabo, si se implementa POSIX usaremos un Shell UNIX y Makefiles.

Por cierto, soy partidario de documentar y llevar bien armado el diseño antes de meterse a hacer código. Prefiero un thread de 50 mails para decantar en una solución concreta y correcta de un problema, antes que 10 veces modificar lo mismo por picar código.

Se aceptan nombresss y documentos. De otra forma esto va a quedar en lo mismo que los anteriores.
OpenBSDFreeBSD