elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Octubre 2008, 21:48  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderadores: Hendrix, E0N)
| | |-+  creando el sistema operativo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ir Abajo Imprimir
Autor Tema: creando el sistema operativo  (Leído 16259 veces)
kefren

Desconectado Desconectado

Mensajes: 413


Qué sabrá un burro de música clásica...


Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #60 en: 07 Agosto 2007, 01:24 »

Yo optaría por GRUB, pero lo que decidan ustedes, a mi me da igual, coincido con DarkSigma de que por lo pronto es mejor GRUB, mas adelante uno propio.

SaluDOS
En línea

mukiman

Conectado Conectado

Mensajes: 351



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #61 en: 07 Agosto 2007, 01:25 »

pues la verdad, esque como bien dices (serbice), algunos han optao por elegir el grub, y otros crear uno propio,

No vamos a elegir lo que mas te convenga a ti,  por eso citaba a que pusieran mas opiniones para comenzar a hacer lo que les guste a todos.
En línea

SERBice

Desconectado Desconectado

Mensajes: 891



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #62 en: 07 Agosto 2007, 03:15 »

pues la verdad, esque como bien dices (serbice), algunos han optao por elegir el grub, y otros crear uno propio,

No vamos a elegir lo que mas te convenga a ti,  por eso citaba a que pusieran mas opiniones para comenzar a hacer lo que les guste a todos.

me parece insultante que pongas palabras en mi boca permanentemente, y sucede es qeu van varias veces qeu dices "no haremos lo que tu queires" o "no haremos lo que a ti te convenga".

Quiero que te quede claro que a mi no me quita el sueño lo que hagan, yo simplemente sugiero como todos los demas, y la verdad no veo porque estas tan ensañado con la idea de que yo queiro hacer tal o cual cosa e imponer mis ideas, si verdaderamente hubieras leido todos los post, y si lo haces de forma comprensiva, siempre estuve a favor de una democracia, con desiciones consencuadas por todos.

En fin, no entiendo porque esto:
Citar
No vamos a elegir lo que mas te convenga a ti

mira, como conveniencia, y.... verdaderamente si miro lo que me conviene no hago nada, sigo usando un sistema operativo de 300 euros y pagando solo el DVD virgen, es decir, a mi como conveniente es mejor que otro se mate programando por mi y luego yo usar su software sin pagarle nada (puntualemnte hablo de mi Wndows Vista).... asi que la verdad no entiendo lo que te traes contra mi.

Yo no estaria aqui si no tuviera la idea de colaborar mutuamente con todos, hombro a hombro como ya lo he dicho antes; asi pues, te pido por favor que dejes de poner palabras en mi boca y hacer creer que yo quier imponer tal o cual idea, procedimiento o codigo.
« Última modificación: 07 Agosto 2007, 03:19 por SERBice » En línea

Estrenando firma (Gracias Artikhacker):

Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T


DarkSigma

Desconectado Desconectado

Mensajes: 331


Nothing is Impossible


Ver Perfil
Re: creando el sistema operativo
« Respuesta #63 en: 07 Agosto 2007, 03:45 »

Aver vamos a poner algo de orden aqui... por un lado la idea aqui no es que se tenga un superkernel que la nasa muere por tener para que se pelen por la autoria ni se trata de una caceria de brujas por eso existen dos post uno anterior que se lleno de pleitos y este que empieza a madurar, asi que para cualquier discucion en buena o mala onda al otro post cualquier duda, (de estas abundan jajaja) aporte sugerencia nuevo miembro colaboracion economica :P o algo asi pues remitirse aqui...

Es enserio muchachos siempre va ha haber divergencias y problemas, el dia que no los haya es que estoy en otro foro por error jajaja pero no mesclemos los temas espero estos sean los ultimos como de aclaraciones, problemas, disculpas, etc para eso esta el otro hilo...

Son el unico de grupo de los que por mucho tiempo ha soñado con la idea de hacer un OS y tras mucha critica decidio hacerlo, muchos dijero lo mismo con mas conocimiento, mas experimentados y con mayores capacidades pero solo ustedes hasta ahora se reunieron para hacerlo y lo estan haciendo por eso necesitan olvidarse de las diferencias y avanzar, los que no saben ASM aprendan que no es dificil, los que no saben C aprendan que sera de mucha necesidad en kernel, los que sepan algo de programacion son bienvenidos a apoyar a los que no lo dominen y asi 2 novatos no hace un experto pero pienzan mejor.

