BIOS

Compartir Imprimir Citar
Firmware para la inicialización de hardware y servicios operativos OS
Un par de chips AMD BIOS para un ordenador Dell 310 de la década de 1980. La parte inferior muestra la ventana distinta de un chip EPROM.

En informática, BIOS (, BY-oss, -⁠ohss; Sistema básico de entrada/salida, también conocido como BIOS del sistema, ROM BIOS, BIOS ROM o PC BIOS) es un firmware utilizado para proporcionar servicios de tiempo de ejecución para sistemas operativos y programas y para realizar la inicialización del hardware durante la proceso de arranque (arranque de encendido). El firmware del BIOS viene preinstalado en una placa del sistema IBM PC o compatible con IBM PC y existe en algunos sistemas basados en UEFI para mantener la compatibilidad con los sistemas operativos que no admiten el funcionamiento nativo de UEFI. El nombre se origina en el Sistema básico de entrada/salida utilizado en el sistema operativo CP/M en 1975. Algunas empresas (como Phoenix Technologies) que buscan crear sistemas compatibles han realizado ingeniería inversa del BIOS originalmente propiedad de IBM PC. La interfaz de ese sistema original sirve como un estándar de facto.

El BIOS en las PC modernas inicializa y prueba los componentes de hardware del sistema (autoprueba de encendido) y carga un cargador de arranque desde un dispositivo de almacenamiento masivo que luego inicializa un kernel. En la era de DOS, el BIOS proporcionó llamadas de interrupción del BIOS para el teclado, la pantalla, el almacenamiento y otros dispositivos de entrada/salida (E/S) que estandarizaron una interfaz para los programas de aplicación y el sistema operativo. Los sistemas operativos más recientes no utilizan las llamadas de interrupción del BIOS después del inicio.

La mayoría de las implementaciones de BIOS están diseñadas específicamente para funcionar con una computadora en particular o un modelo de placa base, mediante la interfaz con varios dispositivos, especialmente el conjunto de chips del sistema. Originalmente, el firmware del BIOS se almacenaba en un chip ROM en la placa base de la PC. En los sistemas informáticos posteriores, el contenido del BIOS se almacena en la memoria flash para que pueda reescribirse sin quitar el chip de la placa base. Esto permite actualizaciones fáciles para el usuario final del firmware del BIOS para que se puedan agregar nuevas funciones o se puedan corregir errores, pero también crea la posibilidad de que la computadora se infecte con rootkits del BIOS. Además, una actualización del BIOS que falla podría bloquear la placa base. La última versión de Microsoft Windows que se ejecuta en PC que utilizan el firmware BIOS es Windows 10.

La interfaz de firmware extensible unificada (UEFI) es un sucesor del BIOS de PC heredado, con el objetivo de abordar sus limitaciones técnicas.

Historia

/* C P / M B A S I C I / O S T E M (B I O S)
COPYRIGHT (C) GARY A. KILDALL
JUNE, 1975 */
[...]
/* B A S I C D I S K O P E R A T I N G S Y S T E M (B D O S)
COPYRIGHT (C) GARY A. KILDALL
JUNE, 1975 */
Un extracto del BDOS. encabezado de archivo PLM en el código fuente PL/M de CP/M 1.1 o 1.2 para Lawrence Livermore Laboratories (LLL)

El término BIOS (Sistema básico de entrada/salida) fue creado por Gary Kildall y apareció por primera vez en el sistema operativo CP/M en 1975, describiendo la parte específica de la máquina de CP/M cargada durante el tiempo de arranque que interactúa directamente con el hardware. (Una máquina CP/M generalmente solo tiene un cargador de arranque simple en su ROM).

Las versiones de MS-DOS, PC DOS o DR-DOS contienen un archivo llamado "IO.SYS", "IBMBIO.COM", "IBMBIO.SYS&# 34; o "DRBIOS.SYS"; este archivo se conoce como "DOS BIOS" (también conocido como "Sistema de E/S de DOS") y contiene la parte específica del hardware de nivel inferior del sistema operativo. Junto con el "BIOS del sistema" específico del hardware pero independiente del sistema operativo subyacente, que reside en la ROM, representa el análogo al "CP/M BIOS".

Algunas empresas (como Phoenix Technologies) han realizado ingeniería inversa del BIOS que originalmente era propiedad de la PC de IBM para crear sistemas compatibles.

Con la introducción de las máquinas PS/2, IBM dividió el BIOS del sistema en partes de modo real y modo protegido. La parte de modo real estaba destinada a proporcionar compatibilidad con versiones anteriores de los sistemas operativos existentes, como DOS, y por lo tanto se denominó "CBIOS" (para "BIOS de compatibilidad"), mientras que "ABIOS" (para "BIOS avanzado") proporcionó nuevas interfaces específicamente adecuadas para sistemas operativos multitarea como OS/2.

Interfaz de usuario

El BIOS de la IBM PC y XT original no tenía una interfaz de usuario interactiva. Se mostraban códigos o mensajes de error en la pantalla, o se generaban series de sonidos codificados para indicar errores cuando la autoprueba de encendido (POST) no se había llevado a cabo hasta el punto de inicializar con éxito un adaptador de pantalla de video. Las opciones en IBM PC y XT se establecieron mediante interruptores y puentes en la placa principal y en las tarjetas de expansión. A partir de mediados de la década de 1990, se hizo habitual que la ROM del BIOS incluyera una "utilidad de configuración del BIOS" (BCU) o "utilidad de configuración del BIOS", a la que se accedía en el encendido del sistema por una secuencia de teclas particular. Este programa permitía al usuario establecer opciones de configuración del sistema, del tipo que antes se establecía mediante interruptores DIP, a través de un sistema de menú interactivo controlado a través del teclado. En el período intermedio, las PC compatibles con IBM—incluido IBM AT—contenían los ajustes de configuración en la RAM respaldada por batería y usaban un programa de configuración de arranque en un disquete, no en la ROM, para establecer las opciones de configuración contenidas en esta memoria. El disquete se suministró con la computadora y, si se perdía, no se podía cambiar la configuración del sistema. Lo mismo se aplicaba en general a las computadoras con un bus EISA, para las cuales el programa de configuración se denominó Utilidad de configuración EISA (ECU).

