Tema destacado: Grupo de acebook de elhacker.net
Autor
|
Tema: Otra vez al ruedo: ¿hacer un SO? (Leído 6,033 veces)
|
|
SERBice
|
Habia hecho un hermoso post, pero de idiota aprete backspace fuera del area de texto y el navegador perdio todo (cargó la págian anterior) jaja.... que paja pocas ganas de escribir todo de nuevo.... Bueno, la idea es esa, hacer un SO. Esto ya se ha intentado varias veces antes y muchas más se ha hablado. Antes de que alguien venga a decir "es dificil", "mejor hagan una distro de linux", "estudien minix" o cosas similares aviso que la idea es, desde un comienzo, partir de "la nada", aprender, desarrollar y construir algo par air viendo su avance. Es MUY buena idea ver, analizar y usar fragmentos del codigo de Linux, Minix o sistemas GNU / GPL, pero solo como referencia, no es la idea hacer otra distro de un sistema existente, sino construir uno. ¿con que finalidad?: Aprender, divertirse, basicamente esas dos finalidades. Posiblemente sea un sistema Horrible, inestable, reducido,... mal hecho en muchos aspectos, pero no es la idea superar o igualar a ninguno de los sistemas existentes (ni siquiera al MS DOS  ) Me gustaria saber quien esta dispuesto a intentarlo, con entusiasmo y perseverancia, sabiendo que no sera tarea facil y que llevara mucho tiempo, si sabiendo esto aun te gusta la idea, pues bienvenido al tren. Basado en experiencias anteriores, seria bueno evitar tratar cuestiones como "¿que nombre le vamos a poner?" o "¿y el logo?"... o discutir sobre si sera grafico, consola, si tendra soporte para video en 3d y esas cosas qeu estan a AÑOS LUZ del punto actual. En este punto inicial lo que hay que lograr es: Boot desde FAT 12, 16 y 32 (floppy y pendrive/HDD), tampoco seria mala idea EXT2 o similares dada su amplia especificacion disponible. Secuencia de inicio: Boot Sector > Loader > Kernel El loader deberia, en teoria entrar al modo protegido (32bits. Aca hay que hacer una breve comprobacion de hardware), mapear la memoria, controlar interrupciones y luego cargar el kernel desde el sistema de archivos (el cual habra que detectar oportunamente si se usadan varios sistemas de archivos). El kernel se deberia de encargar de gestionar la memoria mapeada con el loader (¿convendra mapear la memoria con el kernel?... buena pregunta), proporcionar funciones apis (en lo posible compatibles con POSIX) para manejo de sistema de archivos, keyboard, puerto serial, paralelo, video (text mode inicialmente). Creo que eso es mas que suficiente para un comienzo, de hecho es mucho (BOOT SECTOR en varios sistemas de arhcivos, un loader y la carga de un kernel) El lenguaje a usar cual será? Para el boot sector, creo que no queda otra alternativa que usar ASM, la buena noticia es que tenemos buenos codigos disponibles en Linux, ReactOS, FreeDOS, MenuetOS, etc. FASM es una buena alternativa dado que permite compilar para muchas arquitecturas (x86, x64 seran los preferidos) y plataformas (windows, linux... que no usaremos, y la compilacion binaria "bruta", que si usaremos) para el Loader, el Kernel y el resto, C / C++, segun sea aplicable. Para C/C++ una buena alternativa es CodeBlocks que usa el compilador GCC y esta disponible (IDE y Compilador) para Windows y Linux, eso facilitaria las tareas de depuracion y programacion entre los interesados que tengan o queiran probar compilar/desarrollar desde diferentes sistemas. Sin mas que decir espero que alguien se sume a la idea y que podamos llegar a hacer algo presentable y no muera en el intento como ha ocurrido antes en muchos proyectos. EDIT: Aca dejo un par de links utiles, ire agregando mas con el paso del tiempo. Los pongo en el primer post por organizacion. Especificaciones de los sistemas de arhcivos FAT:
|
|
|
|
« Última modificación: 17 Febrero 2011, 23:42 por SERBice »
|
En línea
|
Asus M2N-SLI - 4GB DDR2 OCz System Elite - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition - WD 7200rpm 500GB - Asus DRW-2014L1T Asus M2N-E - 4GB DDR2 OCz System Elite - AMD Phenom II x4 945 - GeForce 8800GS 384MB Alpha Dog Edition - 4x WD CaviarBlack 1TB - Asus DRW-22B2S 
|
|
|
Khronos14
Desconectado
Mensajes: 285
A lie is a lie
|
Yo me apunto de buena gana, pero a ver en que queda la cosa  Yo creo que lo mejor es que el Kernel sea puramente x64, seguir usando x86... Hasta los netbooks de hoy en día traen procesador x64. Nasm también sería una buena opción. Saludos.
|
|
|
|
|
En línea
|
|
|
|
Anay
Desconectado
Mensajes: 11
|
Perfecto¡¡ maravilloso has puesto en un post mis ideas, todo lo que llevaba un tiempo pensando hacer. Contad conmigo, yo me apunto, aunque estoy acabando la carrera y mi tiempo sera limitado contadconmigo. Una pregunta ¿monolitico o micronucleo? Yo tenia pensado hacer un micronucleo modificado, por lomenos para que se diferencie de algo a Linux, tener software libre donde elegir. Un saludo.
|
|
|
|
|
En línea
|
|
|
|
|
SERBice
|
La idea de x64 es tentadora, pero me parece algo demasiado alto para comenzar. Todos los procesadores de 64bits son compatibles con x86, y pueden ejecutar 16, 32 y 64bits (el tio bill no hizo compatible windows x64 con aplicaciones de 16bits simplemente por capricho, podia haberlo hecho). De todas formas, queda a criterio de la mayoria del grupo si será x86 o x64, lo decidiremos en grupo, como una democracia. Nasm también sería una buena opción claro, para el boot sector, no para el SO  Por otro lado, ¿monolitico o micronucleo?... Linux es monolitico con la posibilidad de cargar modulos, Windows es monolitico hibrido. Minix es micronucleo y Mac OS X tambien es micro nucleo. A mi, personalmente me gusta mas monolitico... no me gusta mucho la idea de dejar las aplicaciones tan "libres", prefiero que el SO se encargue de todo el hardware, como linux. Corrijanme si me equivoco. micronucleo modificado, ¿a que te refieres? ¿hibrido? Bueno pues, ya somos 3, espero que mas gente se apunte, cuantos mas seamos, mejor será, de todos modos debemos organizarnos bien para que no se fragmente el grupo por diferencias de ideas.... pero eso se verá cuando seamos un grupo de mayor tamaño, hasta ahora solo somos 3, lo cual no está mal ^^
|
|
|
|
|
En línea
|
Asus M2N-SLI - 4GB DDR2 OCz System Elite - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition - WD 7200rpm 500GB - Asus DRW-2014L1T Asus M2N-E - 4GB DDR2 OCz System Elite - AMD Phenom II x4 945 - GeForce 8800GS 384MB Alpha Dog Edition - 4x WD CaviarBlack 1TB - Asus DRW-22B2S 
|
|
|
Leber
Desconectado
Mensajes: 338
"Fracta, non verba"
|
Hola, que tal.
Decirte que a mi también me interesa bastante la idea, y creo que puede estar muy bien para aprender. Respecto a monolitico o micronucleo, en mi opinion creo que es mejor que sea el so quien gestione el hardware.
La verdad es que me gustaría bastante participar.
Saludos
|
|
|
|
|
En línea
|
"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
|
|
|
|
SERBice
|
Perfecto Leber, bienvenido  He agregado unos links utiles al final del primer post. Ire agregando mas (en el primer post por cuestiones de organizacion) con el paso del tiempo y segun sea la necesidad.
|
|
|
|
|
En línea
|
Asus M2N-SLI - 4GB DDR2 OCz System Elite - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition - WD 7200rpm 500GB - Asus DRW-2014L1T Asus M2N-E - 4GB DDR2 OCz System Elite - AMD Phenom II x4 945 - GeForce 8800GS 384MB Alpha Dog Edition - 4x WD CaviarBlack 1TB - Asus DRW-22B2S 
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
Mucha suerte con el proyecto, para cualquier duda aquí estamos. Les agrego un link donde podrán encontrar bastante información sobre el tema. http://wiki.osdev.org/Main_PageSaludos
|
|
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
Anay
Desconectado
Mensajes: 11
|
Windows es micronucleo modificado (lo he estado analizando hace unos dias en sistemas por eso lo se  ) A mi me gusta mas micronucleo por el tema de que nohabra que eestar compilando todo el santo dia, pero vamos, me da igual yo lo hago por aprender, nada mas. Bueno para quien quiera irse dando ya una idea dejo el link de los manuales de los procesadores Intel: http://www.intel.com/products/processor/manuals/index.htmEstaría bien estandarizar los programas que vamos a usar, yo trabajare sobre Windows asi que que haya para ambos SO please 
|
|
|
|
« Última modificación: 18 Febrero 2011, 09:35 por Anay »
|
En línea
|
|
|
|
|
SERBice
|
Windows es micronucleo modificado (lo he estado analizando hace unos dias en sistemas por eso lo se  ) A mi me gusta mas micronucleo por el tema de que nohabra que eestar compilando todo el santo dia, pero vamos, me da igual yo lo hago por aprender, nada mas. Bueno, por lo de compilar todo el dia, no creo que sea problema... no sera (al menos no en sus inicios) como el kernel linux que necesita de mucho tiempo para compilar. Por otra parte, Windows NT es un monolitico modificado, y no al reves. De todas formas, no deja de ser un nucleo hibrido. Modo núcleo: Tiene acceso total a la memoria del sistema y los dispositivos externos. Los núcleos de los sistemas operativos de esta línea son todos conocidos como núcleos híbridos, aunque hay que aclarar que este término está en discusión ya que este núcleo es esencialmente un núcleo monolítico que está estructurado al estilo de un micronúcleo. La arquitectura dentro del modo núcleo se compone de lo siguiente:[1] 1.Un núcleo híbrido. 2.Una Capa de Abstracción de Hardware (HAL). 3.Controladores o drivers. 4.Executive: Sobre el cual son implementados todos los servicios de alto nivel.
Estaría bien estandarizar los programas que vamos a usar, yo trabajare sobre Windows asi que que haya para ambos SO please  Como dije en el primer post, FASM o NASM para el boot sector (Disponible para Windows y Linux) y CodeBlocks (IDE para C/C++ con el compilador GCC, disponible para Windows y Linux). Luego pondre unos links de interes en el primer post, mas los que han aportado. 
|
|
|
|
|
En línea
|
Asus M2N-SLI - 4GB DDR2 OCz System Elite - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition - WD 7200rpm 500GB - Asus DRW-2014L1T Asus M2N-E - 4GB DDR2 OCz System Elite - AMD Phenom II x4 945 - GeForce 8800GS 384MB Alpha Dog Edition - 4x WD CaviarBlack 1TB - Asus DRW-22B2S 
|
|
|
ace332
Desconectado
Mensajes: 66
|
Buenas, me gustaria formar parte del proyecto PD: No se mucho (casi nada  ) sobre como hacer un SO pero me gustaría aprender..
|
|
|
|
|
En línea
|
|
|
|
RON06
Desconectado
Mensajes: 32
Aprendiz
|
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 
|
|
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 285
A lie is a lie
|
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.
|
|
|
|
|
En línea
|
|
|
|
|
SERBice
|
requiere 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. 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.
|
|
|
|
|
En línea
|
Asus M2N-SLI - 4GB DDR2 OCz System Elite - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition - WD 7200rpm 500GB - Asus DRW-2014L1T Asus M2N-E - 4GB DDR2 OCz System Elite - AMD Phenom II x4 945 - GeForce 8800GS 384MB Alpha Dog Edition - 4x WD CaviarBlack 1TB - Asus DRW-22B2S 
|
|
|
mauriciodelos
Desconectado
Mensajes: 24
/*Nada*/
|
Me parece genial la idea. Brindo mis pocos conocimientos a este humilde emprendimiento, ayudar en lo que se pueda.
|
|
|
|
|
En línea
|
El fanatismo es la máxima estupidez humana.
|
|
|
|
Dr.Hacker++
|
Jajaja yo podria hacer minijuegos para el SO xDD con SDL...
|
|
|
|
|
En línea
|
|
|
|
|
|