Ahora si centrandonos en el tema:

Bueno mi posicion con grub va asi: no podemos ignorar que una gran fuerza en el mundo de los OS es grub (lilo, XOSL, etc) ya que gracias al avance de estos es posible pasar de la barrera de los 8gb que desde 0 tomaria mucho alcanzar (no es imposible :S lean mi texto bajo la imagen...) por eso la idea basica del kernel debe ser:

desarrollado desde 0 con base en ASM para su boot, con C intrinseco para avanzar en el desarrollo de capas de abstraccion y las api propias del sistema, luego empezar a levantar con algun lenguaje propio (tambien es posible...), donde:

El boot debe cumplir (siendo realistas) compatibilidad con grub porque si bien es cierto tendremos control del arranque de forma nativa seguiremos atados a los 8 GB, si pasamos de los 8GB (particion logica) ya estamos en carrera de verdad asi que...

El desarrollo del boot debe contemplar los header expuestos y los 32 bits necesarios para que "incluso" grub puesa lanzarlo.

De grub como es GNU podemos revisar su fuente y analizarlo para comprender sus "kernel" "module" y adaptarnos a ello...

Cuando sea publica una mini version operable del kernel se tendra que probar y les repito que sacrificar una particion primaria es muy preciado para un beta, gracia a grub se rompe esa posibilidad sinembargo de grub solo tenemos que agradecer la posibilidad de avanzar "la barrera" el resto es obra y gracia de los desarrolladores

Ya se analizo la posibilidad de tener un "kernel" selectivo ya que tenemos las posibilidades de probarlo en diferentes arquitecturas y adaptar el "modulo" segun se vaya probando en diferentes arquitectura (remitirse a solo x86, no contemplar aun las x86_64 ni las x64 para eso vayan a ver a MenuetOS ahi veran que el manejo es diferente) entonces se propone que el kernel se diseñe basado en modulos para poder implementarlo, de esto tenemos el ejemplo de MS DOS, FreeDOS, PizziOS que les mencionaba (no copia, aprender...) por lo que se necesita por ahora un boot capaz de lanzar un kernel monolitico... solo necesitamos eso por ahora...

El kernel es quien (por ahora) debera analizar antes de bootear propiamente dicho sobre "que" va ha correr, ya vimos un ejemplon de esto cuando se pueda alcanzar una Shell, se procedera a desmembrar para modularizar el modulo de reconocimiento para ir implementandolo con las arquitecturas que se disponga

Ademas, se necesita como minimo (lo digo de verdad porque es lo que hay ahora y donde se probara...) el set de instrucciones basicas para un 386 que usara el kernel para asi segun se implemente se compare y se enriquesca el "procesadores.inc" espero se pueda lograr eso, ademas se necesita un modelo de boot para trabajar en orden, y un modelo de monokernel para ir trabajandolo... Se necesita decidir de una ves en que variante de ASM se va ha trabajar, yo propongo al FASM pero lo someto a votacion cualquiera es bienvenido, ASM es ASM al final... Y por ultimo revisar los Links que se vayan Agregando con info o code para empezar en conjunto...

OK ?

Entonces muchachos revisen el PizziOS y el MS DOS (no el OS sino el boot... que es muy bueno, lo unico bueno XD) y mientras reviso el DexOS aver que se puede usar de su politica revisen aquello...
« Última modificación: 07 Agosto 2007, 03:49 por DarkSigma » En línea



SERBice

Desconectado Desconectado

Mensajes: 891



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #64 en: 07 Agosto 2007, 04:09 »

ASM a usa: Voto por FASM dado que tiene soporte hoy en dia, es facild e uasr por su sintaxis (ASM es ASM, pero tiene pequeños cambios), y compila en multiples formatos.

El boot de DOS es bueno si, el problema es que tiene parte del mismo escrita en hexadecimal (a proposito apra que no sea copiado)

Como primera medida, estoy de aceurdo con DarkSigma, hace falta u kernel que cnotrole mas de 8GB de HD, adicionalmente sugiero qe se puedan controlar como minimo 2GB de ram (fisicos, no paginado), yo tengo hardware como par aprobar lo de la memoria.