Una computadora moderna compatible con Wintel proporciona una rutina de configuración esencialmente sin cambios en la naturaleza de las utilidades de configuración del BIOS residente en ROM de finales de la década de 1990; el usuario puede configurar las opciones de hardware usando el teclado y la pantalla de video. La máquina Wintel moderna puede almacenar los ajustes de configuración del BIOS en una ROM flash, tal vez la misma ROM flash que contiene el BIOS mismo.

Operación

Inicio del sistema

Los primeros procesadores Intel comenzaban en la dirección física 000FFFF0h. Los sistemas con procesadores posteriores proporcionan lógica para comenzar a ejecutar el BIOS desde la ROM del sistema.

Si el sistema acaba de encenderse o se presionó el botón de reinicio ("arranque en frío"), se ejecuta la autoprueba de encendido (POST) completa. Si se presionó Ctrl+Alt+Supr ("arranque en caliente"), un valor de indicador especial almacenado en la memoria no volátil del BIOS ("CMOS") probado por el BIOS permite omitir el extenso POST y detección de memoria

El POST identifica, prueba e inicializa los dispositivos del sistema, como la CPU, el conjunto de chips, la RAM, la placa base, la tarjeta de video, el teclado, el mouse, la unidad de disco duro, la unidad de disco óptico y otro hardware, incluidos los periféricos integrados.

Las primeras PC de IBM tenían una rutina en el POST que descargaba un programa en la RAM a través del puerto del teclado y lo ejecutaba. Esta característica fue diseñada para fines de prueba o diagnóstico de fábrica.

Proceso de arranque

Proceso de arranque

Después de que se completa el escaneo de la ROM opcional y se llama a todos los módulos ROM detectados con sumas de verificación válidas, o inmediatamente después de la POST en una versión del BIOS que no busca ROM opcionales, el BIOS llama a INT 19h para iniciar el procesamiento de arranque. Después del arranque, los programas cargados también pueden llamar a INT 19h para reiniciar el sistema, pero deben tener cuidado de deshabilitar las interrupciones y otros procesos de hardware asíncronos que pueden interferir con el proceso de reinicio del BIOS, o de lo contrario, el sistema puede bloquearse o bloquearse mientras se reinicia..

Cuando se llama a INT 19h, el BIOS intenta ubicar el software del cargador de arranque en un "dispositivo de arranque", como un disco duro, un disquete, un CD o un DVD. Carga y ejecuta el primer software de arranque que encuentra, dándole el control de la PC.

El BIOS utiliza los dispositivos de inicio configurados en la memoria del BIOS no volátil (CMOS) o, en las primeras PC, los interruptores DIP. El BIOS verifica cada dispositivo para ver si es arrancable al intentar cargar el primer sector (sector de arranque). Si no se puede leer el sector, el BIOS pasa al siguiente dispositivo. Si el sector se lee con éxito, algunos BIOS también buscarán la firma del sector de arranque 0x55 0xAA en los últimos dos bytes del sector (que tiene 512 bytes), antes de aceptar un sector de arranque y considerar que el dispositivo puede arrancar.

Cuando se encuentra un dispositivo de arranque, el BIOS transfiere el control al sector cargado. El BIOS no interpreta el contenido del sector de arranque más que para verificar posiblemente la firma del sector de arranque en los últimos dos bytes. La interpretación de las estructuras de datos, como las tablas de partición y los bloques de parámetros del BIOS, la realiza el programa de arranque en el propio sector de arranque u otros programas cargados a través del proceso de arranque.

Un dispositivo que no es un disco, como un adaptador de red, intenta arrancar mediante un procedimiento definido por su ROM de opción o el equivalente integrado en la ROM del BIOS de la placa base. Como tal, las ROM opcionales también pueden influir o suplantar el proceso de arranque definido por la ROM del BIOS de la placa base.

Con el estándar de arranque de medios ópticos El Torito, la unidad óptica en realidad emula un 3.5" disquete de alta densidad al BIOS para fines de arranque. Leyendo el "primer sector" de un CD-ROM o DVD-ROM no es una operación simplemente definida como lo es en un disquete o un disco duro. Además, la complejidad del medio dificulta escribir un programa de arranque útil en un sector. El disquete virtual de arranque puede contener software que proporciona acceso al medio óptico en su formato nativo.

Prioridad de arranque

El usuario puede seleccionar la prioridad de arranque implementada por el BIOS. Por ejemplo, la mayoría de las computadoras tienen un disco duro que se puede iniciar, pero a veces hay una unidad de medios extraíbles que tiene una mayor prioridad de inicio, por lo que el usuario puede hacer que se inicie un disco extraíble.

En la mayoría de los BIOS modernos, el usuario puede configurar el orden de prioridad de arranque. En los BIOS más antiguos, se pueden seleccionar opciones de prioridad de arranque limitadas; en los primeros BIOS, se implementó un esquema de prioridad fija, con unidades de disquete primero, discos fijos (es decir, discos duros) en segundo lugar y, por lo general, no se admitían otros dispositivos de arranque, sujeto a la modificación de estas reglas por parte de las ROM opcionales instaladas. El BIOS en una de las primeras PC generalmente solo arrancaba desde la primera unidad de disquete o la primera unidad de disco duro, incluso si había dos unidades instaladas.

Error de arranque

En la IBM PC original y XT, si no se encontraba un disco de arranque, se iniciaba ROM BASIC llamando a INT 18h. Dado que pocos programas usaban BASIC en ROM, los fabricantes de PC clónicos lo dejaron fuera; entonces una computadora que no pudo arrancar desde un disco mostraría "No ROM BASIC" y alto (en respuesta a INT 18h).

Los equipos posteriores mostrarían un mensaje como "No se encontró ningún disco de arranque"; algunos solicitarían que se inserte un disco y que se presione una tecla para volver a intentar el proceso de arranque. Un BIOS moderno puede no mostrar nada o puede ingresar automáticamente a la utilidad de configuración del BIOS cuando falla el proceso de arranque.

