Otra vez al ruedo: ¿hacer un SO?

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

0 Miembros y 4 Visitantes están viendo este tema.

Khronos14

Anay nadie habló de hacer una distribución Linux, no se de donde sacas eso. Si leyeras el post entero y vieras el código fuente que subí, sabrías que esa "cosa" (porque no es un kernel ni es nada) lo único en lo que se parece a una distro es que usa GRUB.

Lo de la posible implementación de POSIX daría compatibilidad con aplicaciones *NIX, pero no es definitivo, quedan años para llegar a algo como eso.

Saludos.

RyogiShiki

#31
Hola la verdad esque ahora tengo demasiado tiempo libre, ando de NEET y llevo siguiendo este hilo un tiempo, y me interesa el proyecto, me interesa participar en el. Ahora en este punto en mi opinión si se implementa el booteo desde GRUB nos estamos saltando una parte importante y divertida! vamos, que como se ha dicho no competimos con nadie, y hasta donde veo el tiempo no es problema. Es por eso  que invito a la creación de forma primitiva del bootstrap, que sinceramente hacer que bootee un binario en 80386 no es muy dificil, tal vez lo dificil y que no se como hacer es cargar desde ese binario el Kernel, pero vamos con calma, no aceleremos.

Lo que sabemos:
Los requisitos mínimos para un bootstrap: binario de tamaño 512 bytes, ni uno más ni uno menos. La posición de carga del binario en 07C00h, Terminación en la posición 0AA55h y con solo esto ya es suficiente para hacer que la BIOS bootee el binario creado desde NASM, ahora habria que implementar el resto del bootstrap para hacer la carga.


[ORG 7C00h]                        ; Posicion de inicio de booteo

main:   jmp main                   ; Ciclo
times 512-($-$$)-2 db 0            ; Codigo de 512 bytes
dw 0AA55h                          ; fin de posición para booteo


Este código es suficiente para que bootee:
Código (bash) [Seleccionar]
nasm -f bin archivo.nasm -o boot.bin
y hacemos:
qemu boot.bin

y si la salida es parecida a esta:
Starting SeaBIOS (version 0.5.1-20100616_333654-volta)

Booting from Hard Disk...

Entonces sabremos que ha booteado con exito.

Lo próximo optimizar el bootstrap entrar en modo protegido y cargar un ejecutable a modo de Kernel

Espero que sigamos en el desarrollo del bootstrap.
Saludos


D4RIO

Al grano con todo esto:

1. Si quieren hacer el boot para un SO, nadie lo impidió ni lo impedirá, pueden hacer uno para este mismo sistema mientras aun soportamos GRUB.
2. Pensar en implementar un standard como POSIX NO es pensar en armar un LINUX, es simplemente soportar unos ciertos parámetros que nos permiten compilar cientos de aplicaciones para nuestro SO. Sin que esto haga que el kernel sea el mismo.
3. LINUX NO ES MONOLITICO. Lo fue hace muchos años, pero conceptualmente la carga de kernel modules no es un comportamiento monolítico.


gankutsuo: Si deseas más info, yo tengo un fragmento de boot que hace bastante más que eso y está documentado, si lo encuentro mañana a las 20 hs (argentina) te lo puedo mandar para que lo vayan viendo los que deseen ponerse con esta parte. Yo me apunto para ir haciendo el resto, paso del boot.


Khronos14: Me tome la libertad de ponerle 'Mythos' por ahora. En la documentacion hay un documento que explica porqué me parece flexible. Pensa en los nombres de las releases: 'mythos cracken', 'mythos thor', los aplicativos de gestion, etc... es flexible. Si te gusta lo dejamos así.

Hice un repo en GITHUB. Por ahora podemos arreglarnos mandandonos los parches por mail. Si te familiarizas con las branches de git, el format-patch y el 'git am' ya estamos. Yo se los enseñe a mis compas del trabajo en unos dias y lo usamos para los proyectos actuales.

Instalate GIT en tu linux y hacete un "git clone git://github.com/D4RIO/Mythos.git". Con eso ya te bajas el repo actualizado.
Create un branch desde donde está, vas tocando lo que queres y me pasas el parche que sacas con git format-patch, o el zip completo, y yo lo agrego.

No cambie los fuentes pero hice el makefile y puse soporte para mkisofs y genisoimage. Iremos metiendo mano.

Saludos, me voy a dormir.
Happy Hacking
OpenBSDFreeBSD

Khronos14

Gankutsuo, si pones en Google Bootloader ASM tienes resultados e información para aburrir.
http://www.programmersheaven.com/download/42655/0/ZipView.aspx

Este Bootloader soporta FAT12, activa el modo protegido y carga un kernel en memoria.

xD4RIOx: me parece bien el nombre, al mediodía pruebo a instalar GIT y programaré un rato, ahora tengo clases.

Saludos.

RyogiShiki

#34
Cita de: Khronos14 en 23 Febrero 2011, 08:33 AM
Gankutsuo, si pones en Google Bootloader ASM tienes resultados e información para aburrir.
http://www.programmersheaven.com/download/42655/0/ZipView.aspx