Además hasy qeu tene en claro que se debe dar soprote para todos los formatos FAT, y de ser osible NTFS, Raise y Ext#

En cuanto al lenguaje de desarrollo del kernel, personalmente, a pesar de saber que es mas dificil, prefiro qeu se ahga el kernel en ASM completamente, y sugiero esta alternativa.

Si el kernel se desarrollara en C o C con ASM intercalado, seria mas lento, aunque poco, pero todo suma, y es conveniente que la base del sistema sea lo más rápida y estable para que el SO sea bueno.

En principio creo que podría realizarse el SO para correr en arquitecturas de 16bits; y posteriormente, cuando "nos quede corta" la arquitectura o cuando el SO este suficientement maduro ar apasar a modo protegido cambiamos el use16 a use32 en el FASM y listo. De este modo, en las primera etapas y versiones de so, est podria probarse en mas ordenadores (como mi 286.. jeje, este jueves armo u pentium 166 apra rpobar el SO ene sa tmb, asiq eu estariamos hablando de 5 ordenadores en los que yo podria probar e SO de primera mano.).....

en cuanto al tema de las API POSIX, la verdad estoy "en bolas" com quein dice, no tengo la menor idea de com crear un archivo que exporte funciones tal como lo hace un DLL en wndows (un dll si se hacer)..... asi que si alguein puede hechar un balde de agua sobr este tema estare encantado.

otra suegrencia, y quizas este "volando" muy lejos, seria bueno compatibiliadd con aplicaciones de DOS y Windows, pr las de DOS no creo que haya mayor problema dado que son binarios simples que se cargan en 100h, asi qe esto se puede hacer, per en cuanto a un exe ("MZ"), bueno, este sopongo yo que es algo mas complicado y ni hablar si es u exe de wndows con llamadas a las apis.... posiblemente haya que implementar algun emulador, para esto seria util estudiar el WinE.

Bueno, me despido por el momento y aclaro, apra que despues no lo tomen como que soy un dictador jaja y lo digo por "algunos"..... TODO LO DICHO SON SIMPLES OPINIONES E IDEAS TOTALMENT PRESCINDIBLES. OBVIAMENTE NO VAA DECIR "PERSCINDAMOS DE ESTO PORQUE SI", SINO QUE SERIA COHERENTE EXPLICAR Y FNDAMENTAR EL MOTIVO DEL RECHAZO O ACEPTACION SEGUN SEA EL CASO.

Saludos.
En línea

Estrenando firma (Gracias Artikhacker):

Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T


DarkSigma

Desconectado Desconectado

Mensajes: 331


Nothing is Impossible


Ver Perfil
Re: creando el sistema operativo
« Respuesta #65 en: 07 Agosto 2007, 04:29 »

Bueno ya se va avanzando entonces son 2 a favor del FASM si alguien de algun otro foro que sea lea esto sepa razon para no usar FASM o porque usar otro bienvenida sea la opinion

Ahora veamos, entonces por eso expuse el uso de grub "mientras" se desarrolla el kernel que por su propio boot alcance mas de los 8GB asi que pues mientras no se tenga una base para empezar ha hacerse de una particion primaria para probar, se puede usar maquina virtual pero no se podra hacer mucho con eso (necesitamos errores reales para ver las interrupciones reales) bueno yo cuento con algunos AMD de 32 bits y 64 bits asi que por ese lado voy viendo el porte a x64 y x86_64 no puedo afirmar aun pero puedo tener acceso a un UltraSparc para darse una de de los otros "mundos" pero bueno---

NTFS no lo toquemos aun, como no existe manual alguno del manejo de sis i-nodos ni de sus directivas (miren el sufrimiento de los chicos de FUSE) centremonos primero en FAT y Raiser ya que de los Ext es mejor no mirar los Ext2 sino mirar defrente los Ext3 y 4 existe mucha info de ellos y el cambio del 2 a 3 ha sido mucho a nivel codigo como para readaptar luego...