Entorno de arranque

El entorno para el programa de arranque es muy simple: la CPU está en modo real y los registros de propósito general y de segmento no están definidos, excepto SS, SP, CS y DL. CS:IP siempre apunta a la dirección física 0x07C00. Los valores que realmente tienen CS e IP no están bien definidos. Algunos BIOS usan un CS:IP de 0x0000:0x7C00 mientras que otros pueden usar 0x07C0:0x0000. Debido a que los programas de inicio siempre se cargan en esta dirección fija, no es necesario que un programa de inicio sea reubicable. DL puede contener el número de unidad, como se usa con INT 13h, del dispositivo de arranque. SS:SP apunta a una pila válida que presumiblemente es lo suficientemente grande como para admitir interrupciones de hardware, pero de lo contrario, SS y SP no están definidos. (Ya debe haber una pila configurada para que las interrupciones sean atendidas, y las interrupciones deben estar habilitadas para que la interrupción del tictac del temporizador del sistema, que el BIOS siempre usa al menos para mantener el conteo de la hora del día y que inicializa durante la POST, para que esté activo y para que funcione el teclado. El teclado funciona incluso si no se llama al servicio de teclado del BIOS; las pulsaciones de teclas se reciben y se colocan en el búfer de escritura anticipada de 15 caracteres que mantiene el BIOS). crear su propia pila, porque se desconoce el tamaño de la pila configurada por BIOS y su ubicación también es variable; aunque el programa de arranque puede investigar la pila predeterminada examinando SS:SP, es más fácil y breve configurar incondicionalmente una nueva pila.

En el momento del arranque, todos los servicios del BIOS están disponibles y la memoria debajo de la dirección 0x00400 contiene la tabla de vectores de interrupción. BIOS POST ha inicializado los temporizadores del sistema, los controladores de interrupción, los controladores DMA y otro hardware de la placa base/chipset según sea necesario para que todos los servicios del BIOS estén listos. Actualización de DRAM para todo el sistema DRAM en memoria convencional y memoria extendida, pero no necesariamente memoria expandida, se ha configurado y está funcionando. Los vectores de interrupción correspondientes a las interrupciones del BIOS se han configurado para que apunten a los puntos de entrada apropiados en el BIOS, los vectores de interrupción de hardware para dispositivos inicializados por el BIOS se han configurado para que apunten a los ISR proporcionados por el BIOS y algunas otras interrupciones, incluidas las que genera el BIOS para que los programas se conecten, se han establecido en un ISR ficticio predeterminado que regresa inmediatamente. El BIOS mantiene un bloque reservado de RAM del sistema en las direcciones 0x00400–0x004FF con varios parámetros inicializados durante la POST. Toda la memoria en y por encima de la dirección 0x00500 puede ser utilizada por el programa de arranque; incluso puede sobrescribirse a sí mismo.

Extensiones (ROM opcionales)

Las tarjetas periféricas, como los adaptadores de bus de host de la unidad de disco duro y las tarjetas de video, tienen su propio firmware, y la ROM de opción de extensión del BIOS puede ser parte del firmware de la tarjeta de expansión, que brinda funcionalidad adicional al BIOS. El código en las ROM opcionales se ejecuta antes de que el BIOS inicie el sistema operativo desde el almacenamiento masivo. Estas ROM generalmente prueban e inicializan el hardware, agregan nuevos servicios de BIOS o reemplazan los servicios de BIOS existentes con sus propios servicios. Por ejemplo, un controlador SCSI generalmente tiene una ROM de extensión de BIOS que agrega soporte para discos duros conectados a través de ese controlador. En principio, una ROM de extensión podría contener un sistema operativo, o podría implementar un proceso de arranque completamente diferente, como el arranque de red. El funcionamiento de un sistema informático compatible con IBM se puede cambiar por completo quitando o insertando una tarjeta adaptadora (o un chip ROM) que contenga una ROM de extensión del BIOS.

El BIOS de la placa base generalmente contiene código para inicializar y arrancar la pantalla integrada y el almacenamiento integrado. Además, las tarjetas adaptadoras enchufables como SCSI, RAID, tarjetas de interfaz de red y tarjetas de video a menudo incluyen su propio BIOS (por ejemplo, BIOS de video), que complementa o reemplaza el código BIOS del sistema para el componente dado. Incluso los dispositivos integrados en la placa base pueden comportarse de esta manera; sus ROM de opción pueden ser parte del BIOS de la placa base.

Una tarjeta complementaria requiere una ROM opcional si la tarjeta no es compatible con el BIOS de la placa base y es necesario inicializarla o hacerla accesible a través de los servicios del BIOS antes de que se pueda cargar el sistema operativo (por lo general, esto significa que se requiere en el proceso de arranque). Una ventaja adicional de la ROM en algunos de los primeros sistemas de PC (en particular, incluido el IBM PCjr) era que la ROM era más rápida que la RAM del sistema principal. (En los sistemas modernos, el caso es muy opuesto a esto, y el código ROM del BIOS generalmente se copia (se oculta) en la RAM para que se ejecute más rápido).

Procedimiento de arranque

Si una ROM de expansión desea cambiar la forma en que se inicia el sistema (por ejemplo, desde un dispositivo de red o un adaptador SCSI) de forma cooperativa, puede utilizar la API BIOS Boot Specification (BBS) para registrar su capacidad para hacerlo. Una vez que las ROM de expansión se han registrado mediante las API de BBS, el usuario puede seleccionar entre las opciones de arranque disponibles desde la interfaz de usuario del BIOS. Esta es la razón por la cual la mayoría de las implementaciones de BIOS de PC compatibles con BBS no permitirán que el usuario ingrese a la interfaz de usuario del BIOS hasta que las ROM de expansión hayan terminado de ejecutarse y registrarse con la API de BBS.

