§1 Bootstrap
La alimentación de la fuente llega a la placa
madre y con ella al sistema completo, pero demora un tiempo en generar voltajes
estables y dentro de los parámetros de operación permisibles, por lo que el
chipset generará una señal de reset al procesador para evitar que reciba tensiones
eléctricas hasta tanto estas no se encuentren totalmente estabilizadas. Una vez
que la fuente de alimentación ha estabilizado sus voltajes de salida, enviará una
señal llamada Power Good que le
indicará a los circuitos lógicos asociados
al procesador que
le den un reset al mismo para iniciar su operación.
El procesador arranca cuando
se retira la señal de reset, pero no existe en su memoria ninguna instrucción o
dato, por lo que no puede hacer absolutamente nada. Para salvar el
obstáculo, los fabricantes incluyen en la circuitería de la placa base una
especie de instinto. Podríamos establecer un símil diciendo que es análogo
al que hace que las tortugas corran hacia el agua cuando salen del huevo en la
playa, solo que en este caso el sistema se dirige a una dirección fija de
memoria. Esta dirección apunta al comienzo del programa de carga (bootstrap) de
la BIOS.
Una vez iniciado el programa
contenido en la BIOS, su primera tarea consiste en un proceso de comprobación
del hardware, denominado POST (Power-On Self Test).
En caso de existir errores
graves, la secuencia se detiene emitiendo una serie de pitidos (eventualmente
algún mensaje en pantalla) que codifican el tipo de error encontrado. Se
adoptó el sistema de aviso mediante pitidos ("Beeps") cortos y largos,
porque en estos tempranos momentos del inicio del sistema, no existe ningún
dispositivo de salida utilizable. Por ejemplo, pantalla. La
cantidad y calidad de los test de diagnóstico varía según el fabricante y
versión del BIOS, sin que exista un estándar claro al respecto.
§2 Carga del Sistema
Una vez terminadas las verificaciones previas, la BIOS
inicia un recorrido en busca de un dispositivo donde encontrar un programa que
pueda continuar con el proceso de carga del Sistema Operativo. Este
recorrido se denomina secuencia de carga o secuencia de booteo ("Boot sequence") y su
orden puede ser establecido mediante un programa auxiliar (setup de la
BIOS). Una vez fijada, la secuencia de carga es almacenada en la memoria
de datos de la BIOS (RAM de la ROM), de forma que puede ser recordada y
utilizada la próxima vez que se reinicia el sistema.
Empezando por el final, en realidad, lo que se
necesita para cargar el Sistema Operativo es el archivo de inicio, que es un
ejecutable como WININIT.EXE (Windows Vista); NTLDR.EXE (Windows NT/2000/XP/SEVEN);
/boot/vmlinuz (Linux) etc. Tales archivos solo pueden estar en un volumen o
partición lógica, y la información básica sobre los mismos está contenida en el
primer sector de cada partición, conocido como PBR (Registro de Arranque de la
Partición). Una vez localizado y cargado,
se tiene conocimiento de su estructura y es fácil localizar el archivo
adecuado. Pero antes hay que averiguar cómo está organizada la unidad (el
disco) para saber cuántas son las particiones y por cual empezar. La estructura
lógica de las unidades está organizada de forma que el principio del ovillo se
encuentra en el primer sector físico de la unidad. En consecuencia, la BIOS
recorre los dispositivos definidos en la secuencia de carga mirando el primer
sector. En caso que no apareciera un sector adecuado en ninguna de las
unidades, aparece un mensaje:
No boot device available (no existe un
dispositivo arrancable),
o NO ROM BASIC -
System Halted (sistema parado).
En los discos duros, el primer sector físico se
denomina sector de arranque o registro maestro de carga MBR
("Master boot record"). Que además de un trozo de código MBC
("Master Boot Code – Código de arranque maestro"), contiene una tabla
MPT ("Master Partition Table – Tabla de particiones maestra")
que describe las particiones definidas en la unidad. En caso de que alguna
unidad de la secuencia de carga contenga un MBR, se carga en memoria y
se trasmite el control a su MBC.
El MBC examina la Tabla de Particiones buscando
determinar si existe una partición cargable (activa). El MBC intenta
cargar la partición primaria señalada como activa. En caso de no haber ninguna,
el proceso termina con un error; el mensaje suele ser el mismo que cuando la
BIOS no encuentra un dispositivo cargable:
No boot device
available, o el conocido
NO ROM BASIC - System Halted.
Si por el contrario existe una partición activa, el MBC se dirige a su
primer sector lógico PBR (Registro de Arranque de la
Partición) y lo carga. En lo que sigue
suponemos que se trata de una partición primaria DOS, que es el caso más
frecuente.
Nota: El
proceso seguido hasta este punto es conducido por código de 16 bits sin soporte
de ningún Sistema Operativo. El código del PBR es precisamente el primer código dependiente que
aparece. Depende del SO utilizado en el formateo de alto nivel de la partición.
En cambio el código y estructura del MBR (instalado por fdisk),
es estándar y universal.
El PBR es cargado en memoria y verificado. Pasándose entonces
el control de la ejecución a un trozo de código PBC ("Partition Boot Code") contenido en él. El PBC examina
la estructura del volumen que se está cargando para asegurar que todo está
correcto, en caso contrario el proceso se detiene en este punto con un error.
Si todo está bien, el PBC busca en el directorio raíz del volumen en
busca de los archivos del sistema operativo, que en el caso del MS-DOS son
IO.SYS, MSDOS.SYS y COMMAND.COM.
Si no se encuentran dichos archivos, el programa
mostrará un mensaje; generalmente el consabido:
Non-system
disk or disk error - Replace and
press any key when ready. Alguna gente cree que este mensaje
significa que el sistema no ha sido cargado; cuando en realidad como se ha
visto, el PBC ha sido efectivamente cargado y ejecutado, siendo él
realmente el que ha generado el mensaje cuando no ha podido encontrar los archivos
del sistema operativo.
Si los archivos del S.O. son correctos, el programa de
carga los trae a memoria y les transfiere el control; estos archivos contienen
a su vez programas que se encargan de cargar e iniciar el resto del S.O. En el
caso del MS-DOS esto significa cargar el intérprete de comandos COMMAND.COM y a
continuación leer e interpretar el contenido de los ficheros CONFIG.SYS y
AUTOEXEC.BAT. En este momento es el propio S.O. el que controla el sistema; si
se trata de Windows el proceso de carga inicia muchas más rutinas.
En realidad, los detalles de la carga del sistema
requerirían todo un libro. Pero podemos resumir que una vez encontrado el
cargador del Sistema Operativo, este toma el control del proceso que había sido
iniciado por la BIOS y continuado por los "bootstrap". Generalmente
el Sistema realiza un nuevo inventario de memoria y de los dispositivos
disponibles, y procede a cargar los controladores de dispositivos adecuados
para su manejo. Por ejemplo, impresoras, ratón y teclado. En los sistemas
personales, la última operación consiste en invocar la shell (generalmente una
interfaz gráfica) que permite al usuario controlar el Sistema y los programas
de aplicación.