Yo soy del favor de hacerlo en ASM con C intrinseco porque (ahi viene lo de las API) asi podremos preparar luego las primeras apis de desarrollo y poder desarrollar los modulos con C y ASM, es cierto y no lo niego en asboluto se tendra una perdida de hasta 1 mb de memoria cuando se alance cierto tamaño y 1024 bytes pues son 1024 BYTES !! pero es a favor del desarrollo. el problema del Puro ASM es que nos quedamos en el compilador nativo, ese es el problema de MenuetOS que no puedes extender un framework ya que ASM tiene un limite cuando se intenta subirle de nivel pero por ahora pues si empezar con lo basico en ASM el C por donde se ha de empezar es para hacer el primer Shell del sistema por eso decia modularizarlo...

Mi propuesta es:

Boot - FASM
Segunda Etapa de Boot - FASM (analisis y preparacion para kernel) (analizar grub para eso o sino el bootsector de DOS que son las cosas que se tiene a la mano)
Kernel (Core) - FASM
Kernel (Modulos) - FASM + C
Kernel (Shell) - C + ASM
Kernel (Manejador de Interrupciones) - FASM
Kernel (PreCompilador) - C
Kernel (Primera API de desarrollo) - C
Primera capa de abstraccion - C
Resto a discucion...

Sobre la API POSIX, Minix de Tanembaun tiene mucha info (hay un PDF en la red pero yo prefiero mi libro jajaja) se puede usar como guia pero eso se ve despues...

y para los Binarios DOS tenemos al FreeDOS y su compatibilidad asi que pediremos consejo a la ballenita... para los binarios windows de 16 bits el source de wine es un dios jajaja pero para los 32 bits ya tendremos que recursearla mas por eso andaba ojeando un post de como inyectar codigo a los ejecutables y se me ocurrio una idea (burla permitida :p) el sistema este no es windows verdad ? no es linux tampoco ? no es Unix ? no es minix ? entonces que es ?... Ha no saben :D ? yo tampoco asi que poque tendriamos llegado su momento que regirnos a la api de windows :D podemos usar la base de wine para portar la api basica y diseñar un inyector que trabaje en memoria y le inyecte la rutina a un MZ para soportar nuestra propia API, juego sucio ? si puede ser jajaja pero ya Marmota lo probo cuando creo a PUPE y revoluciono la idea de trabajar en memoria asi que Nothing is impossible ;)

Entonces bueno poco a poco me va interesando mas el proyecto a medida que aparece mas codigo de a pocos, ya hay dos desarrolladores ASM tras mio interesados asi que tenemos una base para el kernel, ojala pueda con otra personita medio loka esta haciendo lo mismo y vemos si logramos algo tubonitrado, les suena SkyOS ? revisenlo y su historia de el hablo...

Entonces espero en algun tiempo sea vea un boot o las ideas para desarrollarlo y pues a cualquiera que no le importe ser molestado un rato por seguir una locura bienvenido sea para apoyar ;)
En línea



D1e6o!

Desconectado Desconectado

Mensajes: 133



Ver Perfil
Re: creando el sistema operativo
« Respuesta #66 en: 07 Agosto 2007, 04:52 »

Buenas gente... aca estoy de nuevo con todo esto...

Haber si puedo ayudar con esto... El tema de usar grub o lilo: Si eso viene a mi primer sugerencia de estudiar boot loaders... me refería al método en sí de crear un programa independiente del S.O. No creo que sea el momento de pensar si lo vamos a usar o no. Estoy pensando en algunas diagramaciones y demás... No es necesario por el momento pensar si usar grub o lilo porque los dos hacen lo mismo. En modo protegido... deberemos cargarlo nosotros al S.O. Estoy en busca de algún manual de arquitecturas de instrucciones de ibm compatible, ya que vamos a tener que usarlas para iniciar el kernel... y entenderlas si o si. COn respecto a usar instrucciones de pentium o 486, les doy mi opinión: hagamoslo con las instrucciones básicas que de 386 y compatibles así nos vamos a ayudar entre todos... xq sino va a haber muchas disputas sobre instrucciones... si en definitiva son muy parecidas las de pentium con amd pero solo cambia algún detalle................. (algo así pero no quiero complicar ni aburrir)

Para cargar el kernel... deberíamos crear un pequeño programa en asm... (no es nada complicado) que nos permita cargar mediante el un programa en memoria. como ven eso no tiene muchas complicaciones, lo que sí las tiene es implementar un sistema de archivos. obviamente que si no está el mismo... como podemos traer un programa a memoria si no está diagramado?