Además, si una ROM de expansión desea cambiar la forma en que el sistema arranca unilateralmente, simplemente puede conectar INT 19h u otras interrupciones que normalmente se llaman desde la interrupción 19h, como INT 13h, el servicio de disco del BIOS, para interceptar el proceso de arranque del BIOS.. Luego, puede reemplazar el proceso de inicio del BIOS con uno propio, o simplemente puede modificar la secuencia de inicio insertando sus propias acciones de inicio, evitando que el BIOS detecte ciertos dispositivos como de inicio, o ambas cosas. Antes de que se promulgara la Especificación de arranque del BIOS, esta era la única forma en que las ROM de expansión implementaban la capacidad de arranque para dispositivos que no eran compatibles con el BIOS nativo de la placa base.

Inicialización

Después de que el BIOS de la placa base completa su POST, la mayoría de las versiones del BIOS buscan módulos de ROM opcionales, también llamados ROM de extensión del BIOS, y los ejecutan. El BIOS de la placa base busca ROM de extensión en una parte del "área de memoria superior" (la parte del espacio de direcciones en modo real x86 en y por encima de la dirección 0xA0000) y ejecuta cada ROM encontrada, en orden. Para descubrir ROM opcionales mapeadas en memoria, una implementación de BIOS escanea el espacio de direcciones en modo real desde 0x0C0000 a 0x0F0000 en límites de 2 KB (2048 bytes), en busca de dos byte ROM firma: 0x55 seguido de 0xAA. En una ROM de expansión válida, esta firma va seguida de un solo byte que indica el número de bloques de 512 bytes que ocupa la ROM de expansión en la memoria real, y el siguiente byte es el punto de entrada de la ROM de opción (también conocido como su & #34;compensación de entrada"). Si la ROM tiene una suma de verificación válida, el BIOS transfiere el control a la dirección de entrada, que en una ROM de extensión de BIOS normal debería ser el comienzo de la rutina de inicialización de la extensión.

En este punto, el código ROM de extensión se hace cargo, normalmente probando e inicializando el hardware que controla y registrando los vectores de interrupción para que los usen las aplicaciones posteriores al arranque. Puede utilizar los servicios del BIOS (incluidos los proporcionados por las ROM de opción previamente inicializadas) para proporcionar una interfaz de configuración de usuario, para mostrar información de diagnóstico o para hacer cualquier otra cosa que requiera. Es posible que una ROM de opción no regrese al BIOS, anulando por completo la secuencia de arranque del BIOS.

Una ROM opcional normalmente debería volver al BIOS después de completar su proceso de inicialización. Una vez (y si) regresa una ROM de opción, el BIOS continúa buscando más ROM de opción, llamándolas a medida que las encuentra, hasta que se haya escaneado toda el área de ROM de opción en el espacio de memoria.

Ubicación física

chips BIOS en un Dell 310 que fueron actualizados reemplazando los chips

Las ROM opcionales normalmente residen en tarjetas adaptadoras. Sin embargo, la PC original, y quizás también la PC XT, tienen un zócalo de ROM de repuesto en la placa base (la 'placa del sistema' en términos de IBM) en el que se puede insertar una ROM opcional y las cuatro ROM que contienen el intérprete BASIC también se pueden quitar y reemplazar con ROM personalizadas que pueden ser ROM opcionales. La IBM PCjr es única entre las PC porque tiene dos ranuras para cartuchos ROM en la parte delantera. Los cartuchos en estas ranuras se asignan a la misma región del área de memoria superior utilizada para las ROM opcionales y los cartuchos pueden contener módulos ROM opcionales que el BIOS reconocería. Los cartuchos también pueden contener otros tipos de módulos ROM, como programas BASIC, que se manejan de manera diferente. Un cartucho PCjr puede contener varios módulos ROM de diferentes tipos, posiblemente almacenados juntos en un chip ROM.

Servicios del sistema operativo

La BIOS ROM está personalizada para el hardware del fabricante en particular, lo que permite que los servicios de bajo nivel (como leer una pulsación de tecla o escribir un sector de datos en un disquete) se brinden de manera estandarizada a los programas, incluido el funcionamiento sistemas Por ejemplo, una PC IBM puede tener un adaptador de pantalla monocromática o a color (utilizando diferentes direcciones de memoria y hardware de pantalla), pero se puede invocar una única llamada al sistema BIOS estándar para mostrar un carácter en una posición específica en la pantalla en modo texto o modo gráfico.

El BIOS proporciona una pequeña biblioteca de funciones básicas de entrada/salida para operar periféricos (como el teclado, funciones rudimentarias de visualización de texto y gráficos, etc.). Cuando se usa MS-DOS, un programa de aplicación (o MS-DOS) puede acceder a los servicios del BIOS ejecutando una instrucción de interrupción INT 13h para acceder a las funciones del disco, o ejecutando una de varias otras llamadas de interrupción del BIOS documentadas para acceder al video. pantalla, teclado, casete y otras funciones del dispositivo.

Los sistemas operativos y el software ejecutivo que están diseñados para reemplazar esta funcionalidad básica de firmware proporcionan interfaces de software de reemplazo para el software de aplicación. Las aplicaciones también pueden proporcionarse estos servicios a sí mismas. Esto comenzó incluso en la década de 1980 bajo MS-DOS, cuando los programadores observaron que el uso de los servicios de video del BIOS para la visualización de gráficos era muy lento. Para aumentar la velocidad de salida de la pantalla, muchos programas pasaron por alto el BIOS y programaron el hardware de visualización de video directamente. Otros programadores de gráficos, particularmente pero no exclusivamente en la demostración, observaron que había capacidades técnicas de los adaptadores de pantalla de PC que no eran compatibles con el BIOS de IBM y que no podían aprovecharse sin eludirlas. Dado que el BIOS compatible con AT se ejecutaba en modo real de Intel, los sistemas operativos que se ejecutaban en modo protegido en los procesadores 286 y posteriores requerían controladores de dispositivos de hardware compatibles con la operación en modo protegido para reemplazar los servicios del BIOS.

En las PC modernas que ejecutan sistemas operativos modernos (como Windows y Linux), las llamadas de interrupción del BIOS se usan solo durante el arranque y la carga inicial de los sistemas operativos. Antes de que se muestre la primera pantalla gráfica del sistema operativo, la entrada y la salida generalmente se manejan a través del BIOS. Un menú de inicio, como el menú textual de Windows, que permite a los usuarios elegir un sistema operativo para iniciar, iniciar en modo seguro o usar la última configuración buena conocida, se muestra a través del BIOS y recibe la entrada del teclado a través del BIOS.

Muchas PC modernas aún pueden iniciar y ejecutar sistemas operativos heredados como MS-DOS o DR-DOS que dependen en gran medida del BIOS para su consola y E/S de disco, siempre que el sistema tenga un BIOS o un CSM compatible. Firmware UEFI.

Actualizaciones del microcódigo del procesador

Los procesadores Intel tienen un microcódigo reprogramable desde la microarquitectura P6. Los procesadores AMD tienen microcódigo reprogramable desde la microarquitectura K7. El BIOS contiene parches para el microcódigo del procesador que corrigen errores en el microcódigo del procesador inicial; El microcódigo se carga en la SRAM del procesador, por lo que la reprogramación no es persistente, por lo que la carga de las actualizaciones del microcódigo se realiza cada vez que se enciende el sistema. Sin microcódigo reprogramable, se requeriría un costoso cambio de procesador; por ejemplo, el error Pentium FDIV se convirtió en un fiasco costoso para Intel, ya que requirió la retirada del producto porque el microcódigo defectuoso del procesador Pentium original no se podía reprogramar. Los sistemas operativos también pueden actualizar el microcódigo del procesador principal.

Identificación

Algunos BIOS contienen una tabla de descripción de licencias de software (SLIC), una firma digital colocada dentro del BIOS por el fabricante del equipo original (OEM), por ejemplo, Dell. El SLIC se inserta en la tabla de datos ACPI y no contiene ningún código activo.

Los fabricantes de computadoras que distribuyen versiones OEM de Microsoft Windows y el software de aplicación de Microsoft pueden usar el SLIC para autenticar la licencia en el disco de instalación de Windows OEM y el disco de recuperación del sistema que contiene el software de Windows. Los sistemas con un SLIC se pueden preactivar con una clave de producto OEM y verifican un certificado OEM con formato XML contra el SLIC en el BIOS como un medio de autoactivación (consulte Preinstalación bloqueada del sistema, SLP). Si un usuario realiza una instalación nueva de Windows, deberá poseer la clave OEM (ya sea SLP o COA) y el certificado digital de su SLIC para evitar la activación. Esto se puede lograr si el usuario realiza una restauración utilizando una imagen personalizada previamente proporcionada por el OEM. Los usuarios avanzados pueden copiar los archivos de certificado necesarios de la imagen OEM, decodificar la clave de producto SLP y luego realizar la activación SLP manualmente. Las grietas para las distribuciones de Windows que no son originales generalmente editan el SLIC o lo emulan para evitar la activación de Windows.

Overclocking

Algunas implementaciones de BIOS permiten el overclocking, una acción en la que la CPU se ajusta a una velocidad de reloj más alta que la clasificación del fabricante para garantizar la capacidad. Sin embargo, el overclocking puede comprometer seriamente la confiabilidad del sistema en computadoras con enfriamiento insuficiente y, en general, acortar la vida útil de los componentes. El overclocking, cuando se realiza incorrectamente, también puede hacer que los componentes se sobrecalienten tan rápido que se destruyan mecánicamente.

Uso moderno

Algunos sistemas operativos más antiguos, por ejemplo, MS-DOS, dependen del BIOS para realizar la mayoría de las tareas de entrada/salida dentro de la PC.

Llamar directamente a los servicios BIOS en modo real es ineficaz para los sistemas operativos en modo protegido (y en modo largo). Los sistemas operativos multitarea modernos no utilizan las llamadas de interrupción del BIOS después de que se cargan inicialmente.

En la década de 1990, BIOS proporcionó algunas interfaces de modo protegido para Microsoft Windows y sistemas operativos similares a Unix, como Advanced Power Management (APM), Plug and Play BIOS, Desktop Management Interface (DMI), VESA BIOS Extensions (VBE), e820 y especificación multiprocesador (MPS). A partir del 2000, la mayoría de los BIOS proporcionan interfaces ACPI, SMBIOS, VBE y e820 para los sistemas operativos modernos.

Después de cargar los sistemas operativos, el código del modo de administración del sistema aún se ejecuta en SMRAM. Desde 2010, la tecnología BIOS se encuentra en un proceso de transición hacia UEFI.

Configuración

Utilidad de configuración

Históricamente, el BIOS en IBM PC y XT no tenía una interfaz de usuario integrada. Las versiones de BIOS en PC anteriores (clase XT) no eran configurables por software; en cambio, los usuarios configuran las opciones a través de los interruptores DIP en la placa base. Las computadoras posteriores, incluidas todas las compatibles con IBM con CPU 80286, tenían una memoria BIOS no volátil respaldada por batería (chip CMOS RAM) que contenía la configuración del BIOS. Estas configuraciones, como el tipo de adaptador de video, el tamaño de la memoria y los parámetros del disco duro, solo se pueden configurar ejecutando un programa de configuración desde un disco, no integrado en la ROM. Un "disquete de referencia" especial se insertó en un IBM AT para configurar ajustes como el tamaño de la memoria.

Las primeras versiones de BIOS no tenían contraseñas ni opciones de selección de dispositivos de arranque. El BIOS estaba codificado para arrancar desde la primera unidad de disquete o, si eso fallaba, desde el primer disco duro. El control de acceso en las primeras máquinas de clase AT se realizaba mediante un interruptor de bloqueo físico (que no era difícil de vencer si se podía abrir la carcasa de la computadora). Cualquiera que pudiera encender la computadora podría iniciarla.

Más tarde, las computadoras de clase 386 comenzaron a integrar la utilidad de configuración del BIOS en la propia ROM, junto con el código del BIOS; estas computadoras generalmente se inician en la utilidad de configuración del BIOS si se presiona una determinada tecla o combinación de teclas; de lo contrario, se ejecutan el BIOS POST y el proceso de inicio.

Premio BIOS utilidad de configuración en un PC estándar

Una utilidad de configuración de BIOS moderna tiene una interfaz de usuario de texto (TUI) o una interfaz gráfica de usuario (GUI) a la que se accede presionando una determinada tecla en el teclado cuando se inicia la PC. Por lo general, la clave se anuncia por poco tiempo durante el inicio temprano, por ejemplo, "Presione DEL para ingresar a Configuración". La clave real depende del hardware específico. Las características presentes en la utilidad de configuración del BIOS generalmente incluyen:

Supervisión de equipos

Una pantalla de configuración de BIOS moderna a menudo presenta una pestaña Estado de salud de la PC o Monitoreo de hardware, que interactúa directamente con un chip de Monitoreo de hardware de la placa base. Esto permite monitorear la temperatura de la CPU y del chasis, el voltaje proporcionado por la fuente de alimentación, así como monitorear y controlar la velocidad de los ventiladores conectados a la placa base.

Una vez que se inicia el sistema, el monitoreo del hardware y el control del ventilador de la computadora normalmente lo realiza directamente el propio chip del Monitor de hardware, que puede ser un chip separado, conectado a través de I2C o SMBus, o venir como parte de un Super I/O solución, interconectada a través de Industry Standard Architecture (ISA) o Low Pin Count (LPC). Algunos sistemas operativos, como NetBSD con envsys y OpenBSD con sysctl hw.sensors, cuentan con una interfaz integrada con monitores de hardware.

Sin embargo, en algunas circunstancias, el BIOS también proporciona la información subyacente sobre la supervisión del hardware a través de ACPI, en cuyo caso, el sistema operativo puede estar utilizando ACPI para realizar la supervisión del hardware.

Reprogramación

Kit de sustitución de BIOS para un Dell 310 de finales de los años 80. Incluye dos chips, un soporte de plástico para las fichas y un tirador de chips.

En las PC modernas, el BIOS se almacena en una EEPROM regrabable o en una memoria flash NOR, lo que permite reemplazar y modificar el contenido. Esta reescritura de los contenidos a veces se denomina parpadeo. Se puede hacer mediante un programa especial, generalmente proporcionado por el fabricante del sistema, o en POST, con una imagen de BIOS en un disco duro o una unidad flash USB. Un archivo que contiene dicho contenido a veces se denomina "una imagen del BIOS". Se puede volver a actualizar un BIOS para actualizar a una versión más nueva para corregir errores o proporcionar un rendimiento mejorado o para admitir hardware más nuevo.

Hardware

American Megatrends BIOS 686. Este chip BIOS está ubicado en un paquete PLCC en un socket.

El IBM PC BIOS original (y el casete BASIC) se almacenaba en chips de memoria de solo lectura (ROM) programados con máscara en zócalos de la placa base. Los usuarios pueden reemplazar las ROM, pero no modificarlas. Para permitir las actualizaciones, muchas computadoras compatibles usaban dispositivos de memoria BIOS reprogramables como EPROM, EEPROM y dispositivos de memoria flash posteriores (generalmente NOR flash). Según Robert Braver, presidente del fabricante de BIOS Micro Firmware, los chips Flash BIOS se volvieron comunes alrededor de 1995 porque los chips PROM borrables eléctricamente (EEPROM) son más baratos y fáciles de programar que los PROM borrables ultravioleta estándar (EPROM).) papas fritas. Los chips flash se programan (y reprograman) en el circuito, mientras que los chips EPROM se deben quitar de la placa base para volver a programarlos. Las versiones de BIOS se actualizan para aprovechar las versiones más nuevas de hardware y para corregir errores en revisiones anteriores de BIOS.

