¡Creemos un sistema operativo!

Iniciado por Alvarito050506, 9 Diciembre 2018, 01:16 AM

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

Alvarito050506

Buenos días, soy nuevo en el foro pero vengo leyendo temas acá desde hace 2 años (más o menos).
Tengo una idea de un proyecto que, por lo que leí, otros ya tuvieron y fracasaron: mi idea es crear un sistema operativo simple (nótese que utilizo esta palabra como sinónimo de "limitado" :rolleyes:).

¿A qué me refiero con "sistema operativo"?
Bueno, me refiero a:

  • Un kernel
  • Un shell con comandos built-in
  • Una API
  • Una biblioteca estándar

El orden en el que están los items es el orden de importancia que yo le doy a cada uno.

¿Puedo aclarar/especificar un poco más acerca de mi idea?
Sí, sí puedo: Mi idea es programar un microkernel que:

  • Esté programado principalmente en ANSI C (algunas partes del código requerirán ensamblador)
  • Cumpla con la especificación multiboot para poder cargarlo desde GRUB
  • Tenga un controlador VGA simple para modo texto
  • Cuente con una shell con comandos buil-in
  • Pueda cargar binarios en formato plano
  • Cuente con una API
  • Cuente con una biblioteca estándar

¿Qué nombre le pondremos al sistema?
Preguntas como esta (y relacionadas) son las que causaron que otros proyectos no hayan llegado a nada.

¿Vamos a usar Git, SVN o algo parecido?
Sí, al menos es lo que planeo hacer yo. Yo estoy bastante familiarizado con Git y GitHub así que, si el proyecto atrae interesados, crearé un repositorio en GitHub (es accesible desde la web) con un nombre aleatorio que puede que sea el definitivo o no (probablemente no).

¿Para que arquitectura desarrollaremos?
Personalmente yo prefiero empezar con la arquitectura x86 (del 80386 para arriba), ya que es la que la mayoría de las computadoras actuales posee y el código compilado para x86 puede ser ejecutado en x86_64, la otra arquitectura "popular" (en realidad la más popular es armhf, pero estamos hablando de computadoras, no de sistemas embebidos ni celulares :().

¿Y el bootloader?
La idea principal del proyecto no es crear un bootloader, pero si alguno desea desarrollar uno ¡adelante!.

¿Qué pasará con los estándares?
Por ahí en el foro hay gente muy preocupada con el tema, así que acá va una respuesta corta y concisa: Siempre que sea posible deberíamos cumplir con los estándares POSIX (lo que no significa que el proyecto se convierta en una distribución GNU/Linux).


Y bueno, hasta acá con mi propuesta, espero atraer desarrolladores, interesados o futuros usuarios. Cualquier aporte u opinión será bien recibido/a.

P.D.: Pronto empezaré a publicar código que tengo por ahí guardado sobre el tema.

Enlaces de interés:
https://wiki.osdev.org/
http://www.osdever.net/
https://github.com/aarroyoc/next-divel
http://www.jamesmolloy.co.uk/
http://www.brokenthorn.com/Resources/
https://www.tutorialspoint.com/operating_system/

branon32

Tiene buena pinta y me gustaría participar pero no se programar a bajo nivel :(
Si me recomiendan alguna página o algo para entender el lenguaje ensamblador y eso les beso la cara  :-* :rolleyes:
sit tibi terra levis

Alvarito050506

Hola @branon32, al final del primer post hay una serie de enlaces interesantes, pero son específicos de desarrollo de sistemas operativos. Acá abajo te dejo unos links sobre programación en bajo nivel general.

Apuntes de la Facultad de Ingeniería de la UBA (Universidad de Buenos Aires) sobre la programación en C a bajo nivel: http://web.fi.uba.ar/~bortega/apunte_c_a_bajo_nivel.pdf.

Página oficial de NASM (Netwide Assembler), un ensamblador con sintaxis Intel (más parecida a la del inglés): https://www.nasm.us/.

La documentación de GAS (GNU Assembler), un ensamblador con sintaxis AT&T (más díficil y parecida a la del español), que es con el que yo estoy más familiarizado y pienso usar para el proyecto: https://sourceware.org/binutils/docs-2.31/as/index.html.

Y, como no puede faltar, los links de Wikipedia en español e inglés sobre los dos últimos ensambladores:
GAS, Español: https://es.wikipedia.org/wiki/GNU_Assembler
NASM, Español: https://es.wikipedia.org/wiki/Netwide_Assembler

GAS, Inglés: https://en.wikipedia.org/wiki/GNU_Assembler
NASM, Inglés: https://en.wikipedia.org/wiki/Netwide_Assembler

manwan

Yo de mis años de niñato siempre pensé en hacer un videojuego  :P Me llevas mucha ventaja a comparación de mis ideales pasados los cuales aún no le pude dedicar el tiempo que me gustaría implementar.

Creo que el factor primordial a tener en cuenta es el Opposing-Force. Mas que las dificultades del proyecto en si o las frustraciones...creeme que cada creación mayormente requiere de papeles y de varias quejas, críticas, de todo tipo de gente etc... que solo lo hacen porque les genera satisfacción

Yo te ayudaría sino fuera que podrían surgir estas dificultades que menciono. Lo digo porque lo sé por experiencia ya que esto aparece cuando las ideas tocan la luz. Pero eso no quiere decir que no lo hagas si es lo que buscás, sino que seas consciente estas limitaciones.

Saludos y suerte en eso....  ;-)







AlbertoBSD

Yo me apunto. Podría programar algo del kernel relacionado con el acceso a archivos.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Alvarito050506

#5
Hola @manwan, creo que te vi en algún hilo relacionado por el tema hace un par de meses ¡¡Aunque el tema era desde hace años!!.

Sí, es verdad que al trabajar en equipo hay que tener paciencia, sobre todo con la gente que discute por el nombre, el logo, si va a ser de 32 o 64 bits, etc. Esa misma gente es la que cree que el sistema va a tener compatibilidad nativa con la API de win32 y interfaz gráfica mejor que X11 y no es así, para esas cosas existe GNU/Linux (y Wine  ;D).

En fin, gracias por tu apoyo.

Alvarito050506

¡Bienvenido seas @AlbertoBSD! Yo siempre me mato con el sistema de archivos. Es más, me acuerdo que hace poco diseñe un VFS que era una versión mucho más simple de FAT8 ¡y no supe como implementarlo!

Mi idea es que principalmente el kernel en sí soporte sistemas de archivos simples, como ser FAT12 o FAT16 y que quizás más adelante soporte alguno basado en indos (ext2, ext3, ext4, etc.).

Machacador

No se puede negar que Alvarito tiene un bonito pingüinito... me anoto para bautizar ese SO cuando este listo... si me aceptan como padrino...

:rolleyes: :o :rolleyes:

Saludos.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

Alvarito050506

CitarYo, @Machacador, por el poder que me concede el foro ubicado en la URL https://foro.elhacker.net, bautizo a este nuevo y limitado sistema operativo como XYZ123  ;-)
oK...  :-\

Fuera de broma ¡bienvenido a nuestro proyecto y que viva Tux!

**Aincrad**

Primero que todo: Que buena idea!

Segundo :

El fin para este S.O. ?? va a ser algo asi como un proyecto educativo de como crear un SO??