No se si me explico... Entonces... ahora es el tiempo de las interrupciones... Cual es el vector de interrupciones?.. donde se aloja? tengo entendido que es en la posición 0000000h... bueno esos son los temas que me preocupan en este momento. Estoy compilando algo.. pero no me dio el tiempo... ya estoy con las pruebas mezclando asm con c como había prometido... y como mover mi programa a los primeros sectores del disco para que los cargue.. y los ejecute..!
Estoy perdido... je en este momento ya que estoy compilando escribiendo buscando info :S mas tarde sigo el post... necesito reiniciar en linux para hacer unas pruebas saludos [intenté sacar algunas dudas... o opiniones... muy buenas ideas de todos..! sigamos así..!]

« Última modificación: 07 Agosto 2007, 04:54 por diegoar » En línea
DarkSigma

Desconectado Desconectado

Mensajes: 331


Nothing is Impossible


Ver Perfil
Re: creando el sistema operativo
« Respuesta #67 en: 07 Agosto 2007, 05:24 »

Assembler 80x86 :P - http://www.jegerlehner.ch/intel/index_es.html

Wikipedia (Intel 80386 ) - http://es.wikipedia.org/wiki/Intel_80386

Intel 386 Manuals - http://www.x86.org/intel.doc/386manuals.htm

Intel x86 (Importante) - http://www.x86.org/

Util de Binarios y x86 - http://www.microsym.com/content/index.php?pid=4&id=25

Intel 386 - http://www.intel.com/design/intarch/intel386/docs_386.htm

FS - http://www.govannom.org/modules.php?name=News&file=article&sid=554

Interrupciones - http://pantera.itch.edu.mx:8080/apacheco/expo/view.jsp?file=asm4

Añadiria mas info pero jaja no duermo hace mas de 72 hora seguidas jajaja y ya empiezo a ver guapo a mi monitor jaja asi que por ahora voy ha descanzar, y que he estado haciendo ? a estas aluras ya no se jajaja hasta hace unas horas trabajando con un ordenador a lo SigmaSistem :p
En línea



SERBice

Desconectado Desconectado

Mensajes: 891



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #68 en: 07 Agosto 2007, 06:44 »

Buenas gente... aca estoy de nuevo con todo esto...

Haber si puedo ayudar con esto... El tema de usar grub o lilo: Si eso viene a mi primer sugerencia de estudiar boot loaders... me refería al método en sí de crear un programa independiente del S.O. No creo que sea el momento de pensar si lo vamos a usar o no. Estoy pensando en algunas diagramaciones y demás... No es necesario por el momento pensar si usar grub o lilo porque los dos hacen lo mismo. En modo protegido... deberemos cargarlo nosotros al S.O. Estoy en busca de algún manual de arquitecturas de instrucciones de ibm compatible, ya que vamos a tener que usarlas para iniciar el kernel... y entenderlas si o si. COn respecto a usar instrucciones de pentium o 486, les doy mi opinión: hagamoslo con las instrucciones básicas que de 386 y compatibles así nos vamos a ayudar entre todos... xq sino va a haber muchas disputas sobre instrucciones... si en definitiva son muy parecidas las de pentium con amd pero solo cambia algún detalle................. (algo así pero no quiero complicar ni aburrir)

Para cargar el kernel... deberíamos crear un pequeño programa en asm... (no es nada complicado) que nos permita cargar mediante el un programa en memoria. como ven eso no tiene muchas complicaciones, lo que sí las tiene es implementar un sistema de archivos. obviamente que si no está el mismo... como podemos traer un programa a memoria si no está diagramado?

No se si me explico... Entonces... ahora es el tiempo de las interrupciones... Cual es el vector de interrupciones?.. donde se aloja? tengo entendido que es en la posición 0000000h... bueno esos son los temas que me preocupan en este momento. Estoy compilando algo.. pero no me dio el tiempo... ya estoy con las pruebas mezclando asm con c como había prometido... y como mover mi programa a los primeros sectores del disco para que los cargue.. y los ejecute..!
Estoy perdido... je en este momento ya que estoy compilando escribiendo buscando info :S mas tarde sigo el post... necesito reiniciar en linux para hacer unas pruebas saludos [intenté sacar algunas dudas... o opiniones... muy buenas ideas de todos..! sigamos así..!]