A partir de IBM AT, las PC admitían un reloj de hardware configurable a través del BIOS. Tenía un bit de siglo que permitía cambiar manualmente el siglo cuando ocurrió el año 2000. La mayoría de las revisiones de BIOS creadas en 1995 y casi todas las revisiones de BIOS en 1997 admitían el año 2000 configurando el bit de siglo automáticamente cuando el reloj pasaba la medianoche del 31 de diciembre de 1999.

Los primeros chips flash se conectaron al bus ISA. A partir de 1998, el BIOS flash se trasladó al bus LPC, siguiendo una nueva implementación estándar conocida como "hub de firmware" (FWH). En 2005, la memoria flash del BIOS se trasladó al bus SPI.

El tamaño del BIOS y la capacidad de la ROM, EEPROM u otros medios en los que se puede almacenar, ha aumentado con el tiempo a medida que se han agregado nuevas características al código; Ahora existen versiones de BIOS con tamaños de hasta 32 megabytes. Por el contrario, el BIOS de la PC de IBM original estaba contenido en una ROM de máscara de 8 KB. Algunas placas base modernas incluyen circuitos integrados de memoria flash NAND aún más grandes que son capaces de almacenar sistemas operativos compactos completos, como algunas distribuciones de Linux. Por ejemplo, algunas computadoras portátiles ASUS incluían el sistema operativo Splashtop integrado en sus circuitos integrados de memoria flash NAND. Sin embargo, la idea de incluir un sistema operativo junto con BIOS en la ROM de una PC no es nueva; en la década de 1980, Microsoft ofreció una opción de ROM para MS-DOS y se incluyó en las ROM de algunos clones de PC, como Tandy 1000 HX.