Este Bootloader soporta FAT12, activa el modo protegido y carga un kernel en memoria.

xD4RIOx: me parece bien el nombre, al mediodía pruebo a instalar GIT y programaré un rato, ahora tengo clases.

Saludos.

Gracias xD4RIOx y Khronos 14, en realidad se cuanta información se encuentra en googe de esto, y todo lo documentado que está, los mil loaders a manera de ejemplo que andan por allí rondando y de los cuales se puede aprender mucho! La intención original del post era mostrar lo fácil que es un booteo e ASM lo interesante y pedagójico que es y lo bonito que es desarrolla uno propio, pero bueno, también entiendo sus puntos de vista y el porque quieren pasar del boot,así que estudiare un poco algunos ejemplos que tengo y los que me han pasado y sus diferentes métodos para lanzar el Kernel a ver si puedo salir con algo.

Saludos


Belial & Grimoire

hola

casualmente yo en la zona de programacion n general, pregunte sobre esto de los sistemas operativos, me gustaria saber si tambien me puedo incluirme aqui para hacer el proyecto Nitro OS, la pregunta en la otra zona es que no sabia por donde empezar, y no si se tambien pueda entrar aqui, llevo algunos años programando en C pero casi nunca lo hago en ASM, asi que no se si solo esten aceptando personas que ya sean profesionales en C y ASM

me gustaria participar porque he estado leyendo manuales de MINIX, ReactOS, descargue los codigos fuente pero no se por donde empezar a leer tanto codigo y los tutoriales dan referencia para que sirve todo, pero aqui ya vi un comienzo para mi

o van a documentar todo para seguirlos?, y mientras seguir investigando sobre MINIX y ReactOS, es que si me gustaria aprender pero bueno, espero pueda ayudar o puedan documentar todo para los que nos dio ganas de hacer esto

salu2
.                                 

D4RIO

gankutsuo: Estoy en el trabajo, por eso no puedo pasarte el mio.

Te propongo clonar el proyecto mythos y crear un branch "mythboot-dev":

Código (bash) [Seleccionar]
git clone git://github.com/D4RIO/Mythos.git
git checkout -b mythboot-dev


En este branch se puede ir haciendo el mythboot, el bootloader del sistema. De todas formas usamos GRUB y el stage2 eltorito para quemar imagenes de CD y probarlas, y siempre se dara la posibilidad de instalar con GRUB, como lo dan otros sistemas. El loader es, como dijimos, por puro hobbie de hacerlo (que me parece perfecto).

Ya esta hecho un grupo de google en:

  http://groups.google.com/group/mythos-devgroup

Donde tienen el link (a la derecha) para solicitar la invitacion al grupo. Esto es para impedir que se suscriban esos bots infelices que nos amargan el desarrollo.

Supongo que entenderán que contemos con moderación de los cambios en la rama 'master'. Antes de que el codigo sea incluido debe estar bien formateado, correctamente identado, comentado, ser comprensible, estar documentado, etc, etc... según normas que definiremos entre todos.

Para enviar, proponer, rechazar o aceptar un parche se encuentra la lista, donde discutiremos y les daremos soporte sobre cómo hacer las cosas. Con el tiempo estabilizaremos flujos y costumbres y nos iremos haciendo camino al andar.

Saludos, los espero por la lista. Recuerden que el proyecto es de todos, todos lo hacemos posible, y es mi deseo que todos esten contentos con el desarrollo. No estaremos siempre de acuerdo en todo, pero nos las arreglaremos para construir.

PD: Cualquier duda sobre como trabajar de forma distribuida usando GIT me la preguntan, iremos armando documentos de referencia dentro del repositorio. Todos contaran con una mano de ayuda y todos daran una mano a quien puedan. Entre todos lograremos avanzar.


Belial & Grimoire:
Seras bienvenido, siempre hay algo en lo que se puede colaborar. El kernel en sí contara con algunas partes en ASM, pero siempre que sea posible, usaremos ANSI C. Lo que conozcas sirve, tus propuestas sirven y tus ideas se tendran en cuenta como las de todos.
La documentacion sera el fruto de las ganas de cada uno y espero que haya suficiente. Cualquiera tiene que ser capaz de entender cómo fuimos desarrollando Mythos, porque al fin y al cabo formara parte de la historia del OS.
Nos veremos, apuntate en la lista y clona el repo.
OpenBSDFreeBSD

SERBice

Cita de: Anay en 22 Febrero 2011, 23:23 PM
Usar GRID, ya pensando en POSIX, y ¡como no¡¡ monolotico..
Yo creía que ibamos ha hacer un proyecto nuevo y para aprender no un Linux más, para eso es mejor compilar una distro personalizada y nada mas.
Yo si el proyecto inicial desde el mismo boot para aprender sigue en pie  a ese me apunto, para este que estais haciendo, y sin animo de ofender a nadie, hay programas que con 3 click te hacen tu distro linux personalizada.
Un saludo y mucha suerte en vuestro proyecto.