creo que el booteo debeari dividirse en 2 etapas, x86 y i386, la primera, compatible cno todos los 80x86 seria la encargada de detectar el micro, y si es inferir a 386 da un mensaje y se sale, caso cnotrario apsa a la segunda etapa.

alg asi: boot sector > boot.sys (comprueba hardware, micro, memoria extendida, etc) > kernel.sys (si se cumplieron los requerimientos de hardware)

pd: espero qe te sirva el material que te pase por msn
En línea

Estrenando firma (Gracias Artikhacker):

Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T


DarkSigma

Desconectado Desconectado

Mensajes: 331


Nothing is Impossible


Ver Perfil
Re: creando el sistema operativo
« Respuesta #69 en: 07 Agosto 2007, 07:00 »

El booteo es un proceso unico de solo uno  instantes en la primera etapa y un momento mas en la segunda (ya acordamos superar a grub :p) pero el kernel en si debera realizar un segundo tipo de booteo ya no llamado asi sino digamosle lo que se conoce INIT, ya hablamos de un primitivo Init...

Serbice, INIT es un modulo que precisamente se encarga de lo que mencionas antes de lanzar a memoria el kernel en si prepara el "ambiente" segun arquitectura y ram disponible
En línea



SERBice

Desconectado Desconectado

Mensajes: 891



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #70 en: 07 Agosto 2007, 07:04 »

claro, pero yo decia que el boot.sys 8asi me gustaria q se llame) ahga eso, y que si "aprueba" cargue el kernel.sys (o como quieran llamarlo).
de esta forma, la sintaxis del sector de booteo y el boot.sys seria para 80x86 y e kernel directamente 386, sni tener q andar mesclando snitaxis de instrucciones en un mismo prog seria mas facil para detectar errors asbriamos en que etapa esta mas facilmente
En línea

Estrenando firma (Gracias Artikhacker):

Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T


DarkSigma

Desconectado Desconectado

Mensajes: 331


Nothing is Impossible


Ver Perfil
Re: creando el sistema operativo
« Respuesta #71 en: 07 Agosto 2007, 07:28 »

por eso aver...

1) Boot (propiamente dicho) de solo 512 bytes
2) Segunda etapa de boot (recomiendo no usar extensiones) pero seria el boot.sys
3) Kernel
4)...

1) Boot (propiamente dicho) de solo 512 bytes

Este es solo un "superpuntero" este no hara gran cosa no se puede con 512 bytes mas que infectar jajaja

2) Segunda Etapa de Boot

Aqui viene la magia :p aqui aparece el concepto de INIT ahora lo explico, INIT es un modulo del kernel lanzado por el mismo kernel en las primeras faces para prepararle el camino, este INIT (no confundir con kernel, revisar interrupciones en sistemas monoliticos porque asi se coporta) detiene un momento la carga mientras se encarga de "aprender" sobre el hardware en que se encuentra que es lo que quieres, este INIT contempla todo 80x86 porque si detecta que es un 286 por ejemplo o un 186 por ahora que diga: "hola estoy en un [arquitectura]" para probar teroria de analisis de boot.

Una ves que este INIT sepa donde esta y el resto de hardware continua la carga hacia otro modulo llamado CPU donde ya se empieza a operar con estos datos como a segun la arquitectura cargar al kernel como se deba

Entonces, INIT es quien debe saber todas las arquitecturas donde se opera y el kernel debe ser un 386 potenciado de modo que si INIT dice: Houston estamos en un .386 este opere sin problemas, si le dice Houston estamos en un .186, kernel responda: "abort mision" pero... si INIT le dice: Houston estamos en un .486, kernel opere como 386 apoyado en un conjunto de ordenes "posibles" para .486 que se manejan en un .INC aparte

Entonces me explico:

Tenemos un Boot.ASM  (Estapa 1)
Tenemos un Boot.INIT  (Etapa 2)
Tenemos un Kernel.sys (Kernel)

Tenemos un Procesadores.inc (jajaja no me gusto como suena)
Tenemos un CPU.inc (instrucciones posibles para arquitecturas superioes a 386)
y podriamos tener un Error.inc (para manejar casis en que se tope con problemas o arquitecturas menores)

Asi entonces vamos moviendonos a microkernel ;)

Algun comentario, sugerencia,  bienvenido...
« Última modificación: 07 Agosto 2007, 07:30 por DarkSigma » En línea