Se encontró otro tipo de chip de firmware en IBM PC AT y en los primeros compatibles. En el AT, la interfaz del teclado estaba controlada por un microcontrolador con su propia memoria programable. En el AT de IBM, ese era un dispositivo con enchufe de 40 pines, mientras que algunos fabricantes usaban una versión EPROM de este chip que se parecía a una EPROM. A este controlador también se le asignó la función de puerta A20 para administrar la memoria por encima del rango de un megabyte; ocasionalmente una actualización de este "BIOS del teclado" Era necesario aprovechar el software que podía usar la memoria superior.

El BIOS puede contener componentes como el código de referencia de la memoria (MRC), que es responsable de la inicialización de la memoria (por ejemplo, SPD y la inicialización de los tiempos de la memoria).

El BIOS moderno incluye Firmware del procesador de seguridad de la plataforma Intel Management Engine o AMD.

Proveedores y productos

Comparación de diferentes implementaciones de BIOS
Company AwardBIOS AMIBIOS Insyde SeaBIOS
Licencia Propietario Propietario Propietario LGPL v3
Mantenimiento / desarrollo Terminada Terminada Terminada Sí.
32 bits PCI BIOS llamadas Sí. Sí. Sí. Sí.
AHCISí. Sí. Sí. Sí.
APMSí. Sí. Sí. (1.2)Sí. (1.2)
BBSSí. Sí. Sí. Sí.
Menú de arranque Sí. Sí. Sí. Sí.
Compresión Sí. (LHA)Sí. (LHA)Sí. (RLE)Sí. (LZMA)
CMOS Sí. Sí. Sí. Sí.
EDDSí. Sí. Sí. Sí.
ESCDSí. Sí. ? No
Flash de ROM ? Sí. ? No
Idioma Asamblea General Asamblea General Asamblea General C
LBASí. (48)Sí. (48)Sí. Sí. (48)
Multiprocesador Especificación Sí. Sí. Sí. Sí.
Opción ROM Sí. Sí. Sí. Sí.
Contraseña Sí. Sí. Sí. No
PMM? Sí. ? Sí.
Pantalla de configuración Sí. Sí. Sí. No
SMBIOSSí. Sí. Sí. Sí.
Pantalla Splash Sí. (EPA)Sí. (PCX)Sí. Sí. (BMP, JPG)
TPMNo conocido No conocido No conocido Algunos
Botín USB Sí. Sí. Sí. Sí.
Centro USB ? ? ? Sí.
teclado USB Sí. Sí. Sí. Sí.
ratón USB Sí. Sí. Sí. Sí.

