viernes, 29 de agosto de 2014

Camino a Linux: o de cómo diantres meto yo eso en el computador ii: el arranque del sistema

El arranque de un computador es un proceso, en principio, bien sencillo: se proporciona electricidad y lo primero que se ejecuta es el contenido de una memoria especial, muchas veces denominada CMOS. Este contenido es la primera aplicación que se ejecuta en nuestro PC, mucho antes del sistema operativo. Es la llamada BIOS.

BIOS de Americans MegaTrends
BIOS es un acrónimo de Basic In/Out System (Sistema Básico de Entrada/Salida). Unified Extensible Firmware Interface (Interfaz Extensible y Unificada de Firmware), es la evolución actual de la BIOS, y tiene entre sus características el estar diseñada para equipos que cada vez incorporan más cosas. Nótese que para ser una Interfaz "Unificada" en realidad está bastante poco estandarizada. Muchas veces nos referimos a la BIOS/UEFI para hacer referencia tanto a uno como a otro sistema, si bien es común leer BIOS/UEFI como si el nombre apropiado para el sistema tuviese que ser aun BIOS.
Utilidad de configuración UEFI de Asrock
En ambos casos, su cometido es verificar los distintos dispositivos con los que cuenta el equipo. En los primeros tiempos del PC, su cometido era bastante básico, pero el paso del tiempo fue volviéndolo más avanzado, hasta poder configurar distintos dispositivos de distinta forma. Desde hace unos años está siendo sustituido por la UEFI (

La última función de la BIOS/UEFI es arrancar el sistema operativo del equipo, o siendo más preciso, ejecutar el sistema de arranque que permitirá inicial el sistema operativo a utilizar. La descripción de este proceso y de sus diferentes posibilidad serán el objeto de este artículo.

El proceso de arranque

Los sistemas operativos disponen de una utilidad denominada "cargador de arranque", que es la que establece los parámetros y otras consideraciones para iniciar el sistema operativo. Por regla general, además, pueden cargar uno o varios sistemas operativos, o distintas configuraciones del mismo.

 

Con BIOS 

Las BIOS tienen muchas limitaciones, y como es de esperar las limitaciones aumentan a medida que la BIOS a considerar es anterior. Un ejemplo de estas limitaciones erala absoluta incapacidad para permitir arrancar un sistema operativo  si se hallaba más allá de un punto. Los cargadores obtienen la información respecto al disco duro donde está el sistema operativo de la BIOS. Comoquiera que las BIOS podían tener problemas con los discos duros más grandes de esa época, los cargadores no podían manejar la parte del disco duro que la BIOS tampoco podía manejar. La solución a este problema consistía en crear una pequeña partición para el arranque e instalar dicho arranque en un lugar distinto del disco, lo más al principio posible.

En un momento dado, la BIOS podía aceptar que un disco tuviese una capacidad mayor que la que podía manejar: al fin y al cabo, la capacidad no era más que la suma del tamaño de todos los cilindros del disco: 1000 cilindros a 1 MB/cilindro = 1000MB. Pero eso no quiere decir que pudiese acceder a cualquier parte del mismo. Tal vez estaba diseñado para utilizar discos duros de hasta 2 GB... Los sistemas opertivos, una vez arrancados, proveían su propio soporte para discos más grandes, pero esto sólo era útil una vez arrancado el sistema operativo.

Otra limitación se refería a desde qué medios podías ejecutar un cargador de arranque. Por supuesto, antes de la popularización de las lectoras de CD lo normal era poder arrancar solamente con un disquete o con el disco duro.

Con la llegada del USB poco a poco las BIOS fueron incorporando la capacidad de arrancar desde pendrives, discos o lectoras de DVD externas... pero la forma de implementar esto podía ser muy diferente. Tengo un equipo que permite arrancar desde un pendrive, pero solamente si configuras la BIOS para que el pendrive sea utilizado como el disco duro primario; a partir de ahí, seleccionas arrancar desde ese disco y el sistema, como es de esperar, ejecuta el cargador que tengas en el pendrive.
Opciones de arranque con una BIOS

Por supuesto, el medio desde el que quieras arrancar debe de estar preparado para ello, que es una forma de decir que el cargador de arranque debe de estar almacenado en una parte del disco (CD/DVD, pendrive, etc.) donde pueda ser ejecutado por la BIOS. Una incorrecta configuración del medio, o limitaciones como la del tamaño de la partición antes mencionada harán que falle.
Menú de arranque de BIOS.
Véase el soporte para arranque desde la red o USB.

Supongamos que tienes un disco arrancable. ¿Cómo sabe la BIOS qué debe de ejecutar? bien, la BIOS no sabe nada. Una BIOS simplemente es capaz de permitir que se ejecute lo que quiera que esté en determinados lugares concretos del disco.

Tomemos por ejemplo un disco duro. En un disco duro tradicional el primer sector contiene el MBR (Master Boot Record, Registro Principal de Arranque). Está justo al comienzo del disco y se compone de dos partes: un fichero con una "tabla de particiones", que indica cómo está particionado el disco, y una aplicación genérica que lo único que hace es permitir que se ejecute el contenido del primer sector de la partición marcada como arrancable o activa. A este sector se le conoce como "Sector de Arranque", y es simplemente el primer sector de cada partición.

Por su parte, otros dispositivos pueden no disponer de un MBR, en cuyo caso simplemente se carga en memoria el contenido del sector de arranque. Precisamente la capacidad de la BIOS de cargar en memoria directamente dicho sector es lo que determina desde qué medios es capaz de arrancar.

 

Con UEFI

A diferencia de la BIOS, UEFI incorpora un mecanismo para cargar el arranque de un sistema operativo (o, al menos, su cargador). La UEFI puede ejecutar el arranque de un sistema que esté guardado en una partición especial de "tipo" EFI. En dicha partición habrá uno o varios ficheros cuyo contenido determina cómo se ejecuta el cagador de arranque del sistema operativo a utilizar.

Básicamente, al iniciar el sistema busca todas las particiones EFI disponibles; en el caso de los DVD basta con disponer de una carpeta con el contenido apropiado, siempre y cuando la grabación del DVD soporte grabar DVD arrancables para sistemas EFI. De hecho, UEFI no es capaz de arrancar el DVD de las primeras versiones de Windows 8, ya que no está grabado para esta eventualidad. En la ayuda de Microsoft puede encontrarse cómo hacer para convertir un DVD de Windows 8 en un DVD de Windows 8 arrancable en un sistema UEFI.
Ejemplo de instalación de Windows con partición EFI

Además, las BIOS incorporan un mecanismo para comprobar si el sistema operativo o su cargador son "compatibles". Sólo sii el sistema operativo está entre los admitidos por M$ podrá ejecutarse.

Además de estos problemas está el hecho de que Windows 7 no soporte particiones de tipo GPT. A diferencia de la tabla de particiones mencionadas antes, al referirnos al MBR, en GPT puedes disponer de un montón de particiones primarias. Windows 7 utilizar una suerte de híbrido, pero Windows 8 soporta correctamente GPT.

Por todo esto, la mayoría de fabricantes incluyen lo que suelen llamar "modo Legacy" y una opción para deshabilitar esta opción de "seguridad".

Si la UEFI está en "modo EFI" el menú de arranque mostrará las particiones o carpetas EFI disponibles, como se ha dicho.
Menú de arranque mixto:
Soporte UEFI y soporte
Legacy a DVD, disco duro y red
Cada línea comenzará con UEFI: y la descripción que se le da ahora a las particiones EFI según su propia nomenclatura. Si enun disco duro hay varias particiones EFI, el menú mostrará cada una de ellas; si está en "modo Legacy", mostrará los dispositivos habituales: CD/DVD, disco duro, etc.; si está en "modo compatible", esto es, con ambos activados, el menú mezclará todas las entradas disponibles. Así, por ejemplo, nuestro DVD de Linux tendrá dos entradas, una antecedida de UEFI y otra no.

No hay comentarios:

Publicar un comentario en la entrada