II–PEI 09/10 ______________________________________________________________________ BIOS 3.8 – BIOS Borja Brisson Vega, Jonán Cruz Martín En este trabajo exploraremos qué es la BIOS de un computador y qué funciones realiza. Veremos cuál es el papel de la BIOS en el arranque del sistema y el manejo del hardware. También estudiaremos las tecnologías de implementación de la BIOS, su configuración, y los errores que pueden producirse en el sistema. 1. Introducción La BIOS es una parte básica de un computador compuesta por un chip que almacena configuración esencial del computador y software para manejar el hardware del computador. La BIOS es la encargada de arrancar y comprobar el sistema, así como de mantener la configuración esencial del hardware para el correcto funcionamiento y uso del sistema. Una vez realizada la comprobación y configuración del hardware, la BIOS también se ocupa de buscar el cargador de arranque en un disco de arranque, que es lo que permite cargar el sistema operativo. La configuración de la BIOS es de vital importancia, y alberga información sobre los discos de arranque, entre otras cosas. 2. Conceptos básicos sobre la BIOS La BIOS (Basic Input/Output System) consiste en un conjunto de instrucciones software de bajo nivel responsables del funcionamiento de los periféricos de un sistema informático. Estas rutinas también reciben el nombre de drivers. Cuando nació la BIOS, todos los drivers del sistema se encontraban en una ROM (memoria no volátil de sólo lectura) situada en la placa base y que era capaz de albergar en 128KB, además de todos los drivers, las rutinas del POST y el cargador del bootstrap. El POST (Power-on Self-test) se trata de un programa responsable de comprobar los dispositivos en el arranque de la máquina. El cargador del bootstrap está diseñado para cargar el sistema operativo desde disco. Este programa se busca y carga desde el primer sector de cada disco de arranque. El propósito principal de la BIOS es servir de interfaz entre el sistema operativo y el hardware del sistema. Para ello, la BIOS proporciona una interfaz estándar para el uso de los dispositivos. La BIOS permite una abstracción del sistema operativo respecto a la máquina donde se ejecuta, permitiendo así una generalización del software sin independencia del hardware. Esto es debido al diseño de software en capas, en el que una capa inferior suministra servicios a la capa superior sin conocer ésta los detalles de la capa inferior. Para ello, el sistema operativo dispone de un sistema de interrupciones software que permite conectar las peticiones de uso de periféricos con las rutinas de servicio que proporciona la BIOS. Este sistema no es más que un vector de interrupciones donde cada entrada contiene el comienzo de su rutina correspondiente. Para poder efectuar este papel la BIOS ha de cargar en memoria (RAM) todas las rutinas precargadas en la ROM junto con el sistema operativo, haciendo uso para ello del cargador del bootstrap. Esta carga en memoria RAM se hace, entre otras cosas, por su mayor capacidad y velocidad de acceso. II–PEI 09/10 ______________________________________________________________________ BIOS En la evolución de la informática se vio reflejada la escasez de memoria de la ROM, ya que el número de dispositivos aumentaba y comenzaba la tendencia de sustitución de módulos, por lo que llevó a la necesidad de permitir a la BIOS agregar nuevos drivers y actualizar los ya existentes. Para ello se introdujo la carga de drivers mediante adaptadores de tarjeta (slots) y mediante disco. En este nuevo diseño hay que diferenciar los drivers según su importancia, es decir, normalmente los drivers que no sean estrictamente necesarios durante el arranque serán cargados desde disco. Por ejemplo, el driver del disco debe de estar contenida en la ROM de la placa para poder continuar con el arranque (con el arranque del SO, entre otras cosas). Aunque ahora la BIOS se divida en tres fuentes, continúa teniendo su significado como entidad. La porción de BIOS contenida en ROM (placa base y slots) se conoce como firmware. Otras de las tendencias dentro de la BIOS ha sido el sustituir todos los drivers de 16 bits del inicio por drivers de 32 ó 64 bits procedentes de disco cargado a través del sistema operativo (los de 16 bits permanecen en la ROM y son sustituidos por el sistema operativo). 3. Arranque de la máquina Al iniciar el proceso de arranque el chipset inicia la BIOS la cual ejecuta el POST analizando todos los dispositivos del sistema. Una vez analizados la BIOS escanea los dispositivos en la búsqueda de adaptadores de tarjetas contenedoras de sus propios drivers, una vez localizadas son cargadas en memoria. Tras la detección de los drivers externos la BIOS carga sus rutinas precargadas y se dispone a cargar el sistema operativo mediante el bootstrap. Una vez cargado el sistema operativo por completo este realizará las operaciones que crea conveniente, como puede ser la carga de drivers específicos, o la sustitución de la rutinas de 16-bit iniciales por otras de 32 o 64bits. 4. Implementación y carga de la BIOS 1. Tecnología de la BIOS A lo largo de la historia se ha utilizado diferentes tecnologías en el almacenamiento de la BIOS, todas relacionadas con la arquitectura ROM. • ROM: Derivado de la arquitectura RAM con las peculiaridades de no ser volátil y que los datos almacenados no se puede modificar, al menos no de manera rápida o fácil. • PROM: Memoria programable mediante el quemado de sus fusibles, siendo esta irreversible. • EPROM: Memoria programable mediante voltajes altos respecto a los utilizados. Tiene la propiedad de ser borrado mediante la exposición a luz ultravioleta • EEPROM: Es un tipo de memoria ROM que puede ser programado, borrado y reprogramado eléctricamente, a diferencia de la EPROM. 2. Métodos de carga de la BIOS La BIOS puede cargarse a través de tres fuentes: 1. ROM de la placa base: Se encarga de cargar los drivers fundamentales para el arranque del sistema. Un ejemplo de estos es II–PEI 09/10 ______________________________________________________________________ BIOS el driver de disco, ya que sin él no puede acceder al bootstrap del sistema operativo, entre otras cosas. 2. Slots: Durante el inicio del arranque la BIOS escanea todos los slots buscando aquellos que contengan una ROM en su placa, donde almacenan su driver, y una vez localizados esta los carga en memoria. Estos drivers se consideran importantes para el arranque del sistema con los contenidos en la ROM de la placa madre, un posible caso es el driver gráfico. 3. Disco: Carga en memoria todos los drivers restantes tras la carga del sistema operativo. Este método contiene todos los drivers no estrictamente necesarios para el arranque del sistema, como puede ser los drivers de la tarjeta de sonido o de la tarjeta network. 5. Actualización de la BIOS Existen diferentes métodos para actualizar la BIOS • Sustituir completamente el dispositivo de almacenamiento de la BIOS, por una nueva BIOS almacenada en una nueva memoria ROM. Éste es el caso de las memorias ROM y PROM. • En el caso de las memorias EPROM, se reprograma el contenido de la memoria tras borrarlo con luz ultravioleta. Para esto es necesario extraer el chip. • Para la actualización de la BIOS de una memoria EEPROM no es absolutamente necesaria la extracción de ésta, ya que se puede actualizar con la simple ejecución del programa de actualización que podemos bajarnos de la página del distribuidor, por ejemplo. La seguridad de la escritura suele estar formado actualmente por un encriptado específico para cada BIOS y/o un interruptor físico que controla la escritura en la BIOS. Aunque esto es lo que habitual actualmente, hace algún tiempo, la actualización de estas memorias se realizaba mediante un disquete que contenía la actualización. Para esta actualización se solía conectar el disquete o Cd a la Flash ROM. 6. Configuración de la BIOS La BIOS necesita guardar cierta información sobre el hardware del sistema y cómo manejar dicho hardware, así como información sobre cómo arrancar el sistema e información de seguridad. La configuración de la BIOS contiene particularmente información sobre el hardware, tal como los tipos de dispositivos, su frecuencia o velocidad de operación, su capacidad de almacenamiento, etc.; y permite modificar estos valores. Para permitir la modificación de la configuración de la BIOS, existe un programa de configuración (BIOS setup program) que se puede iniciar presionando una tecla durante el POST. Dado que existe una gran variedad de opciones de configuración, éstas están organizadas en el programa de configuración mediante menús y submenús que agrupan opciones de características similares. Todas las BIOS presentan secciones comunes en su programa de configuración. Sin embargo, existen algunas opciones que son específicas de cada sistema, y que varían fundamentalmente en función del chipset. II–PEI 09/10 ______________________________________________________________________ BIOS Veamos ahora los menús y opciones más relevantes y que son comunes a todos los sistemas: • Maintenance: Permite borrar la configuración de la BIOS y muestra información de la CPU. • Main: Muestra información del sistema (versión de la BIOS, tipo y velocidad de CPU, cantidad de memoria). Permite configurar el Hyper-Threading y la corrección de errores de memoria, junto con el idioma del programa de configuración y la fecha y hora del sistema. • Advanced: Establece opciones avanzadas específicas del chipset. Permite configurar prioridades de interrupción y velocidades de operación para los buses. Configura las señales y frecuencias de la memoria. Ofrece funciones de overclocking y burn-in test. Configura los puertos de E/S y la comunicación ATA y USB. • Security: Establece contraseñas y qué tipo de acceso a la BIOS tiene un usuario. • Power: Configura la gestión de la energía y la suspensión del sistema, y eventos para despertar de suspensión. • Boot: Configura los dispositivos y el orden de arranque para arrancar un sistema operativo. • Exit: Permite salir del programa de configuración y guardar los cambios hechos. Permite guardar la configuración como “default” y restaurar la configuración por defecto. 7. BIOS Plug and Play En el pasado, instalar y configurar dispositivos en un PC requería configurar la tarjeta de expansión para seleccionar una línea de interrupción, un puerto de entrada/salida y un canal de DMA. Esto solía hacerse moviendo jumpers en la tarjeta de expansión, y para ello había que conocer los recursos libres en el sistema. Si se seleccionaba un recurso que ya estuviera en uso, había un conflicto y el sistema no arrancaba. La tecnología Plug and Play (PnP) está diseñada para evitar estas complicaciones y los posibles errores de conflicto debidos a una configuración incorrecta. La tecnología PnP tiene tres componentes principales: 1. BIOS con soporte PnP (Plug and Play BIOS) 2. Información de configuración del sistema (Extended System Configuration Data, ESCD) 3. Sistema operativo con soporte PnP La BIOS PnP inicia la configuración de las tarjetas PnP cuando se arranca el sistema. Para evitar repetir este proceso de detección y configuración con cada arranque, la BIOS guarda la información de configuración de las tarjetas en el área de ESCD (área de la memoria CMOS de la BIOS). La próxima vez que se arranque el sistema, si el hardware no ha cambiado, se usará la información del ESCD para configurar el sistema, en lugar de esta reasignando los recursos nuevamente. II–PEI 09/10 ______________________________________________________________________ BIOS Para más información sobre ESCD, consúltese [2]. Si en el siguiente arranque el hardware ha cambiado, la BIOS consultará el área de ESCD en busca de la configuración adecuada para las nuevas tarjetas, pero no la encontrará. La BIOS consultará qué recursos están libres y qué recursos son necesarios para la nueva tarjeta, y realizará la configuración pertinente. Si la BIOS es incapaz de localizar suficientes recursos disponibles, las rutinas de PnP del sistema operativo completan la tarea. Para más información sobre BIOS PnP y dispositivos PnP, consúltese [1]. 8. Mensajes de error de la BIOS Al encender la máquina, la BIOS lleva a cabo un proceso de comprobación del hardware (POST) y también se encarga de arrancar el sistema, dando paso a la carga del sistema operativo. Durante este proceso, pueden ocurrir diversidad de errores que habrán de ser notificados. Por ello, se han identificado los posibles errores y se les ha asignado un código de error a cada uno. La BIOS puede notificar un error de diferentes maneras. Usualmente lo más cómodo será mostrar un mensaje por pantalla. Sin embargo, si el error se ha producido antes de poder inicializar la tarjeta de vídeo, la BIOS tendrá que informar de dicho error de alguna otra manera. Cuando no se puede mostrar un mensaje por pantalla, la BIOS opta por reproducir un código sonoro que identifica el tipo de error. Este código sonoro consiste en una serie de pitidos de diferente duración y con un intervalo de separación temporal entre cada pitido. La otra forma que tiene la BIOS de notificar un error es almacenando el código de error en el puerto de entrada/salida que se encuentra en la dirección 80h. Este código de error se puede leer con unas tarjetas especiales (POST cards) que leen el código de error del puerto 80h y muestran dicho código en un display. Estas tarjetas se conectan a algún slot de un bus. Este tipo de comprobaciones a veces también se llaman manufacturing tests, porque este método fue pensado originalmente para detectar errores en la fabricación durante el proceso de ensamblado del sistema, donde no se dispone de una pantalla para visualizar errores. 9. Conclusiones Las ideas básicas sobre las que ha de prestar mayor atención es la compresión de la BIOS como entidad, no como un dispositivo físico, si no como todas aquellas partes, físicas o lógicas , las cuales permitan la función de esta. Además es muy importante entender la importancia de la BIOS respecto a la generalización del sistema mediante la abstracción del hardware. También es de destacar el funcionamiento y características del Plug&Play como la detección de periféricos y la posterior configuración de la BIOS. Bibliografía [1] Scott Mueller. Upgrading and Repairing PCs. Que Publishing, 2007. [2] Charles M. Kozierok. Extended System Configuration Data (ESCD). The PC Guide, 17 de abril de 2001. http://www.pcguide.com/ref/mbsys/res/pnpESCD-c.html