SBlast

Desconectado Desconectado

Mensajes: 18


Amante de los Bytes...XD


Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #72 en: 07 Agosto 2007, 22:59 »

hola a todos espero que esten bien  ;D
encontre este tutorial que puede servirnos :

BOOTLOADER HOLA MUNDO
=====================

Empecemos por ver el BL del tutorial anterior:

;///////////////////////////////////////////////////////////////////////;

org 0x7C00
use16

inicio:

   jmp $

times 510-($-inicio)  db 0
dw 0xaa55

;///////////////////////////////////////////////////////////////////////;

Ya hemos indicado al compilador que el BL será cargado por el BIOS en la
locación de memoria 0x7C00:

   org   0x7C00

Ahora alinearemos el segmento de datos (DS) en:

   0x7C00:0x0000

ya que nuestro segmento de código (CS) ya está alineado lo único que
necesitamos hacer es copiar en DS el valor de CS. Para hacerlo utilizamos
la pila:

   push   cs
   pop   ds

Pudimos haber hecho lo mismo de esta forma:

   xor   ax,ax
   mov   ds,ax

EL resultado es el mismo.

Ya que nuestro BL pondrá en pantalla un "Hola Mundo" necesitamos un
procedimiento para lograrlo, el procediemiento lo llamaremos "print" y
recibirá como argumento el mensaje que queremos poner en pantalla, ejemplo:

   mov   si,hola

El procedimiento es este:

;///////////////////////////////////////////////////////////////////////;
print:

   lodsb         ; Cargamos el caracter de DS:SI en AL
   or   al,al      ; Hacemos un OR al registro AL
   jz    .fin_print   ; Terminamos si es cero
   mov   ah,0x0E      ; Poner caracter (parametro int 0x10)
   int   0x10         ; BIOS VIDEO
   jmp   print      ; Siguiente caracter

.fin_print:

   ret            ; termina el procedimiento y regresamos
;///////////////////////////////////////////////////////////////////////;

Este procedimiento utiliza el interruptor 0x10 de la BIOS para poner los
caracteres en pantalla.

Nuestro mensaje estará definido de esta manera:

   msg db " HOLA MUNDO!",0

El cero al final indica donde termina la cadena. Ahora para llamar a nuestro
procedimiento utilizamos:

   call   print

El código de nuestro BL Hola Mundo quedará entonces de esta manera:

;///////////////////////////////////////////////////////////////////////;

org 0x7C00
use16

;-----------------------------; INICIO

inicio:

   xor      ax,ax      ; AX = 0
   mov      ds,ax      ; DS = 0
   mov      si,msg      ; SI apunta a msg
   call      print      ; Llamamos al procedimiento print

   jmp  $

;-----------------------------; PRINT
print:

   lodsb            ; Cargamos el caracter de DS:SI en AL
   or   al,al         ; Hacemos un OR al registro AL
   jz    .fin_print      ; Terminamos si es cero
   mov   ah,0x0E         ; Poner caracter (parametro int 0x10)
   int   0x10            ; BIOS VIDEO
   jmp   print         ; Siguiente caracter

.fin_print:

   ret            ; termina el procedimiento y regresamos

;-----------------------------; CONSTANTES

   msg   db   " HOLA MUNDO!",0     

;-----------------------------; FIRMA

times 510- ($-inicio)  db 0
dw 0xaa55

;///////////////////////////////////////////////////////////////////////;

COPILANDO HOLA MUNDO
====================

Listo! Ahora deberás copiar este código en un archivo y llamarlo "boot.asm",
el nombre puede ser cualquiera, luego de guardar el documento puedes
compilarlo con FASM de esta manera:

   fasm boot.asm

FASM creará un archivo llamado "boot.bin", ese es un archivo binario que
contiene nuestro BL.

PONIENDO EL BL EN UN FLOPPY (WINDOWS)
=====================================

Para poder probar tu BL deberás disponer de un floppy, si utilizas Windows
necesitarás el programa PartCopy que puedes conseguir en:

   http://my.execpc.com/~geezer/johnfine/pcopy02.zip

luego de bajar el programa puedes copiar el BL en el primer sector del floppy
de esta forma:

   pcopy boot.bin 0 200 -f0

