La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4515 - RUTINAS EN EL SECTOR DE BOTEO DEL DISCO
Autor:  Rodrigo López
Hola amigos!

Necesito saber que debo hacer para almacenar una rutina pequeña en el sector de boteo del disco, para que ésta se cargue cuando se inicia el sistema.
Sé que hay muchos programadores expertísimos en la webdelprogramador, así que les agradecería mucho que me ayudaran alumbrándome con sus conocimientos.
Tengo esta inquitud desde que me leí el libro de Andrew Tanenbaum de sistemas operativos (donde presenta al sistema operativo MINIX, en el que se basó LINUX en sus comienzos), y ahora me dió por querer hacer un pequeño núcleo... (vamos a ver si lo logro).
Desde ya, muchas gracias.
Chao!

  Respuesta:  Marco Antonio Gomez
Tienes que meter tu rutina en el primer sector del disco (pista 0, cabeza 0, sector 1).
Puede ocupar como mucho 512 bytes (pues es el tamaño del sector).
La BIOS, cuando enciendes el ordenador, mira en la unidad de 3 1/2, y lee ese sector.
Si detecta que es de arranque, lo carga en la posición de memoria 0000:7C00 (lo que puedes tener en cuenta a la hora de hacer tu rutina), y la ejecuta.
Si el sector no es de arranque, busca en el disco duro, etc.
El orden de búsqueda depende de como tengas configurada la BIOS. Si está configurada para que vaya directamente al disco duro, pasará del disco...

¿Y cómo sabe la BIOS cuando un sector es de arranque y cuando no? Mirando los dos últimos bytes del sector.
Si los dos últimos bytes contienen el valor "55AA", la BIOS interpreta que el sector es de arranque, y lo ejecuta.

Resumiendo: tienes que hacer un programa en ensamblador que ocupe como mucho 512 bytes, donde los dos últimos no forman parte del programa, y contienen "55AA".
Luego los grabas en el primer sector del disco, y ya lo tienes.

El arranque de un sistema operativo lo que hace en esos 512 bytes, es localizar en el disco donde está el código para arrancar el sistema (que ocupa más de 512 bytes), para montar el sistema de ficheros, el gestor de memoria, etc.

Una cosa interesante es cargar un sector de arranque de un sistema operativo y desensamblarlo para ver como funciona.
Si quieres el del MS-DOS explicado, pidemelo en "[email protected]", y te mando un fichero explicativo que hicimos mi hermano y yo hace algún tiempo.

Espero que te sirva!