Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: marrison en 2 Diciembre 2013, 15:58 pm



Título: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 2 Diciembre 2013, 15:58 pm
Hola buenas, voy a adquirir una raspberry pi, y para empezar tengo un proyecto en mente, que seria crear un sistema operativo desde 0, que se adapte a mis necesidades y a la raspberry, un mini-ordenador con unas especficaciones muy bajas, por eso lo que quiero es crear mi propio so o editar una distribucion de software libre.

Digo en c porque es el lenguaje que mejor manejo.

El so que tenia pensado seria MUY simple, un escritorio, con dos menus, uno de aplicaciones y otro de lugares (al estilo ubuntu) con 6 o 7 aplicaciones preinstaladas y que en principio no se pudiesen instalar mas, solo se pudiese utilizar esas. Serian libre office (o similar si no se puede), una calculadora, audacity, gimp, openshot, un visor de imagenes y un reproductor de imagenes (todos cogidos de ubuntu, y creo software libre, asi que no habria ningun problema para utilizarlos no?) y como mucho algun juego simple como el solitario o el buscaminas, y luego un navegador, que seria la base, pensaba programar yo mismo mi propio navegador con mi propia nube, seria posible no?

Esto seria mas o menos el so, muy simple como vereis, pocas aplicaciones preinstaladas y sin opcion a mas, para evitar complicaciones y agilizar el so.

Creo que podria programar en c todo esto, pero tengo muchas dudas, nunca he programado un so, y me veo muy verde, alguna ayuda, libro o tutorial para empezar?


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: matiasnahuelheredia en 2 Diciembre 2013, 16:14 pm
no necesitas programar de cero con saber como recompilar un kernel de linux ya es suficiente.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: dato000 en 2 Diciembre 2013, 16:15 pm
todas esas aplicaciones son muy pesadas, necesitas un so para un raspberry, eso es todo.

http://www.raspbian.org/


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 2 Diciembre 2013, 16:16 pm
no necesitas programar de cero con saber como recompilar un kernel de linux ya es suficiente.

y es el kernel lo que contiene todo el escritorio y todo lo del so? o eso hay que programarlo luego?

y en que lenguaje se programa un kernel? es que en esto estoy perdido...



todas esas aplicaciones son muy pesadas, necesitas un so para un raspberry, eso es todo.

http://www.raspbian.org/

ya se que son muy pesadas, pero lo que quiero es hacerme yo mismo mi so, no quiero cojer uno ya hecho, quiero hacerlo yo adaptandolo a la raspberry para que si va en ella, vaya en los demas.

Y por eso no dejaria instalar mas, para evitar la incompatibilidad... y el gimp, el audacity y el openshot me lo estoy pensando, porque siempre viene bien pero ya tienen mas requisitos para que vayan bien... puede que esas las elimine...



no necesitas programar de cero con saber como recompilar un kernel de linux ya es suficiente.

he estado imformandome sobre compilar el kernel de ubuntu (la que uso yo, me da igual cojer otra) y he visto que hay que añadir o eliminar modulos, y me han surgido varias dudas...

la primera, como se que funcion tiene cada modulo y si debo o no borrarla (googleando?)
segunda, como hago nuevos modulos para lo que necesite?
tercera, hay un modulo que impida ( o permita y deba eliminarlo) instalar mas aplicaciones de las que yo quiera?
cuarta, con esto hago el kernel, pero luego como hago la apariencia del escritorio y de todo?
quinta, al hacer esto se quedaria la terminal de ubuntu?
y para terminar (por fin) al hacerlo se borra la distro que tengo en el ordenador o se crea una nueva en el grub?

No he entendido mucho... -.-


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: dato000 en 2 Diciembre 2013, 19:31 pm
tres palabras, y creeme que hay que saber mucho de todo, no solo de C:

Linux From Scratch


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 2 Diciembre 2013, 20:59 pm
tres palabras, y creeme que hay que saber mucho de todo, no solo de C:

Linux From Scratch

ya lo suponia, pero me gusta mucho todo esto y asi aprendo, me entretengo y hago algo util.

Al año que viene empiezo 1º de ingenieria informatica (si este curso va bien, que si) y me servira para la carrera, asi que estoy decidido a hacerlo, aunque sea aprendiendo desde 0, y aunque me dire 3 años hacerlo, no me importa, quiero hacerlo.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: dato000 en 2 Diciembre 2013, 21:04 pm
ya lo suponia, pero me gusta mucho todo esto y asi aprendo, me entretengo y hago algo util.

Al año que viene empiezo 1º de ingenieria informatica (si este curso va bien, que si) y me servira para la carrera, asi que estoy decidido a hacerlo, aunque sea aprendiendo desde 0, y aunque me dire 3 años hacerlo, no me importa, quiero hacerlo.

ohhhh amigo te tengo noticias, te tomaría mucho más.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Vaagish en 2 Diciembre 2013, 21:13 pm
Citar
Linux From Scratch
Buena info

Creo que vas a tener que empezar a darle duro a ensamblador, las primeras rutinas de un SO son en ensamblador y no hay otra,, desde ahí es donde se inicializan un montón de cosas.. (gestión de memoria, lectura de disco, etc,etc..)
Yo te recomiendo agarrar el código de el SO que hay para raspberry, y empieces por leer eso.. yo pretendo hacer lo mismo que vos, solo que lo mio va a quedar mas simple, (gráficamente hablando) quiero un SO sin escritorio, orientado para robotica..

En fin, suerte!!!


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: topomanuel en 2 Diciembre 2013, 21:32 pm
Este post no se porque, me recuerda este otro: http://foro.elhacker.net/programacion_general/iquestcomo_puedo_crear_un_so-t397496.0.html

Saludos.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Vaagish en 2 Diciembre 2013, 22:51 pm
Mmm.. no tanto,, yo pienso "tomar prestao" un linux y así safar de lo mas grueso, en realidad,, estaría haciendo un programa que funciona sobre un sistema operativo a medio terminar lo mio (lo digo porque no quiero nada de gráficos, ni escritorio, un poco retro lo mio)  :xD

Aparte no te olvides la plataforma,, simple, simple..

Saludos!


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 3 Diciembre 2013, 15:08 pm
Pues si me toma mas, mas, no hay problema...

Eso lo habia pensado, cojer el kernel o el codigo fuente de el so de raspberry (que es libre) y editarlo..

Lo que no se es como hacer para impedir instalar apps nuevas...

Si, hay temas como este, pero tengo muchas dudas y era por no reflotar ;)

De ensamblador no se nada... pero si puedo cojer esa parte de otro so me la ahorraria no? Seria cojer la parte de otro so que inicia y lee todos los componentes y todo (lo de lenguaje ensamblador) y luego a partir de uno que se ajuste a mis preferencias editar su codigo fuente a mi idea... seria posible?

siendo asi, seria ms sencillo y mas rapido no?


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Vaagish en 3 Diciembre 2013, 15:41 pm
En la practica si, es mas fácil y rápido.. pero me temo que no vas a poder modificar el kernel de linux sin saber ensamblador, o al menos entender como funciona lo mas básico.. suponete, como vas a saber donde dividir el código de linux y el tuyo? Mira que no es un solo archivo fuente.. son unos cuantos, y están casi todos "conectados"..
No es tarea fácil.. bájate el source de linux, míralo y me contas..

Suerte!


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 3 Diciembre 2013, 16:56 pm
En la practica si, es mas fácil y rápido.. pero me temo que no vas a poder modificar el kernel de linux sin saber ensamblador, o al menos entender como funciona lo mas básico.. suponete, como vas a saber donde dividir el código de linux y el tuyo? Mira que no es un solo archivo fuente.. son unos cuantos, y están casi todos "conectados"..
No es tarea fácil.. bájate el source de linux, míralo y me contas..

Suerte!


si hay que aprender ensamblador se aprende, no hay problema...

Voy a buscarlo y a ojear mas a ver... pero vamos que el so que quiero hacer seria como uno de los ya hechos para raspberry, pero con la diferencia de añadir yo las apps que quiera y que no se puedan añadir mas, ademas de cambiar un poco el aspecto grafico, aunque eso no creo que sea problema...

por eso creo que lo de compilar el kernel y todo eso en realidad me sobra... no quiero hacerlo desde 0, bueno si, me gustaria, pero me sobra con editar uno ya credo para que no se puedan instalar mas aplicaciones de las que yo ponga inicialmente.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Vaagish en 3 Diciembre 2013, 17:18 pm
Citar
si hay que aprender ensamblador se aprende, no hay problema...

Amigo, sin animo de desalentarte, pero me parece que no estas teniendo en cuenta el TIEMPO que eso lleva.. hacer un SO no es una cosa imposible, ya existe y existió gente que lo ha echo.. el problema es el tiempo que te va a llevar primero aprender todo lo básico para empezar, y cuando digo lo básico no significa poco!! Aprender ASM ya te va a llevar unos cuantos meses, y dominarle bien, bien,, como para hacer un SO, unos 2 o 3 libros a las risas!! (Por lo general libros de 500 a 700 paginas).

Me parece que estas subestimando "un poco" la cantidad de cosas que hay que aprender,, hacer un SO no es como hacer un programita en C++, es bastante mas complicado.. por eso te di la idea de ver el codigo de linux, te puede ayudar muchisimo! Pero no va a dejar de ser algo fácil de hacer,, y ahora si, ya que estas dispuesto a aprender, te recomiendo este libro de ASM

"Lenguaje ensamblador para computadoras basadas en Intel" de Kip Irvine

Con eso ya tenes para divertirte un muy buen rato!  ;D

Suerte!!


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 3 Diciembre 2013, 17:32 pm
Amigo, sin animo de desalentarte, pero me parece que no estas teniendo en cuenta el TIEMPO que eso lleva.. hacer un SO no es una cosa imposible, ya existe y existió gente que lo ha echo.. el problema es el tiempo que te va a llevar primero aprender todo lo básico para empezar, y cuando digo lo básico no significa poco!! Aprender ASM ya te va a llevar unos cuantos meses, y dominarle bien, bien,, como para hacer un SO, unos 2 o 3 libros a las risas!! (Por lo general libros de 500 a 700 paginas).

Me parece que estas subestimando "un poco" la cantidad de cosas que hay que aprender,, hacer un SO no es como hacer un programita en C++, es bastante mas complicado.. por eso te di la idea de ver el codigo de linux, te puede ayudar muchisimo! Pero no va a dejar de ser algo fácil de hacer,, y ahora si, ya que estas dispuesto a aprender, te recomiendo este libro de ASM

"Lenguaje ensamblador para computadoras basadas en Intel" de Kip Irvine

Con eso ya tenes para divertirte un muy buen rato!  ;D

Suerte!!

ya se que me llevara mucho tiempo, pero no es tiempo perdido a mi parecer, me va a servir, y me gusta asi que me entretendre...

pero de momento yo creo que editando una me sobra para la chorrada que quiero hacer... solo quiero hacer que no se puedan instalar mas aplicaciones de las que yo ponga al principio y cambiar un poco la apariencia (cuatro chorradas) y quitar toda la carroña que no me sirve para hacerlo mas "liviano" eso es todo...


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: robertofd1995 en 4 Diciembre 2013, 22:38 pm
yo te cuento mi historia , yo estoy actualmente en primero de carrera , de ing informativa de software , y en el segundo semestre o en el segundo año en el primer semestre no me acuerdo muy bien , hay una asignatura en la que tienes que crear tu propio sistema operativo , siendo un poco complejo (para eso echas todo el semestre)

a lo que iba , para poder hacer el os vas a necesitar mas cosas que saber solo c
 , a ver yo por ejemplo c todavia no he dado , vas a necesitar saber manejar mas cosas , yo de momento estoy aprendiendo java y phyton , pero se (por lo que me han contado los profesores y los compañeros ) , que hacer el os desde 0 es complicado y lleva su tiempo , asi que esperate unos años y ya te llegara el momento , aplicate en bachiller y saca buenas notas en mate y en fisica , y si quieres y te sobra tiempo dedicate a aprender java , phyton (se usa para un monton de cosas y apenas lo conocia antes , google , youtube (que es de google tambien xD)) , luego ya haras el os