Si no quieres utilizar PartCopy también puedes hacer lo mismo con el programa
DEBUG que trae Windows de esta manera:

   C:\DEBUG.EXE boot.bin
      -W 100 0 0 1
      -Q
   C:\

La "W" significa escribir (write), el número 1 al final significa la cantidad
de sectores que se copiarán. Puedes escribir "?" para ver la ayuda del programa.

Debes tener cuidado al utilizar DEBUG ya que puedes equivocarte y borrar datos
importantes del disco duro y dejar inutilizable tu Windows.

Listo!! Ahora puedes reiniciar tu computadora con el floppy dentro y ver el
mensaje Hola Mundo en tu pantalla, como hemos utilizado un loop infinito
necesitarás reiniciarla para terminar.

PONIENDO EL BL EN UN FLOPPY (LINUX)
===================================

En linux luego de compilar necesitas abrir un terminal en el folder en donde se
encuentra tu archivo "boot.bin" y escribir:

   dd if=boot.bin bs=512 of=/dev/fd0

Eso copiara los 512 bytes del BL en tu floppy.

Listo!! Ahora puedes reiniciar tu computadora con el floppy dentro y ver el
mensaje Hola Mundo en tu pantalla, como hemos utilizado un loop infinito
necesitarás reiniciarla para terminar.

;-----------------------------------------------------------------------;

En los próximos tutoriales aprenderemos a:

   + Crear un BL que cargue el kernel
   + Crear nuestro Kernel "Hola Mundo!"
   + Crearemos una CLI (Interfaz de Línea de Comandos)
   + Aprenderemos a cargar programas
   + Entraremos en Modo Gráfico
   + Pondremos nuestros primeros píxeles en pantalla
   + Crearemos una interfaz gráfica sencilla
   + Crearemos algunos programas para nuestro SO
   + Aprenderemos a entrar en Modo Protegido (hasta 4GB de memoria!)
   + ETC
     los que quierean ver mas en :
http://tech.todoprogra.com/category/tutorial-nodos/
 
bueno yo opino que tambien podemos trabajar FASM
los que les interese este programa lo pueden descargar gratis en:
http://flatassembler.net/download.php

y cambiando de tema
les pregunto a todos los que estamos trabajando en el SO si quieren formar parte de un grupo de informatica que recien crearemos necesito nombres para el grupo yo tambien estoy preparando la pagina web solo faltan algunos ajustes los interesados informenme en el team todos seran iguales.
bueno a seguir trabajando buena suerte a todos ::)
En línea


Meta

Desconectado Desconectado

Mensajes: 979


Ver Perfil
Re: creando el sistema operativo
« Respuesta #73 en: 07 Agosto 2007, 23:06 »

Por lo que veo, cuesta más hacer un sistema de arranque que un virus sasser o blaster.
En línea

Meta Shell, VERSIÓN 1.2.2, Hecho con Visual C# .net Express (Gratuito)
Descargar
SERBice

Desconectado Desconectado

Mensajes: 891



Ver Perfil WWW
Re: creando el sistema operativo
« Respuesta #74 en: 07 Agosto 2007, 23:08 »

hola Blaste, mira:

1: el tuto es de l pagina de moveax, es un tuto muy simple e inservible dadoq e solo hace un hola mundo, en este mometno estamos algo mas avanzados que ese la mundo, igualmente se agradece el aporte.

2: nada de paginas pr el momento, en este foro podemos ir posetando todo lo que hacemos de forma organizaad, por el momento nada de paginas y nombres, ya hubo muchos problemas por estos temas, mejor estudia ASM, interrupciones y programacion a bajo nivel como todos estamos ahciendo y trata de hacer algo, un kernel simple, un boot loader robusto y luego nos muestra que tienes y entre los aportes de todos tomamos lo mejor y vamos construyendo algo.

PD: mientras escribia Meta posteao una respuesa, pues Meta, siempre es mas facil buscarle un bug a un sistema y voltearlo (como los viru sasser y blaster) que hacer el sistema en si mismo... un virus corre sobre un sistema ya hecho, lo usa para ejecutarse y a la vez lo daña, en cambio, un sistema corre sobre "nada" asi que hay q programarle la interaccion con todas las partesde la pc, protocolor de red, sistemas de archivos y muchas cosas.
En línea

Estrenando firma (Gracias Artikhacker):

Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T


Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats