En informática , BIOS ( / ˈ b aɪ ɒ s , - oʊ s / , BY -oss, -ohss ; Sistema básico de entrada/salida , también conocido como System BIOS , ROM BIOS , BIOS ROM o PC BIOS ) es el firmware utilizado para proporcionar servicios de tiempo de ejecución para sistemas operativos y programas y para realizar la inicialización del hardware durante el proceso de arranque (inicio de encendido). [1] El firmware del BIOS viene preinstalado en una PC IBM o en la placa del sistema compatible con una PC IBM y existe en algunos sistemas basados en UEFI para mantener la compatibilidad con sistemas operativos que no admiten el funcionamiento nativo de UEFI. [2] [3] El nombre proviene del sistema básico de entrada/salida utilizado en el sistema operativo CP/M en 1975. [4] [5] El BIOS originalmente propietario de la PC IBM ha sido sometido a ingeniería inversa por algunas empresas (como como Phoenix Technologies ) buscando crear sistemas compatibles. La interfaz de ese sistema original sirve como estándar de facto .
El BIOS en las PC más antiguas inicializa y prueba los componentes de hardware del sistema ( autoprueba de encendido o POST para abreviar) y carga un cargador de arranque desde un dispositivo de almacenamiento masivo que luego inicializa un kernel . En la era de DOS , el BIOS proporcionaba llamadas de interrupción del BIOS para el teclado, la pantalla, el almacenamiento y otros dispositivos de entrada/salida (E/S) que estandarizaban 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. [6]
La mayoría de las implementaciones de BIOS están diseñadas específicamente para funcionar con un modelo de computadora o placa base en particular , mediante la interfaz con varios dispositivos, especialmente el chipset del sistema . Originalmente, el firmware del BIOS se almacenaba en un chip ROM en la placa base de la PC. En sistemas informáticos posteriores, el contenido del BIOS se almacena en una memoria flash para que pueda reescribirse sin quitar el chip de la placa base. Esto permite que el usuario final actualice fácilmente el firmware del BIOS para que se puedan agregar nuevas funciones o 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 falle podría bloquear la placa base.
La última versión de Microsoft Windows que admite oficialmente la ejecución en PC que utilizan firmware BIOS heredado es Windows 10, ya que Windows 11 requiere un sistema compatible con UEFI (excepto las ediciones IoT Enterprise de Windows 11 desde la versión 24H2 [7] ).
La Interfaz de firmware extensible unificada (UEFI) es una sucesora del BIOS de PC heredado y tiene como objetivo abordar sus limitaciones técnicas. [8] Desde 2020, todas las PC para plataformas Intel ya no son compatibles con BIOS heredado. [9]
/* CP/MBASICI/OSISTEMA (BIOS) DERECHOS DE AUTOR (C) GARY A. KILDALL JUNIO DE 1975 */[…]/* SISTEMA DE OPERACIÓN DE DISCO BÁSICO (BDOS) DERECHOS DE AUTOR (C) GARY A. KILDALL JUNIO DE 1975 */— Un extracto del encabezado del archivo BDOS.PLM en el código fuente PL/M de CP/M 1.1 o 1.2 para Lawrence Livermore Laboratories (LLL) [4]
El término BIOS (Sistema básico de entrada/salida) fue creado por Gary Kildall [10] [11] y apareció por primera vez en el sistema operativo CP/M en 1975, [4] [5] [11] [12] [13] [ 14] que describe la parte específica de la máquina de CP/M cargada durante el tiempo de arranque que interactúa directamente con el hardware . [5] (Una máquina CP/M normalmente tiene sólo 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" o "DRBIOS.SYS"; este archivo se conoce como "BIOS de DOS" (también conocido como "Sistema de E/S de DOS") y contiene la parte del sistema operativo específica del hardware de nivel inferior. Junto con el "System BIOS" subyacente, específico del hardware pero independiente del sistema operativo, que se encuentra en la ROM , representa el análogo del " CP/M BIOS ".
El BIOS originalmente propiedad de la PC IBM ha sido sometido a ingeniería inversa por algunas empresas (como Phoenix Technologies ) que buscan 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 del modo real estaba destinada a proporcionar compatibilidad con sistemas operativos existentes como DOS y, por lo tanto, se denominó "CBIOS" (por "Compatibilidad BIOS"), mientras que "ABIOS" (por "Advanced BIOS") proporcionó nuevas interfaces específicamente. Adecuado para sistemas operativos multitarea como OS/2 . [15]
El BIOS de la IBM PC y XT originales no tenía una interfaz de usuario interactiva. Se mostraban códigos o mensajes de error en la pantalla, o se generaban series codificadas de sonidos para señalar errores cuando la autoprueba de encendido (POST) no había llegado al punto de inicializar exitosamente un adaptador de pantalla de video. Las opciones en IBM PC y XT se configuraban 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 volvió típico que la ROM del BIOS incluyera una "utilidad de configuración del BIOS" (BCU [16] ) o una "utilidad de configuración del BIOS", a la que se accedía al encender el sistema mediante una secuencia de teclas particular. Este programa permitía al usuario establecer opciones de configuración del sistema, del tipo que antes se configuraba mediante interruptores DIP , a través de un sistema de menú interactivo controlado a través del teclado. Mientras tanto, las PC compatibles con IBM, incluida la IBM AT , mantuvieron los ajustes de configuración en una RAM respaldada por batería y utilizaron 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 suministraba con la computadora y, si se perdía, la configuración del sistema no se podía cambiar. Lo mismo se aplicaba en general a los ordenadores con bus EISA , cuyo programa de configuración se denominaba Utilidad de configuración EISA (ECU).
Una computadora moderna compatible con Wintel proporciona una rutina de configuración esencialmente sin cambios con respecto a 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, quizás la misma ROM flash que contiene el BIOS.
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 . [17]
Si el sistema acaba de encenderse o se presionó el botón de reinicio (" arranque en frío "), se ejecuta la autoprueba de encendido completo (POST). Si se presionó Ctrl+Alt+Delete (" arranque en caliente "), un valor de indicador especial almacenado en la memoria no volátil del BIOS (" CMOS ") probado por el BIOS permite evitar la POST prolongada y la detección de memoria.
El POST identifica, prueba e inicializa dispositivos del sistema como la CPU , el chipset , 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 POST que descargaba un programa en la RAM a través del puerto del teclado y lo ejecutaba. [18] [19] Esta función fue diseñada para fines de prueba o diagnóstico de fábrica.
Una vez que se completa la exploración de ROM de opción y se han llamado todos los módulos ROM detectados con sumas de verificación válidas , o inmediatamente después de la POST en una versión de BIOS que no busca ROM de opción, 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 desactivar las interrupciones y otros procesos de hardware asíncronos que puedan interferir con el proceso de reinicio del BIOS, o de lo contrario el sistema podría bloquearse o fallar mientras se reinicia. .
Cuando se llama a INT 19h, el BIOS intenta localizar 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. [20]
El BIOS utiliza los dispositivos de arranque configurados en la memoria no volátil del BIOS ( CMOS ) o, en las primeras PC, interruptores DIP . El BIOS verifica cada dispositivo para ver si se puede iniciar intentando cargar el primer sector ( sector de inicio ). Si no se puede leer el sector, el BIOS pasa al siguiente dispositivo. Si el sector se lee correctamente, algunos BIOS también comprobarán la firma del sector de arranque 0x55 0xAA en los dos últimos bytes del sector (que tiene 512 bytes de longitud), antes de aceptar un sector de arranque y considerar que el dispositivo es de arranque. [b]
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 excepto para posiblemente verificar la firma del sector de arranque en los dos últimos bytes. La interpretación de estructuras de datos como tablas de particiones y bloques de parámetros del BIOS la realiza el programa de inicio en el propio sector de inicio o mediante otros programas cargados a través del proceso de inicio.
Un dispositivo que no es un disco, como un adaptador de red, intenta arrancar mediante un procedimiento definido por su ROM opcional o el equivalente integrado en la ROM BIOS de la placa base. Como tal, las ROM opcionales también pueden influir o reemplazar el proceso de arranque definido por la ROM BIOS de la placa base.
Con el estándar de arranque de medios ópticos de El Torito , la unidad óptica en realidad emula un disquete de alta densidad de 3,5" en el BIOS para fines de arranque. Leer el "primer sector" de un CD-ROM o DVD-ROM no es una operación simplemente definida. como si estuviera en un disquete o en 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 proporcione acceso al medio óptico en su formato nativo. formato.
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 medio extraíble que tiene 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 BIOS más antiguos, se pueden seleccionar opciones de prioridad de arranque limitadas; en las primeras BIOS, se implementó un esquema de prioridad fija, con las unidades de disquete primero, los discos fijos (es decir, discos duros) en segundo lugar y, por lo general, no se admitía ningún otro dispositivo de arranque, sujeto a la modificación de estas reglas mediante 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 hubiera dos unidades instaladas.
En la PC IBM y XT originales, si no se encontraba ningún disco de arranque, el BIOS intentaría iniciar ROM BASIC con la llamada de interrupción INT 18h . Dado que pocos programas usaban BASIC en ROM, los fabricantes de PC clonadas lo omitieron; entonces, una computadora que no pudo arrancar desde un disco mostraría "No ROM BASIC" y se detendría (en respuesta a INT 18h).
Las computadoras 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. Es posible que un BIOS moderno no muestre nada o ingrese automáticamente a la utilidad de configuración del BIOS cuando falla el proceso de inicio.
El entorno para el programa de arranque es muy simple: la CPU está en modo real y los registros de segmento y de propósito general no están definidos, excepto SS, SP, CS y DL. CS:IP siempre apunta a una dirección física 0x07C00
. Los valores que realmente tienen CS e IP no están bien definidos. Algunas BIOS usan una CS:IP de 0x0000:0x7C00
mientras que otras pueden usar 0x07C0:0x0000
. [21] 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 por lo demás, 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 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 estar activo y para que el teclado funcione incluso si no se llama al servicio de teclado del BIOS y se colocan en el búfer de escritura anticipada de 15 caracteres mantenido por 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 simplemente configurar incondicionalmente una nueva pila. [22]
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 placa base/chipset según sea necesario para que todos los servicios del BIOS estén listos. Se ha configurado y se está ejecutando la actualización de DRAM para toda la DRAM del sistema en la memoria convencional y en la memoria extendida, pero no necesariamente en la memoria expandida. 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 el BIOS genera para que los programas se conecten, se han configurado en un ISR ficticio predeterminado que regresa inmediatamente. El BIOS mantiene un bloque reservado de RAM del sistema en direcciones 0x00400–0x004FF
con varios parámetros inicializados durante la POST. 0x00500
El programa de arranque puede utilizar toda la memoria en la dirección o superior ; incluso puede sobrescribirse a sí mismo. [23] [24]
Las tarjetas periféricas, como los adaptadores de bus host de unidades de disco duro y las tarjetas de video, tienen su propio firmware, y la opción ROM de extensión del BIOS puede ser parte del firmware de la tarjeta de expansión, lo que proporciona funcionalidad adicional al BIOS. El código de las ROM opcionales se ejecuta antes de que el BIOS inicie el sistema operativo desde el almacenamiento masivo . Estas ROM normalmente prueban e inicializan hardware, agregan nuevos servicios de BIOS o reemplazan 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 en red . El funcionamiento de un sistema informático compatible con IBM se puede cambiar completamente quitando o insertando una tarjeta adaptadora (o un chip ROM) que contiene una ROM de extensión del BIOS.
El BIOS de la placa base normalmente 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, Video BIOS ), complementando o reemplazando 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 opcionales 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 (normalmente esto significa que es necesaria 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 todo lo contrario, y el código ROM del BIOS generalmente se copia ("sombrea") en la RAM para que se ejecute más rápido).
Si una ROM de expansión desea cambiar la forma en que arranca el sistema (por ejemplo, desde un dispositivo de red o un adaptador SCSI) de forma cooperativa, puede utilizar la API de especificación de arranque del BIOS (BBS) para registrar su capacidad para hacerlo. Una vez que las ROM de expansión se hayan registrado utilizando las API de BBS, el usuario puede seleccionar entre las opciones de inicio disponibles desde la interfaz de usuario del BIOS. Esta es la razón por la que la mayoría de las implementaciones de BIOS de PC compatibles con BBS no permitirán al usuario ingresar a la interfaz de usuario del BIOS hasta que las ROM de expansión hayan terminado de ejecutarse y registrarse en la API de BBS. [ cita necesaria ]
Además, si una ROM de expansión desea cambiar la forma en que el sistema arranca unilateralmente, puede simplemente conectar INT 19h u otras interrupciones normalmente llamadas 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 arranque del BIOS con uno propio, o simplemente puede modificar la secuencia de arranque insertando sus propias acciones de arranque en ella, evitando que el BIOS detecte ciertos dispositivos como arrancables, 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 arranque del BIOS nativo de la placa base. [ cita necesaria ]
Una vez que el BIOS de la placa base completa su POST, la mayoría de las versiones del BIOS buscan módulos ROM de opción, 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 la dirección 0xA0000 y por encima) y ejecuta cada ROM encontrada, en orden. Para descubrir ROM de opciones asignadas en memoria, una implementación de BIOS escanea el espacio de direcciones en modo real desde 0x0C0000
límites 0x0F0000
de 2 KB (2048 bytes), buscando una firma de ROM de dos bytes : 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 "desplazamiento de entrada") . Si la ROM tiene una suma de comprobació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 toma el control, normalmente probando e inicializando el hardware que controla y registrando vectores de interrupción para su uso por aplicaciones posteriores al arranque. Puede utilizar servicios de BIOS (incluidos los proporcionados por ROM opcionales previamente inicializadas) para proporcionar una interfaz de configuración de usuario, mostrar información de diagnóstico o hacer cualquier otra cosa que requiera. Es posible que una ROM opcional no regrese al BIOS, adelantándose por completo a la secuencia de inicio del BIOS.
Una ROM opcional normalmente debería regresar al BIOS después de completar su proceso de inicialización. Una vez que (y si) regresa una ROM de opción, el BIOS continúa buscando más ROM de opción, llamando a cada una a medida que las encuentra, hasta que se haya escaneado toda el área de ROM de opción en el espacio de memoria.
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 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 pueden También se pueden eliminar 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 frontal. 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 BÁSICOS, 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.
La BIOS ROM está personalizada para el hardware del fabricante en particular, lo que permite que servicios de bajo nivel (como leer una pulsación de tecla o escribir un sector de datos en un disquete) se proporcionen de forma estandarizada a los programas, incluidos los sistemas operativos. Por ejemplo, una PC IBM puede tener un adaptador de pantalla monocromático o en color (que utiliza diferentes direcciones de memoria de pantalla y hardware), pero se puede invocar una única llamada estándar al sistema BIOS para mostrar un carácter en una posición específica de 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, se puede acceder a los servicios del BIOS mediante un programa de aplicación (o mediante MS-DOS) 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 omitieron el BIOS y programaron el hardware de visualización de video directamente. Otros programadores de gráficos, particularmente pero no exclusivamente en la escena de 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 eludirlo. Dado que el BIOS compatible con AT se ejecutaba en modo real Intel , los sistemas operativos que se ejecutaban en modo protegido en procesadores 286 y posteriores requerían controladores de dispositivos de hardware compatibles con el funcionamiento 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 utilizan 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 normalmente 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. [6]
Muchas PC modernas aún pueden arrancar 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 firmware UEFI compatible con CSM.
Los procesadores Intel tienen microcódigo reprogramable desde la microarquitectura P6 . [25] [26] [27] 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 inicial del procesador; 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 actualizaciones del microcódigo se realiza cada vez que se enciende el sistema. Sin un microcódigo reprogramable, sería necesario un costoso cambio de procesador; [28] por ejemplo, el error Pentium FDIV se convirtió en un costoso fiasco para Intel, ya que requirió una retirada del producto porque el microcódigo defectuoso del procesador Pentium original no podía reprogramarse. Los sistemas operativos también pueden actualizar el microcódigo del procesador principal . [29] [30]
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. [31] [32]
Los fabricantes de computadoras que distribuyen versiones OEM de Microsoft Windows y software de aplicación de Microsoft pueden usar el SLIC para autenticar la licencia en el disco de instalación OEM de Windows y en 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 con el SLIC en el BIOS como medio de autoactivación (consulte Preinstalación de sistema bloqueado , 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 poder evitar la activación. [31] Esto se puede lograr si el usuario realiza una restauración utilizando una imagen prepersonalizada proporcionada por el OEM. Los usuarios avanzados pueden copiar los archivos de certificado necesarios de la imagen OEM, decodificar la clave del producto SLP y luego realizar la activación SLP manualmente.
Algunas implementaciones de BIOS permiten overclocking , una acción en la que la CPU se ajusta a una frecuencia 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 refrigeración insuficiente y, en general, acortar la vida útil de los componentes. El overclocking, cuando se realiza incorrectamente, también puede provocar que los componentes se sobrecalienten tan rápidamente que se destruyan mecánicamente. [33]
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. [34]
Llamar directamente a los servicios del BIOS en modo real es ineficaz para los sistemas operativos en modo protegido (y modo largo ). Los sistemas operativos multitarea modernos no utilizan las llamadas de interrupción del BIOS después de la carga inicial.
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 año 2000, la mayoría de las BIOS proporcionan interfaces ACPI , SMBIOS , VBE y e820 para los sistemas operativos modernos. [35] [36] [37] [38] [39]
Después de cargar los sistemas operativos , el código del modo de administración del sistema todavía se ejecuta en SMRAM. Desde 2010, la tecnología BIOS se encuentra en un proceso de transición hacia UEFI . [8]
Históricamente, el BIOS de IBM PC y XT no tenía una interfaz de usuario incorporada. Las versiones de BIOS en PC anteriores (clase XT) no eran configurables por software; en cambio, los usuarios configuran las opciones mediante 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 RAM CMOS) que contenía la configuración del BIOS. [40] 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. Se insertó un "disquete de referencia" especial 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 dispositivo 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 anular si se podía abrir la carcasa de la computadora). Cualquiera que pudiera encender la computadora podría iniciarla. [ cita necesaria ]
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 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 la POST del BIOS y el proceso de inicio.
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 durante un breve período de tiempo durante el inicio temprano, por ejemplo, "Presione DEL para ingresar a la configuración". La clave real depende del hardware específico. Las características presentes en la utilidad de configuración del BIOS normalmente incluyen:
Una pantalla de configuración de BIOS moderna a menudo presenta una pestaña de Estado de salud de la PC o Monitoreo de hardware , que interactúa directamente con un chip de Monitor de hardware de la placa base. [41] 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 se realizan directamente mediante el chip Hardware Monitor, que puede ser un chip separado, conectado a través de I²C o SMBus , o venir como parte de una solución Super I/O , conectado a través de la arquitectura estándar de la industria (ISA) o el recuento bajo de pines (LPC). [42] 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 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. [43] [44]
En las PC modernas, la BIOS se almacena en una memoria flash EEPROM o NOR regrabable , lo que permite reemplazar y modificar el contenido. Esta reescritura de los contenidos a veces se denomina flasheo. Se puede hacer mediante un programa especial, generalmente proporcionado por el fabricante del sistema, o en POST , con una imagen del BIOS en un disco duro o unidad flash USB. Un archivo que contiene dicho contenido a veces se denomina "imagen de BIOS". Es posible que se actualice un BIOS para actualizarlo a una versión más nueva para corregir errores, proporcionar un rendimiento mejorado o admitir hardware más nuevo.
El BIOS de la PC IBM original (y el casete BASIC) se almacenaban 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 más fáciles de programar que los chips PROM borrables ultravioleta ( EPROM ) estándar. Los chips flash se programan (y reprograman) en el circuito, mientras que los chips EPROM deben retirarse de la placa base para su reprogramación. [45] Las versiones de BIOS se actualizan para aprovechar las versiones más nuevas de hardware y corregir errores en revisiones anteriores de BIOS. [46]
A partir de IBM AT, las PC admitían un reloj de hardware configurable a través de 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 de 1997 admitieron el año 2000 configurando automáticamente el bit del siglo cuando el reloj pasó la medianoche del 31 de diciembre de 1999. [47]
Los primeros chips flash se conectaron al bus ISA . A partir de 1998, la memoria flash del BIOS se trasladó al bus LPC , tras una nueva implementación estándar conocida como "firmware hub" (FWH). En 2005, la memoria flash del BIOS se trasladó al bus SPI . [48]
El tamaño del BIOS y la capacidad de la ROM, EEPROM u otros medios en los que pueda almacenarse han aumentado con el tiempo a medida que se han agregado nuevas funciones al código; Ahora existen versiones de BIOS con tamaños de hasta 32 megabytes. Por el contrario, el BIOS de la PC 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 portátiles ASUS incluían Splashtop OS integrado en sus circuitos integrados de memoria flash NAND. [49] 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 el 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 IBM AT, era un dispositivo con conector 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 era necesaria una actualización de este "BIOS del teclado" para aprovechar el software que podía usar la memoria superior. [ cita necesaria ]
El BIOS puede contener componentes como el Código de referencia de memoria (MRC), que es responsable de la inicialización de la memoria (por ejemplo, SPD y la inicialización de tiempos de memoria ). [50] : 8 [51]
El BIOS moderno [52] incluye firmware Intel Management Engine o AMD Platform Security Processor .
IBM publicó los listados completos 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 los listados de BIOS es que cualquiera puede ver exactamente qué hace un BIOS definitivo y cómo lo hace.
En mayo de 1984, Phoenix Software Associates lanzó su primer ROM-BIOS, que permitió a los OEM crear clones esencialmente totalmente compatibles sin tener que realizar ingeniería inversa en el BIOS de la PC IBM, como lo había hecho Compaq con la portátil , lo que ayudó a impulsar el crecimiento de la PC. industria compatible y ventas de versiones de DOS que no sean IBM. [55] La primera BIOS American Megatrends (AMI) se lanzó en 1986.
Los nuevos estándares insertados en el BIOS generalmente no cuentan con documentación pública completa ni listados de BIOS. Como resultado, no es tan fácil conocer los detalles íntimos sobre las muchas adiciones al BIOS que no son de IBM como sobre los servicios principales del BIOS.
Muchos proveedores de placas base para PC obtuvieron la licencia del "núcleo" del BIOS y el 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 este motivo, las BIOS actualizadas normalmente se obtienen directamente del fabricante de la placa base. Los principales IBV incluyeron American Megatrends (AMI), Insyde Software , Phoenix Technologies y Byosoft. Microid Research y Award Software fueron adquiridos por Phoenix Technologies en 1998; Posteriormente, Phoenix eliminó gradualmente la marca Award (aunque Award Software todavía se acredita en las versiones más nuevas de AwardBIOS y en los firmwares UEFI). [ ¿cuando? ] General Software , que también fue adquirida por Phoenix en 2007, vendía BIOS para sistemas integrados basados en procesadores Intel.
La comunidad de código abierto incrementó sus esfuerzos para desarrollar un reemplazo para los BIOS propietarios y sus futuras encarnaciones con contrapartes de código abierto. Open Firmware fue uno de los primeros intentos de crear un estándar de código abierto para el firmware de arranque. Inicialmente fue respaldado por IEEE en su estándar IEEE 1275-1994, pero fue retirado en 2005. [56] [57] Los ejemplos posteriores incluyen los proyectos libreboot , coreboot y OpenBIOS / Open Firmware . AMD proporcionó especificaciones de producto para algunos conjuntos de chips y Google patrocina el proyecto. El fabricante de placas base Tyan ofrece coreboot junto al BIOS estándar con su línea de placas base Opteron .
Los chips de memoria EEPROM y Flash son ventajosos porque el usuario puede actualizarlos fácilmente; Es habitual que los fabricantes de hardware publiquen 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 (mediante sumas de comprobación hash u otros métodos) antes de transferirle el control. Si el bloque de arranque detecta algún daño en el BIOS principal, normalmente advertirá al usuario que se debe iniciar un proceso de recuperación arrancando 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 respaldo (a veces denominado placas DualBIOS) para recuperarse de daños en el BIOS.
Hay al menos cinco virus conocidos que atacan el BIOS. Dos de los cuales tenían fines de demostración. El primero que se encontró en estado salvaje fue Mebromi , dirigido a usuarios chinos.
El primer virus de la BIOS fue BIOS Meningitis, que en lugar de borrar los chips de la BIOS los infectaba. BIOS Meningitis era relativamente inofensiva, en comparación con un virus como CIH .
El segundo virus del BIOS fue CIH , también conocido como "Virus de Chernobyl", que fue capaz de borrar el contenido flash ROM BIOS 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 la gente tenía que quitar el IC flash ROM de la placa base y reprogramarlo. CIH apuntó al entonces extendido chipset de placa base Intel i430TX y aprovechó el hecho de que los sistemas operativos Windows 9x , también muy extendidos en aquel 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 conjuntos de chips que son incompatibles con el conjunto de chips Intel i430TX y también con otros tipos de IC flash ROM. También hay protección adicional contra reescrituras accidentales del BIOS en forma de bloques de arranque que están protegidos contra sobrescrituras accidentales o sistemas equipados con BIOS dual 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 , sistemas operativos Windows basados 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 . [58]
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 del BIOS siguen siendo posibles; [59] dado que la mayoría de los usuarios domésticos de Windows sin el UAC de Windows Vista/7 ejecutan todas las aplicaciones con privilegios administrativos, un virus moderno tipo CIH podría, en principio, obtener acceso al hardware sin utilizar primero un exploit. [ cita necesaria ] El sistema operativo OpenBSD impide 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 reiniciar la máquina. . [ cita necesaria ]
El tercer virus BIOS fue una técnica presentada por John Heasman, consultor principal de seguridad de Next-Generation Security Software, con sede en el Reino Unido. En 2006, en la Conferencia de Seguridad Black Hat, mostró cómo elevar privilegios y leer la memoria física, utilizando procedimientos maliciosos que reemplazaban las funciones ACPI normales almacenadas en la memoria flash. [60]
El cuarto virus del BIOS fue una técnica llamada "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 [61] y Alfredo Ortega, de Core Security Technologies, demostraron cómo insertar código malicioso en las rutinas de descompresión del BIOS, permitiendo un control casi total de la PC en el 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". [62]
Mebromi es un troyano que ataca a ordenadores con AwardBIOS , Microsoft Windows y software antivirus de dos empresas chinas: Rising Antivirus y Jiangmin KV Antivirus. [63] [64] [65] Mebromi instala un rootkit que infecta el registro de arranque maestro .
En una entrevista de diciembre de 2013 con 60 Minutes , Deborah Plunkett, directora de Garantía de Información de la Agencia de Seguridad Nacional de EE. UU. , afirmó que la NSA había descubierto y frustrado un posible ataque al BIOS por parte de un Estado nación extranjero, dirigido al sistema financiero estadounidense. [66] El programa citó fuentes anónimas que alegaban que se trataba de un complot chino. [66] Sin embargo, artículos de seguimiento en The Guardian , [67] The Atlantic , [68] Wired [69] y The Register [70] refutaron las afirmaciones de la NSA.
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 en el PCH . Los usuarios finales no pueden desactivar esta función.
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 x86 y Arm ; El desarrollo de la especificación está impulsado por el Foro Unificado EFI , un grupo de interés especial de la industria . El arranque EFI solo ha sido compatible con las versiones de Microsoft Windows que admiten GPT , [71] el kernel de Linux 2.6.1 y posteriores, y macOS en Mac con procesador Intel . [72] A partir de 2014 [update], el nuevo hardware de PC se envía predominantemente con firmware UEFI. La arquitectura de protección de rootkit también puede impedir que el sistema ejecute los cambios de software propios del usuario, lo que hace que UEFI sea controvertido como reemplazo del BIOS heredado en la comunidad de hardware abierto . Además, Windows 11 requiere UEFI para arrancar, [73] con la excepción de las ediciones IoT Enterprise de Windows 11. [7]
Otras alternativas a la funcionalidad del "BIOS heredado" en el mundo x86 incluyen coreboot y libreboot .
Algunos servidores y estaciones de trabajo utilizan un Open Firmware 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 BIOS heredados de las computadoras MacBook Pro . Como tal, la utilidad BIOS ya no admite 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 heredados para 2020. Desde 2019, las nuevas PC OEM con plataforma Intel ya no admiten la opción heredada.
+0x1FE
en los sectores de arranque es 0x55 0xAA
, es decir, 0x55
en el desplazamiento +0x1FE
y 0xAA
en el desplazamiento +0x1FF
. Dado que se debe asumir la representación little-endian en el contexto de máquinas compatibles con IBM PC , esto se puede escribir como palabra de 16 bits 0xAA55
en programas para procesadores x86 (tenga en cuenta el orden intercambiado), mientras que tendría que escribirse como 0x55AA
en programas para otros Arquitecturas de CPU que utilizan una representación big-endian . Dado que esto se ha mezclado numerosas veces en libros e incluso en documentos de referencia originales de Microsoft, este artículo utiliza la representación en disco de bytes basada en desplazamiento para evitar cualquier posible mala interpretación.{{cite web}}
: CS1 maint: archived copy as title (link){{cite book}}
: |journal=
ignorado ( ayuda )