IBM publicó las listas completas del BIOS para su PC original, PC XT, PC AT y otros modelos de PC contemporáneos, en un apéndice del Manual de referencia técnica de PC de IBM para cada tipo de máquina. El efecto de la publicación de las listas de BIOS es que cualquiera puede ver exactamente qué hace un BIOS definitivo y cómo lo hace.

Compaq Portable 386 BIOS

En mayo de 1984, Phoenix Software Associates lanzó su primera ROM-BIOS, que permitió a los fabricantes de equipos originales crear clones esencialmente totalmente compatibles sin tener que aplicar ingeniería inversa a la BIOS de la PC de IBM, como lo había hecho Compaq con la portátil, lo que ayudó a impulsar el crecimiento en la industria de PC compatibles y las ventas de versiones de DOS que no son de IBM. Y el primer BIOS de American Megatrends (AMI) se lanzó en 1986.

Los nuevos estándares injertados en el BIOS generalmente no tienen documentación pública completa ni ninguna lista de BIOS. Como resultado, no es tan fácil aprender los detalles íntimos sobre las muchas adiciones al BIOS que no son de IBM como sobre los servicios básicos del BIOS.

La mayoría de los proveedores de placas base para PC tienen licencia de un BIOS "core" y kit de herramientas de un tercero comercial, conocido como "proveedor de BIOS independiente" o IBV. Luego, el fabricante de la placa base personalizó este BIOS para adaptarlo a su propio hardware. Por esta razón, los BIOS actualizados normalmente se obtienen directamente del fabricante de la placa base. Los principales IBV incluyeron American Megatrends (AMI), Insyde Software, Phoenix Technologies y Byosoft. Phoenix Technologies adquirió Microid Research and Award Software en 1998; Phoenix luego eliminó gradualmente la marca Award. General Software, que también fue adquirida por Phoenix en 2007, vendió BIOS para sistemas integrados basados en procesadores Intel.

La comunidad de código abierto incrementó sus esfuerzos para desarrollar un reemplazo para los BIOS patentados y sus encarnaciones futuras con una contraparte de código abierto a través de los proyectos libreboot, coreboot y OpenBIOS/Open Firmware. AMD proporcionó especificaciones de productos para algunos conjuntos de chips y Google patrocina el proyecto. El fabricante de placas base Tyan ofrece coreboot junto con el BIOS estándar con su línea de placas base Opteron.

Seguridad

Un American Megatrends BIOS mostrando un "Intel CPU uCode Cargando Error" después de un intento fallido de subir parches de microcódigo en la CPU
Un chip de BIOS separado

Los chips de memoria EEPROM y Flash son ventajosos porque el usuario puede actualizarlos fácilmente; Es habitual que los fabricantes de hardware emitan actualizaciones de BIOS para actualizar sus productos, mejorar la compatibilidad y eliminar errores. Sin embargo, esta ventaja tenía el riesgo de que una actualización del BIOS ejecutada incorrectamente o cancelada pudiera inutilizar la computadora o el dispositivo. Para evitar estas situaciones, las BIOS más recientes utilizan un "bloque de arranque"; una parte del BIOS que se ejecuta primero y debe actualizarse por separado. Este código verifica si el resto del BIOS está intacto (usando sumas de verificación hash u otros métodos) antes de transferirle el control. Si el bloque de inicio detecta algún daño en el BIOS principal, generalmente advertirá al usuario que se debe iniciar un proceso de recuperación iniciando desde un medio extraíble (disquete, CD o unidad flash USB) para que el usuario pueda intentar actualizar el BIOS nuevamente. Algunas placas base tienen un BIOS de copia de seguridad (a veces denominadas placas DualBIOS) para recuperarse de las corrupciones del BIOS.

Hay al menos cinco virus de ataque al BIOS conocidos, dos de los cuales fueron para fines de demostración. El primero que se encontró en la naturaleza fue Mebromi, dirigido a usuarios chinos.

El primer virus BIOS fue BIOS Meningitis, que en lugar de borrar los chips BIOS, los infectó. BIOS Meningitis tiene relativamente inofensivo, en comparación con un virus como CIH.