PD:estudia algebra , cuando llegues a la carrera , si te toca a un profesor loco como ami vas a desearle la muerte mas de una vez


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: ivancea96 en 4 Diciembre 2013, 23:24 pm
A mi también me dio por intentar hacer un OS, pero hay que fijarse,q ue hacer desde 0 tú un Sistema Operativo, te llevará mucho tiempo.

Recuerda que no es un programa, es un "programa" donde se ejecutarán otros programas. Ahí hay muchos factores que abarcar. Desde tema drivers, dar memoria a procesos, todo lo gráfico si es que así lo quieres, y etc etc etc.

Es un buen proyecto, pero piénsatelo dos veces. Además, necesitarás una plataforma donde instalarlo y testearlo. Una partición quizás, eso ya como vieras, pero eso también llevará su tiempo.

Si te interesa empezar desde abajo, podrías probar a hacerle un OS a una Raspberry Pi. Infórmate sobre ella. Es una placa, donde se puede instalar linux fácilmente. Linux, o lo que tú le hagas.

En fin, si me equivoqué en algo, decidlo, que nunca hice un OS, ni tampoco programé para Raspberry xD


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 5 Diciembre 2013, 15:06 pm
A mi también me dio por intentar hacer un OS, pero hay que fijarse,q ue hacer desde 0 tú un Sistema Operativo, te llevará mucho tiempo.

Recuerda que no es un programa, es un "programa" donde se ejecutarán otros programas. Ahí hay muchos factores que abarcar. Desde tema drivers, dar memoria a procesos, todo lo gráfico si es que así lo quieres, y etc etc etc.

Es un buen proyecto, pero piénsatelo dos veces. Además, necesitarás una plataforma donde instalarlo y testearlo. Una partición quizás, eso ya como vieras, pero eso también llevará su tiempo.

Si te interesa empezar desde abajo, podrías probar a hacerle un OS a una Raspberry Pi. Infórmate sobre ella. Es una placa, donde se puede instalar linux fácilmente. Linux, o lo que tú le hagas.

En fin, si me equivoqué en algo, decidlo, que nunca hice un OS, ni tampoco programé para Raspberry xD

la idea es precisamente para una raspberry, y como digo no tiene porque ser desde 0, pues posiblemente me sirvan los kernels, lo que quiero es editar los aspectos graficos (escritorio mas que nada) elegir las aplicaciones que se incluiran (hechas por mi) e impedir que se instalen otras aplicaciones, no tiene porque ser desde 0, puede ser editar una distribucion de linux por ejemplo, estuve mirando suse, que se adapta bastante, me permite elegir las apps y modificar un poco el escritorio (mas bien nada, solo el fondo...) el problema es como impedir que se instalen nuevas...

yo te cuento mi historia , yo estoy actualmente en primero de carrera , de ing informativa de software , y en el segundo semestre o en el segundo año en el primer semestre no me acuerdo muy bien , hay una asignatura en la que tienes que crear tu propio sistema operativo , siendo un poco complejo (para eso echas todo el semestre)

a lo que iba , para poder hacer el os vas a necesitar mas cosas que saber solo c
 , a ver yo por ejemplo c todavia no he dado , vas a necesitar saber manejar mas cosas , yo de momento estoy aprendiendo java y phyton , pero se (por lo que me han contado los profesores y los compañeros ) , que hacer el os desde 0 es complicado y lleva su tiempo , asi que esperate unos años y ya te llegara el momento , aplicate en bachiller y saca buenas notas en mate y en fisica , y si quieres y te sobra tiempo dedicate a aprender java , phyton (se usa para un monton de cosas y apenas lo conocia antes , google , youtube (que es de google tambien xD)) , luego ya haras el os


PD:estudia algebra , cuando llegues a la carrera , si te toca a un profesor loco como ami vas a desearle la muerte mas de una vez


Java estoy aprendiendo, pero me esta costando bastante mas que c... hasta ahora se en c y basic, y aprendiendo java, pero phyton nunca me lo habia planteado...

En bachiller de momento voy bien, el algebra se me da bastante bien, por suerte.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Danyfirex en 5 Diciembre 2013, 15:42 pm
Vas a coger un código  fuente "libre" y modificar para que no puedan instalar mas aplicaciones :S ahí ya pierdes el concepto. lo estas privatizando.  :huh:

Haces un SOS no es tan fácil. se requieren años de programación. "real" no jugar con vb6  :laugh:

por ahí conozco de alguien que programo uno SOS todo en ASM le tomo varios años.


Igual suerte con el proyecto. dale duro.

saludos


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 5 Diciembre 2013, 15:48 pm
Vas a coger un código  fuente "libre" y modificar para que no puedan instalar mas aplicaciones :S ahí ya pierdes el concepto. lo estas privatizando.  :huh:

Haces un SOS no es tan fácil. se requieren años de programación. "real" no jugar con vb6  :laugh:

por ahí conozco de alguien que programo uno SOS todo en ASM le tomo varios años.


Igual suerte con el proyecto. dale duro.

saludos

no es mi idea privatizarlo ni nada por el estilo, lo unico es que mi proyecto se basaba todo en el navegador, es decir aplicaciones irian muy pocas, todo se haria con el navegador para asi agilizar el sistema, y la unica forma que se me ocurre es impidiendo instalar nuevas aplicaciones...


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: ivancea96 en 5 Diciembre 2013, 15:50 pm
Danyfirex tiene razón. Un Sistema Operativo no es un simple programa. Es un concepto muy diferente.

Programarlo en ASM... Indudable que lleve mucho tiempo jaja Pero si lo acabó, seguro que está muy bien. Ese que conoces, Danyfirex, se llama Bill o Steve? jaja


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Danyfirex en 5 Diciembre 2013, 16:04 pm
@ivancea96 jajajaja a demas de ese.

en fin si tienes tiempo pues no lo pierdas. ponte a estudiar.

aqui te dejo unas cosas a ver si de algo te sirven.

http://www.youtube.com/watch?v=6MJUGVFAXKg
' mira en la descripccion del video.

http://www.toaruos.org/

http://wiki.osdev.org/Main_Page

http://www.osdever.net/tutorials/

http://www.brokenthorn.com/Resources/OSDevIndex.html

Y bueno a leer como loco ;D  espero ver tu proyecto terminado.

saludos


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 5 Diciembre 2013, 16:45 pm
@ivancea96 jajajaja a demas de ese.

en fin si tienes tiempo pues no lo pierdas. ponte a estudiar.

aqui te dejo unas cosas a ver si de algo te sirven.

http://www.youtube.com/watch?v=6MJUGVFAXKg
' mira en la descripccion del video.

http://www.toaruos.org/

http://wiki.osdev.org/Main_Page

http://www.osdever.net/tutorials/

http://www.brokenthorn.com/Resources/OSDevIndex.html

Y bueno a leer como loco ;D  espero ver tu proyecto terminado.

saludos


Muchas gracias, tocara darle duro!

Y yo, aunque sea en un par de decadas :P


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: amchacon en 6 Diciembre 2013, 13:18 pm
En 2º de ingeniería informática das una asignatura de Sistemas operativos. Esperate para entonces.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Novadiei en 7 Diciembre 2013, 10:41 am
Soy el unico que le va a decir: Buena suerte con los drivers? :D


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: Vaagish en 7 Diciembre 2013, 16:07 pm
Citar
Soy el unico que le va a decir: Buena suerte con los drivers? :D

Si no me perdi del hilo,, es un SO para Raspberry PI,, no va a precisar de drivers que no existan..  :silbar:


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: 99071684l en 11 Febrero 2014, 07:20 am
No hagas caso a aquellos que te dicen que esta dificil, y que debes saber mucho, bah!!!, puros fracasados: http://wiki.osdev.org/ARM_RaspberryPi_Tutorial_C . Esto seguro te servirá. Saludos.


Título: Re: Programar desde 0 un sistema operativo en C
Publicado por: marrison en 16 Febrero 2014, 13:11 pm
No hagas caso a aquellos que te dicen que esta dificil, y que debes saber mucho, bah!!!, puros fracasados: http://wiki.osdev.org/ARM_RaspberryPi_Tutorial_C . Esto seguro te servirá. Saludos.

Muchisimas gracias, si que me ha servido bastante... Estaba recompilando un xubuntu, pero asi mucho mejor, que es lo que yo queria... muchas gracias!