La idea orignal era (por que veo que la cambiaron) hacer un boot, un loader y un inicio de kernel. MONOLITICO, cortito, simple y sin implementaciones POSIX o soporte para ejecutables ELF, PE o lo que se les ocurra. Era una idea SIMPLE y BASICA, para que todos aprendan desde CERO.


Como dije antes, no iba a faltar quien diga que es otra distro mas, o que hagamos una distro... claro ejemplo es esto.

Cabe destacar que tanto Linux como Windows (NT) son MONOLITICOS hibridos y que la unica diferencia (a grandes rasgos) es que son monoliticos con la capacidad de cargar modulos. No obstante, NO ME INTERESA discutir esto, no vine a discutir sobre como esta hecho tal o cual sistema o a ver quien la tiene mas larga (quien escuche serrat entendera esto :P)

Cita de: gankutsuo en 23 Febrero 2011, 00:45 AM
Hola la verdad esque ahora tengo demasiado tiempo libre, ando de NEET y llevo siguiendo este hilo un tiempo, y me interesa el proyecto, me interesa participar en el. Ahora en este punto en mi opinión si se implementa el booteo desde GRUB nos estamos saltando una parte importante y divertida! vamos, que como se ha dicho no competimos con nadie, y hasta donde veo el tiempo no es problema. Es por eso  que invito a la creación de forma primitiva del bootstrap, que sinceramente hacer que bootee un binario en 80386 no es muy dificil, tal vez lo dificil y que no se como hacer es cargar desde ese binario el Kernel, pero vamos con calma, no aceleremos.

Esa es la idea basica y principal, y por la que cree el thread e invite a la comunidad, pero ha sido cambiada por dos personas.


Esto es simple, yo ya vi fracasar en este mismo foro un proyecto POR LAS MISMAS COSAS que estan discutiendo ahora y xD4RIOx lo sabe mejor que nadie....


Ya me sonaba conocido el nombre (http://foro.elhacker.net/programacion_general/creando_el_sistema_operativo-t175134.0.html;msg1126746#msg1126746).


Voy a ser concreto, si siguen con la pesima idea de GRUB, POSIX, y todas esas implementaciones que estan a AÑOS LUZ de, basicamente NADA, yo me abro de esto.


La idea no es usar GRUB, ni usar POSIX, es simplemente hacer un Boot Sector, luego un loader y un kernel, en ese orden, sin saltarse nada. Y otra parte fundamental de la idea es QUE SEA PESIMO, pero que sirva de aprendizaje para todos.

No se pretende soporte PE, ELF, posix, grub, nada de eso... para eso ya hay cosas hechas, a ver si lo entienden!.


Dejen de llevar la idea inicial, simple y basica para cualquier lado, saltarse etapas y complejizarla. Lean el primer post del thread y razonen. Si quieren GRUB y un kernel, retomen el "ReadyOS", proyecto que "destruyeron" con estas mismas ideas y dejaron en la nada.


xD4RIOx, vos esperas que tus mismas ideas, planteos y decisiones que NO FUNCIONARON en el otro proyecto lo hagan aca? ¿acaso no aprendiste nada?...


Bueno, si siguen en esta misma direccion, yo me voy ya que no era mi idea y ya vi lo que pasa con estas ideas, planteos y si se toma esta direccion.... nadie aprende nada y un puñado de personas que sabe un poco (solo un poco) mas que el resto toma el control del proyecto, cambian la idea principal, desvian la tematica, luego lo abandonan y todo queda en la nada.

Al que le interesa la idea SIMPLE y BASICA inicial, me avisa y vemos si hacemos algo partiendo de esa idea.

Saludos.

Anay

SerBice veo que mis palabras fueron malinterpretadas pero basicamente lo que trate de decir en solo un renglón es lo que tu has puesto aquí, yoestoy de acuerdo contigo y a tu proyecto me uno sin duda alguna, aunque mis conocimientos son bien escasos.

D4RIO

Dear SERBice:

Perdón la tardanza, vos querés aprender a hacer un boot y el inicio de un kernel monolítico, llamemosle idea A. Mis "ideas, planteos y decisiones" se resumen en que a mi no me importa tanto la parte del boot, sino el kernel en sí. Aplicar POSIX se resume en ir cumpliendo sus estándares conforme vamos haciendo cosa por cosa como se hace en un proyecto organizado. Si te copa la idea A entonces adelante, nadie te priva de ello, pero no hagas vanos intentos de decir que los proyectos anteriores fracasaron por mis ideas, eso es tonto desde el planteo.

El proyecto del Sistema quedó dormido nuevamente, no sin que yo haga todo el intento porque la gente proponga algo. El gran problema es que nadie propone nada, y cada uno planea tener su código, tocarlo, compilarlo, etc, sin tener en cuenta lo que ITIL llamaría la gestión de configuración, para lo cual sugerí GIT porque conozco sus flujos de trabajo y los uso siempre.

Si te quieres unir y hacer el boot, eres bienvenido, quiza resucitemos el proyecto. No veo porqué tanta molestia.

http://groups.google.com/group/mythos-devgroup
OpenBSDFreeBSD