El segundo virus de BIOS fue CIH, también conocido como "Virus de Chernobyl", que pudo borrar el contenido de BIOS de ROM flash en conjuntos de chips compatibles. CIH apareció a mediados de 1998 y se activó en abril de 1999. A menudo, las computadoras infectadas ya no podían arrancar y las personas tenían que quitar el IC ROM flash de la placa base y reprogramarlo. CIH se centró en el conjunto de chips de la placa base Intel i430TX, entonces muy extendido, y aprovechó el hecho de que los sistemas operativos Windows 9x, también muy extendidos en ese momento, permitían el acceso directo al hardware a todos los programas.

Los sistemas modernos no son vulnerables a CIH debido a que se utilizan una variedad de chipsets que son incompatibles con el chipset Intel i430TX y también con otros tipos de IC de ROM flash. También hay protección adicional contra reescrituras accidentales de BIOS en forma de bloques de arranque que están protegidos contra sobrescrituras accidentales o sistemas equipados con BIOS doble y cuádruple que, en caso de falla, pueden usar un BIOS de respaldo. Además, todos los sistemas operativos modernos como FreeBSD, Linux, macOS, Windows OS basado en Windows NT como Windows 2000, Windows XP y posteriores, no permiten que los programas en modo de usuario tengan acceso directo al hardware mediante una capa de abstracción de hardware.

Como resultado, a partir de 2008, CIH se ha vuelto esencialmente inofensivo y, en el peor de los casos, causa molestias al infectar archivos ejecutables y activar software antivirus. Sin embargo, otros virus BIOS siguen siendo posibles; Dado que la mayoría de los usuarios domésticos de Windows sin UAC de Windows Vista/7 ejecutan todas las aplicaciones con privilegios administrativos, un virus moderno similar a CIH podría, en principio, obtener acceso al hardware sin usar primero un exploit. El sistema operativo OpenBSD evita que todos los usuarios tengan este acceso y el parche grsecurity para el kernel de Linux también evita este acceso directo al hardware de forma predeterminada, la diferencia es que un atacante requiere un exploit a nivel de kernel mucho más difícil o un reinicio de la máquina.

El tercer virus BIOS fue una técnica presentada por John Heasman, principal consultor de seguridad de Next-Generation Security Software con sede en el Reino Unido. En 2006, en la Black Hat Security Conference, mostró cómo elevar los privilegios y leer la memoria física mediante procedimientos maliciosos que reemplazaban las funciones ACPI normales almacenadas en la memoria flash.

El cuarto virus del BIOS era una técnica denominada "Infección persistente del BIOS". Apareció en 2009 en la Conferencia de seguridad CanSecWest en Vancouver y en la Conferencia de seguridad SyScan en Singapur. Los investigadores Aníbal Sacco y Alfredo Ortega, de Core Security Technologies, demostraron cómo insertar código malicioso en las rutinas de descompresión del BIOS, lo que permite tener un control casi total de la PC al inicio, incluso antes de que se inicie el sistema operativo. La prueba de concepto no explota una falla en la implementación del BIOS, sino que solo involucra los procedimientos normales de actualización del BIOS. Por lo tanto, requiere acceso físico a la máquina o que el usuario sea root. A pesar de estos requisitos, Ortega subrayó las profundas implicaciones de su descubrimiento y el de Sacco: 'Podemos parchear un controlador para eliminar un rootkit completamente funcional. Incluso tenemos un pequeño código que puede eliminar o desactivar el antivirus."

Mebromi es un troyano que se dirige a equipos con AwardBIOS, Microsoft Windows y software antivirus de dos empresas chinas: Rising Antivirus y Jiangmin KV Antivirus. Mebromi instala un rootkit que infecta el registro de arranque maestro.

En una entrevista de diciembre de 2013 con 60 Minutos, Deborah Plunkett, Directora de Aseguramiento de la Información de la Agencia de Seguridad Nacional de los EE. sistema financiero estadounidense. El programa citó fuentes anónimas que alegaban que se trataba de un complot chino. Sin embargo, artículos de seguimiento en The Guardian, The Atlantic, Wired y The Register refutan la NSA' reclamos de s.

Las plataformas Intel más nuevas tienen habilitada la tecnología Intel Boot Guard (IBG), esta tecnología verificará la firma digital del BIOS al inicio y la clave pública de IBG se fusiona con PCH. Los usuarios finales no pueden desactivar esta función.

Alternativas y sucesoras

(feminine)

La interfaz de firmware extensible unificada (UEFI) complementa el BIOS en muchas máquinas nuevas. Inicialmente escrito para la arquitectura Intel Itanium, UEFI ahora está disponible para plataformas de arquitectura x86 y ARM; el desarrollo de especificaciones está impulsado por Unified EFI Forum, un grupo de interés especial de la industria. El arranque EFI solo se admite en las versiones de Microsoft Windows compatibles con GPT, el kernel de Linux 2.6.1 y posteriores, y macOS en Mac basados en Intel. A partir de 2014, el nuevo hardware de PC se envía predominantemente con firmware UEFI. La arquitectura de la protección de rootkit también puede evitar que el sistema ejecute los cambios de software del usuario, lo que hace que UEFI sea controvertido como un reemplazo de BIOS heredado en la comunidad de hardware abierto. Además, Windows 11 requiere UEFI para arrancar.

Otras alternativas a la funcionalidad del "BIOS heredado" en el mundo x86 incluyen coreboot y libreboot.

Algunos servidores y estaciones de trabajo utilizan un firmware abierto independiente de la plataforma (IEEE-1275) basado en el lenguaje de programación Forth; se incluye con las computadoras SPARC de Sun, la línea RS/6000 de IBM y otros sistemas PowerPC, como las placas base CHRP, junto con el OLPC XO-1 basado en x86.

Al menos desde 2015, Apple eliminó la compatibilidad con el BIOS heredado de las computadoras MacBook Pro. Como tal, la utilidad BIOS ya no es compatible con la opción heredada e imprime "El modo heredado no es compatible con este sistema". En 2017, Intel anunció que eliminaría la compatibilidad con BIOS heredada para 2020. Desde 2019, las nuevas PC OEM de la plataforma Intel ya no son compatibles con la opción heredada.