Título: Hacer un programa en C que se ejecute sin SO Publicado por: n1sen en 19 Noviembre 2017, 00:17 am Duda no resuelta, y de paso idea abandonada :-( Pero si saben como responder, aganlo igual me sirve
Pues eso, esa es mi duda como lo dice el titulo. En VirtualBox logre arrancar con un "bootloader" que programe en assembler, seguiendo una guia que encontre en internet. El problema es que viendo la guia entera, terminas con mas de 3000 lineas de codigo programadas en assembler, solo para recibir comandos y leer el teclado, algo que en cualquier lenguaje como C puedes hacerlo con algo de 200 lineas o menos. Asi que la duda seria como compilar un programa en C a un .iso. Nota, el "bootloader" programado en assembler que bootea la maquina debe estar si o si en el mismo .iso o no arranca la maquina. Asi que en teoria, el "bootloader" debe tener una forma de llamar a ese codigo programado en C que leeria y recibiria comandos. Aca les dejo el codigo del "bootloader" que hice: Código
(https://i.imgur.com/q0eNV4D.png) Como ven, muestra en pantalla la cadena "Hola mundo!" y arranca la pc, y lo mejor, se ejecuta directamente en el procesador y la BIOS La funcion de leer el teclado y recibir comandos, seria hacerlo en C, si lo hacemos en assembler... ya saben. Si no me entienden mandemen un PM (mensaje privado) Saludos PD: Estoy en Linux Mint, nasm como ensamblador de asm. ah, y los comandos para convertir el codigo en un archivo .img: Código: nasm bootloader.asm -o bootloader.bin Código: dd if=/dev/zero of=floppy.img bs=1024 count=1440 Solo funciona para Linux, en Windows, no tengo idea como se haria PD2: Lei por ahi en una pagina de StackOverflow que alguien dijo que "tecnicamente cualquier programa que se ejecute sin SO es un SO". El texto original estaba en ingles Título: Re: Hacer un programa en C que se ejecute sin SO Publicado por: engel lex en 19 Noviembre 2017, 00:27 am nunca lo he intentado, sin embargo he visto que se pueden usar las librerías standard porque están hechas con este fin...
sin embargo creo que es mejor opción usar el kernel de linux y trabajar sobre el, así te ahorras escribir todas las operaciones de IO, manejo de tareas, memoria, etc... puedes intentar con linux from scratch, que te da un ambiente booteaable 0 de linux Título: Re: Hacer un programa en C que se ejecute sin SO Publicado por: n1sen en 19 Noviembre 2017, 00:37 am Si, pero seria dificil, ya que en si compilar algo de esa embergadura como Linux tardaria mucho, mas peor, mi pc es una papa de solo 2GB de ram... Mi PC no podria compilar eso.
En cambio, si hago lo que intento sabre como funciona perfectamente, ya que yo mismo lo cree, le podria añadir lo que quisiese a diferencia de usar algo ya hecho que no conozco como funciona, terminaria rompiendo todo. Aunque si no logro avanzar en esto, lo abandonare y quedara como un curioso proyecto mio... :o Se que hacer algo como un kernel es dificil. Saludos Título: Re: Hacer un programa en C que se ejecute sin SO Publicado por: engel lex en 19 Noviembre 2017, 00:42 am no, no es alterar el nucleo de linux, si, te toca compilarlo, pero lo que haces es cambiar el proceso de inicio, así que compilas una sola vez, y cambias tu proceso inicial y listo
Título: Re: Hacer un programa en C que se ejecute sin SO Publicado por: n1sen en 19 Noviembre 2017, 00:44 am vale, abandonare la idea, era muy "subrealista" lo que se me ocurrio.
Título: Re: Hacer un programa en C que se ejecute sin SO Publicado por: engel lex en 19 Noviembre 2017, 00:55 am aquí hay más opciones XD
recomiendan no intentarlo de buenas a primeras con LFS (linux from scratch) porque puede llevar a "caminos oscuros" XD https://unix.stackexchange.com/questions/122717/custom-linux-distro-that-runs-just-one-program-nothing-else (https://unix.stackexchange.com/questions/122717/custom-linux-distro-that-runs-just-one-program-nothing-else) |