BIOS

ImprimirCitar
Firmware para serviços de inicialização e tempo de execução de hardware
Um par de chips AMD BIOS para um computador Dell 310 da década de 1980. A parte inferior mostra a janela distinta de um chip EPROM.

Na computação, BIOS (, BY-oss, -⁠ohss; Sistema básico de entrada/saída, também conhecido como BIOS do sistema, ROM BIOS, BIOS ROM ou PC BIOS) é um firmware usado para fornecer serviços de tempo de execução para sistemas operacionais e programas e para executar a inicialização do hardware durante a processo de inicialização (inicialização inicial). O firmware do BIOS vem pré-instalado em um IBM PC ou em uma placa de sistema compatível com IBM PC e existe em alguns sistemas baseados em UEFI para manter a compatibilidade com sistemas operacionais que não oferecem suporte à operação nativa de UEFI. O nome se origina do Sistema Básico de Entrada/Saída usado no sistema operacional CP/M em 1975. O BIOS originalmente proprietário do IBM PC foi submetido a engenharia reversa por algumas empresas (como a Phoenix Technologies) procurando criar sistemas compatíveis. A interface desse sistema original serve como um padrão de fato.

O BIOS em PCs modernos inicializa e testa os componentes de hardware do sistema (autoteste de inicialização) e carrega um carregador de boot de um dispositivo de armazenamento em massa que então inicializa um kernel. Na era do DOS, o BIOS fornecia chamadas de interrupção do BIOS para teclado, monitor, armazenamento e outros dispositivos de entrada/saída (E/S) que padronizavam uma interface para programas aplicativos e o sistema operacional. Os sistemas operacionais mais recentes não usam as chamadas de interrupção do BIOS após a inicialização.

A maioria das implementações de BIOS são projetadas especificamente para funcionar com um determinado modelo de computador ou placa-mãe, fazendo interface com vários dispositivos, especialmente o chipset do sistema. Originalmente, o firmware do BIOS era armazenado em um chip ROM na placa-mãe do PC. Em sistemas de computador posteriores, o conteúdo do BIOS é armazenado na memória flash para que possa ser reescrito sem remover o chip da placa-mãe. Isso permite atualizações fáceis do usuário final para o firmware do BIOS, para que novos recursos possam ser adicionados ou bugs corrigidos, mas também cria a possibilidade de o computador ser infectado por rootkits do BIOS. Além disso, uma atualização de BIOS que falha pode bloquear a placa-mãe. A última versão do Microsoft Windows em execução em PCs que usam o firmware do BIOS é o Windows 10.

A Unified Extensible Firmware Interface (UEFI) é uma sucessora do legado do BIOS do PC, com o objetivo de resolver suas limitações técnicas.

História

/* C P / M B A S I C I / O S Y S T E M (B I O S)
COPYRIGHT (C) GARY A. REALIZAÇÃO
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. REALIZAÇÃO
JUNE, 1975 */
Um trecho do BDOS. Cabeçalho de arquivo PLM no código fonte PL/M de CP/M 1.1 ou 1.2 para Lawrence Livermore Laboratories (LLL)

O termo BIOS (Basic Input/Output System) foi criado por Gary Kildall e apareceu pela primeira vez no sistema operacional CP/M em 1975, descrevendo a parte específica da máquina do CP/M carregada durante o tempo de inicialização que faz interface diretamente com o hardware. (Uma máquina CP/M geralmente possui apenas um gerenciador de inicialização simples em sua ROM.)

Versões do MS-DOS, PC DOS ou DR-DOS contêm um arquivo chamado "IO.SYS", "IBMBIO.COM", "IBMBIO.SYS&# 34; ou "DRBIOS.SYS"; este arquivo é conhecido como "DOS BIOS" (também conhecido como "DOS I/O System") e contém a parte específica de hardware de nível inferior do sistema operacional. Juntamente com o "System BIOS", específico do hardware subjacente, mas independente do sistema operacional, que reside na ROM, ele representa o análogo do "CP/M BIOS".

O BIOS originalmente proprietário do IBM PC foi submetido a engenharia reversa por algumas empresas (como a Phoenix Technologies) procurando criar sistemas compatíveis.

Com a introdução das máquinas PS/2, a IBM dividiu o BIOS do sistema em partes de modo real e modo protegido. A parte do modo real foi criada para fornecer compatibilidade com sistemas operacionais existentes, como DOS e, portanto, foi chamada de "CBIOS" (para "BIOS de compatibilidade"), enquanto o "ABIOS" (para "Advanced BIOS") forneceu novas interfaces especificamente adequadas para sistemas operacionais multitarefa, como OS/2.

Interface do usuário

O BIOS do IBM PC e XT originais não tinha interface de usuário interativa. Códigos ou mensagens de erro foram exibidos na tela, ou séries codificadas de sons foram geradas para sinalizar erros quando o autoteste de inicialização (POST) não prosseguiu a ponto de inicializar com êxito um adaptador de exibição de vídeo. As opções no IBM PC e XT foram definidas por interruptores e jumpers na placa principal e nas placas de expansão. A partir de meados da década de 1990, tornou-se comum a ROM do BIOS incluir um "Utilitário de configuração do BIOS" (BCU) ou "Utilitário de configuração do BIOS", acessado na inicialização do sistema por uma sequência de teclas específica. Este programa permitia ao usuário definir as opções de configuração do sistema, do tipo anteriormente definido por chaves DIP, por meio de um sistema de menu interativo controlado pelo teclado. No período intermediário, os PCs compatíveis com IBM—incluindo o IBM AT—mantinham as definições de configuração em RAM alimentada por bateria e usavam um programa de configuração inicializável em disquete, não na ROM, para definir as opções de configuração contidas nessa memória. O disquete foi fornecido com o computador e, se for perdido, as configurações do sistema não poderão ser alteradas. O mesmo se aplicava em geral a computadores com barramento EISA, para os quais o programa de configuração era denominado EISA Configuration Utility (ECU).

Um computador moderno compatível com Wintel fornece uma rotina de configuração essencialmente inalterada em relação aos utilitários de configuração do BIOS residentes na ROM do final dos anos 90; o usuário pode configurar as opções de hardware usando o teclado e a tela de vídeo. A máquina Wintel moderna pode armazenar as definições de configuração do BIOS em flash ROM, talvez o mesmo flash ROM que contém o próprio BIOS.

Operação

Inicialização do sistema

Os primeiros processadores Intel começaram no endereço físico 000FFFF0h. Os sistemas com processadores posteriores fornecem lógica para iniciar a execução do BIOS a partir da ROM do sistema.

Se o sistema acabou de ser ligado ou o botão de reinicialização foi pressionado ("inicialização a frio"), o autoteste completo de inicialização (POST) será executado. Se Ctrl+Alt+Delete foi pressionado ("warm boot"), um valor de sinalizador especial armazenado na memória não volátil do BIOS ("CMOS") testado pelo BIOS permite ignorar o longo POST e Detecção de memória.

O POST identifica, testa e inicializa os dispositivos do sistema, como CPU, chipset, RAM, placa-mãe, placa de vídeo, teclado, mouse, disco rígido, unidade de disco óptico e outros hardwares, incluindo periféricos integrados.

Os primeiros PCs IBM tinham uma rotina no POST que baixava um programa para a RAM através da porta do teclado e o executava. Este recurso foi planejado para fins de teste ou diagnóstico de fábrica.

Processo de inicialização

Processo de inicialização

Após a verificação da ROM opcional ser concluída e todos os módulos ROM detectados com somas de verificação válidas terem sido chamados, ou imediatamente após o POST em uma versão do BIOS que não verifica ROMs opcionais, o BIOS chama INT 19h para iniciar o processamento de inicialização. Após a inicialização, os programas carregados também podem chamar o INT 19h para reinicializar o sistema, mas devem ter cuidado para desativar interrupções e outros processos de hardware assíncronos que possam interferir no processo de reinicialização do BIOS, caso contrário, o sistema pode travar ou travar durante a reinicialização.

Quando INT 19h é chamado, o BIOS tenta localizar o software do carregador de inicialização em um "dispositivo de inicialização", como um disco rígido, disquete, CD ou DVD. Ele carrega e executa o primeiro software de inicialização que encontra, dando a ele o controle do PC.

O BIOS usa os dispositivos de inicialização definidos na memória BIOS não volátil (CMOS) ou, nos primeiros PCs, chaves DIP. O BIOS verifica cada dispositivo para ver se é inicializável tentando carregar o primeiro setor (setor de inicialização). Se o setor não puder ser lido, o BIOS prosseguirá para o próximo dispositivo. Se o setor for lido com sucesso, alguns BIOS também verificarão a assinatura do setor de inicialização 0x55 0xAA nos últimos dois bytes do setor (que tem 512 bytes de comprimento), antes de aceitar um setor de inicialização e considerar o dispositivo inicializável.

Quando um dispositivo inicializável é encontrado, o BIOS transfere o controle para o setor carregado. O BIOS não interpreta o conteúdo do setor de inicialização, exceto para possivelmente verificar a assinatura do setor de inicialização nos últimos dois bytes. A interpretação de estruturas de dados como tabelas de partição e blocos de parâmetros do BIOS é feita pelo programa de inicialização no próprio setor de inicialização ou por outros programas carregados durante o processo de inicialização.

Um dispositivo que não seja um disco, como um adaptador de rede, tenta inicializar por um procedimento definido por sua ROM opcional ou o equivalente integrado à BIOS ROM da placa-mãe. Como tal, as ROMs opcionais também podem influenciar ou suplantar o processo de inicialização definido pela BIOS ROM da placa-mãe.

Com o padrão de inicialização de mídia ótica El Torito, a unidade ótica na verdade emula um 3,5" disquete de alta densidade para o BIOS para fins de inicialização. Lendo o "primeiro setor" de um CD-ROM ou DVD-ROM não é uma operação simplesmente definida como em um disquete ou disco rígido. Além disso, a complexidade do meio torna difícil escrever um programa de inicialização útil em um setor. O disquete virtual inicializável pode conter software que fornece acesso à mídia ótica em seu formato nativo.

Prioridade de inicialização

O usuário pode selecionar a prioridade de inicialização implementada pelo BIOS. Por exemplo, a maioria dos computadores possui um disco rígido inicializável, mas às vezes há uma unidade de mídia removível com maior prioridade de inicialização, portanto, o usuário pode fazer com que um disco removível seja inicializado.

Na maioria dos BIOS modernos, a ordem de prioridade de inicialização pode ser configurada pelo usuário. Em BIOS mais antigos, opções limitadas de prioridade de inicialização são selecionáveis; nos primeiros BIOS, um esquema de prioridade fixa foi implementado, com unidades de disquete primeiro, discos fixos (ou seja, discos rígidos) em segundo lugar e normalmente nenhum outro dispositivo de inicialização suportado, sujeito à modificação dessas regras por ROMs opcionais instalados. O BIOS em um PC antigo também normalmente inicializava apenas a partir da primeira unidade de disquete ou da primeira unidade de disco rígido, mesmo se houvesse duas unidades instaladas.

Falha de inicialização

No IBM PC e XT originais, se nenhum disco inicializável fosse encontrado, o ROM BASIC era iniciado chamando INT 18h. Como poucos programas usavam BASIC em ROM, os fabricantes de clones de PC o deixaram de fora; então, um computador que falhou ao inicializar a partir de um disco exibiria "No ROM BASIC" e parar (em resposta a INT 18h).

Os computadores posteriores exibiriam uma mensagem como "Nenhum disco inicializável encontrado"; alguns solicitariam a inserção de um disco e a pressão de uma tecla para repetir o processo de inicialização. Um BIOS moderno pode não exibir nada ou pode entrar automaticamente no utilitário de configuração do BIOS quando o processo de inicialização falha.

Ambiente de inicialização

O ambiente para o programa de inicialização é muito simples: a CPU está em modo real e os registradores de uso geral e de segmento são indefinidos, exceto SS, SP, CS e DL. CS:IP sempre aponta para o endereço físico 0x07C00. Quais valores CS e IP realmente têm não estão bem definidos. Alguns BIOS usam um CS:IP de 0x0000:0x7C00 enquanto outros podem usar 0x07C0:0x0000. Como os programas de inicialização são sempre carregados neste endereço fixo, não há necessidade de um programa de inicialização ser relocável. DL pode conter o número da unidade, conforme usado com INT 13h, do dispositivo de inicialização. SS:SP aponta para uma pilha válida que é presumivelmente grande o suficiente para suportar interrupções de hardware, mas, caso contrário, SS e SP são indefinidos. (Uma pilha já deve estar configurada para que as interrupções sejam atendidas, e as interrupções devem ser habilitadas para que a interrupção do timer-tick do sistema, que o BIOS sempre usa pelo menos para manter a contagem de hora do dia e que inicializa durante o POST, para estar ativo e para o teclado funcionar. O teclado funciona mesmo se o serviço de teclado do BIOS não for chamado; os pressionamentos de tecla são recebidos e colocados no buffer de digitação antecipada de 15 caracteres mantido pelo BIOS.) O programa de inicialização deve ser definido até sua própria pilha, porque o tamanho da pilha configurado pelo BIOS é desconhecido e sua localização também é variável; embora o programa de inicialização possa investigar a pilha padrão examinando SS:SP, é mais fácil e mais curto apenas configurar incondicionalmente uma nova pilha.

No momento da inicialização, todos os serviços do BIOS estão disponíveis e a memória abaixo do endereço 0x00400 contém a tabela de vetores de interrupção. O BIOS POST inicializou os temporizadores do sistema, controlador(es) de interrupção, controlador(es) DMA e outro hardware da placa-mãe/chipset conforme necessário para colocar todos os serviços do BIOS no status pronto. A atualização da DRAM para toda a DRAM do sistema na memória convencional e na memória estendida, mas não necessariamente na memória expandida, foi configurada e está em execução. Os vetores de interrupção correspondentes às interrupções do BIOS foram definidos para apontar para os pontos de entrada apropriados no BIOS, vetores de interrupção de hardware para dispositivos inicializados pelo BIOS foram definidos para apontar para os ISRs fornecidos pelo BIOS e algumas outras interrupções, incluindo aquelas que o BIOS gera para os programas serem conectados, foram definidos como um ISR fictício padrão que retorna imediatamente. O BIOS mantém um bloco reservado de RAM do sistema nos endereços 0x00400–0x004FF com vários parâmetros inicializados durante o POST. Toda a memória no endereço 0x00500 e acima pode ser usada pelo programa de inicialização; pode até sobrescrever a si mesmo.

Extensões (ROMs opcionais)

Placas periféricas, como adaptadores de barramento de host de unidade de disco rígido e placas de vídeo, têm seu próprio firmware, e a ROM opcional de extensão do BIOS pode fazer parte do firmware da placa de expansão, que fornece funcionalidade adicional ao BIOS. O código em ROMs opcionais é executado antes que o BIOS inicialize o sistema operacional a partir do armazenamento em massa. Essas ROMs normalmente testam e inicializam o hardware, adicionam novos serviços de BIOS ou substituem serviços de BIOS existentes por seus próprios serviços. Por exemplo, um controlador SCSI geralmente possui uma ROM de extensão do BIOS que adiciona suporte para discos rígidos conectados por meio desse controlador. Uma ROM de extensão pode, em princípio, conter um sistema operacional ou pode implementar um processo de inicialização totalmente diferente, como inicialização de rede. A operação de um sistema de computador compatível com IBM pode ser completamente alterada removendo ou inserindo uma placa adaptadora (ou um chip ROM) que contém uma extensão ROM do BIOS.

O BIOS da placa-mãe geralmente contém código para inicializar e inicializar o monitor integrado e o armazenamento integrado. Além disso, placas adaptadoras de plug-in como SCSI, RAID, placas de interface de rede e placas de vídeo geralmente incluem seu próprio BIOS (por exemplo, BIOS de vídeo), complementando ou substituindo o código BIOS do sistema para o componente fornecido. Mesmo os dispositivos embutidos na placa-mãe podem se comportar dessa maneira; suas ROMs opcionais podem fazer parte do BIOS da placa-mãe.

Uma placa adicional requer uma ROM opcional se a placa não for suportada pelo BIOS da placa-mãe e a placa precisar ser inicializada ou disponibilizada através dos serviços da BIOS antes que o sistema operacional possa ser carregado (geralmente isso significa que ela é necessária em o processo de inicialização). Uma vantagem adicional da ROM em alguns dos primeiros sistemas de PC (incluindo o IBM PCjr) era que a ROM era mais rápida que a RAM do sistema principal. (Em sistemas modernos, o caso é praticamente o inverso disso, e o código ROM do BIOS geralmente é copiado ("sombreado") na RAM para que seja executado mais rapidamente.)

Procedimento de inicialização

Se uma ROM de expansão deseja alterar a maneira como o sistema inicializa (como a partir de um dispositivo de rede ou um adaptador SCSI) de maneira cooperativa, ela pode usar a API BIOS Boot Specification (BBS) para registrar sua capacidade de fazê-lo. Depois que as ROMs de expansão forem registradas usando as APIs do BBS, o usuário poderá selecionar entre as opções de inicialização disponíveis na interface do usuário do BIOS. É por isso que a maioria das implementações de BIOS de PC compatível com BBS não permitirá que o usuário entre na interface de usuário do BIOS até que as ROMs de expansão tenham terminado de executar e se registrar com a API BBS.

Além disso, se uma ROM de expansão deseja alterar a maneira como o sistema inicializa unilateralmente, ela pode simplesmente conectar INT 19h ou outras interrupções normalmente chamadas da interrupção 19h, como INT 13h, o serviço de disco do BIOS, para interceptar o processo de inicialização do BIOS. Em seguida, ele pode substituir o processo de inicialização do BIOS por um próprio ou pode simplesmente modificar a sequência de inicialização inserindo suas próprias ações de inicialização, impedindo que o BIOS detecte determinados dispositivos como inicializáveis ou ambos. Antes da promulgação da especificação de inicialização do BIOS, essa era a única maneira de as ROMs de expansão implementarem o recurso de inicialização para dispositivos não suportados para inicialização pelo BIOS nativo da placa-mãe.

Inicialização

Após o BIOS da placa-mãe concluir seu POST, a maioria das versões do BIOS procura por módulos ROM opcionais, também chamados de ROMs de extensão do BIOS, e os executa. O BIOS da placa-mãe procura ROMs de extensão em uma parte da "área de memória superior" (a parte do espaço de endereço de modo real x86 no endereço 0xA0000 e acima) e executa cada ROM encontrada, em ordem. Para descobrir ROMs opcionais mapeadas em memória, uma implementação de BIOS verifica o espaço de endereço em modo real de 0x0C0000 a 0x0F0000 em limites de 2 KB (2.048 bytes), procurando por um byte ROM assinatura: 0x55 seguido por 0xAA. Em uma ROM de expansão válida, esta assinatura é seguida por um único byte indicando o número de blocos de 512 bytes que a ROM de expansão ocupa na memória real, e o próximo byte é o ponto de entrada da ROM opcional (também conhecido como & #34;offset de entrada"). Se a ROM tiver uma soma de verificação válida, o BIOS transfere o controle para o endereço de entrada, que em uma ROM normal de extensão do BIOS deve ser o início da rotina de inicialização da extensão.

Nesse ponto, o código ROM de extensão assume, normalmente testando e inicializando o hardware que ele controla e registrando vetores de interrupção para uso por aplicativos pós-inicialização. Ele pode usar os serviços do BIOS (incluindo aqueles fornecidos por ROMs opcionais inicializados anteriormente) para fornecer uma interface de configuração do usuário, exibir informações de diagnóstico ou fazer qualquer outra coisa necessária. É possível que uma ROM opcional não retorne ao BIOS, antecipando completamente a sequência de inicialização do BIOS.

Uma ROM opcional normalmente deve retornar ao BIOS após concluir seu processo de inicialização. Uma vez (e se) uma ROM opcional retornar, o BIOS continuará procurando por mais ROMs opcionais, chamando cada uma conforme for encontrada, até que toda a área da ROM opcional no espaço de memória tenha sido verificada.

Colocação física

chips BIOS em um Dell 310 que foram atualizados substituindo as fichas

Os ROMs opcionais normalmente residem em placas adaptadoras. No entanto, o PC original, e talvez também o PC XT, tem um soquete de ROM sobressalente na placa-mãe (a "placa do sistema" nos termos da IBM) no qual uma ROM opcional pode ser inserida e as quatro ROMs que contêm o interpretador BASIC também podem ser removidas e substituídas por ROMs personalizadas que podem ser ROMs opcionais. O IBM PCjr é único entre os PCs por ter dois slots de cartucho ROM na frente. Os cartuchos nesses slots são mapeados para a mesma região da área de memória superior usada para ROMs opcionais, e os cartuchos podem conter módulos ROM opcionais que o BIOS reconheceria. Os cartuchos também podem conter outros tipos de módulos ROM, como programas BASIC, que são tratados de maneira diferente. Um cartucho PCjr pode conter vários módulos ROM de diferentes tipos, possivelmente armazenados juntos em um chip ROM.

Serviços do sistema operacional

A BIOS ROM é personalizada para o hardware do fabricante específico, permitindo que serviços de baixo nível (como ler um pressionamento de tecla ou gravar um setor de dados em disquete) sejam fornecidos de maneira padronizada para programas, incluindo operação sistemas. Por exemplo, um IBM PC pode ter um adaptador de vídeo monocromático ou colorido (usando hardware e endereços de memória de exibição diferentes), mas uma única chamada de sistema BIOS padrão pode ser invocada para exibir um caractere em uma posição especificada na tela em modo texto ou modo gráfico.

O BIOS fornece uma pequena biblioteca de funções básicas de entrada/saída para operar periféricos (como teclado, texto rudimentar e funções de exibição de gráficos e assim por diante). Ao usar o MS-DOS, os serviços do BIOS podem ser acessados por um programa aplicativo (ou pelo MS-DOS) executando uma instrução de interrupção INT 13h para acessar as funções do disco ou executando uma das várias outras chamadas de interrupção do BIOS documentadas para acessar o vídeo tela, teclado, cassete e outras funções do dispositivo.

Sistemas operacionais e software executivo projetados para substituir essa funcionalidade básica de firmware fornecem interfaces de software de substituição para software de aplicativo. Os aplicativos também podem fornecer esses serviços a si mesmos. Isso começou ainda na década de 1980 no MS-DOS, quando os programadores observaram que o uso dos serviços de vídeo do BIOS para exibição de gráficos era muito lento. Para aumentar a velocidade de saída da tela, muitos programas ignoraram o BIOS e programaram o hardware de exibição de vídeo diretamente. Outros programadores gráficos, particularmente, mas não exclusivamente na demoscene, observaram que havia recursos técnicos dos adaptadores de vídeo do PC que não eram suportados pelo IBM BIOS e não podiam ser aproveitados sem contorná-lo. Como o BIOS compatível com AT era executado no modo real da Intel, os sistemas operacionais executados no modo protegido em processadores 286 e posteriores exigiam drivers de dispositivo de hardware compatíveis com a operação no modo protegido para substituir os serviços do BIOS.

Em PCs modernos que executam sistemas operacionais modernos (como Windows e Linux), as chamadas de interrupção do BIOS são usadas apenas durante a inicialização e o carregamento inicial dos sistemas operacionais. Antes que a primeira tela gráfica do sistema operacional seja exibida, a entrada e a saída são normalmente tratadas pelo BIOS. Um menu de inicialização, como o menu de texto do Windows, que permite aos usuários escolher um sistema operacional para inicializar, inicializar no modo de segurança ou usar a última configuração válida conhecida, é exibido no BIOS e recebe entrada do teclado no BIOS.

Muitos PCs modernos ainda podem inicializar e executar sistemas operacionais legados, como MS-DOS ou DR-DOS, que dependem fortemente do BIOS para seu console e E/S de disco, desde que o sistema tenha um BIOS ou um CSM compatível Firware UEFI.

Atualizações de microcódigo do processador

Os processadores Intel têm microcódigo reprogramável desde a microarquitetura P6. Os processadores AMD têm microcódigo reprogramável desde a microarquitetura K7. O BIOS contém patches para o microcódigo do processador que corrige erros no microcódigo inicial do processador; o microcódigo é carregado na SRAM do processador, portanto, a reprogramação não é persistente, portanto, o carregamento das atualizações do microcódigo é realizado sempre que o sistema é ligado. Sem microcódigo reprogramável, seria necessária uma dispendiosa troca de processador; por exemplo, o bug do Pentium FDIV se tornou um fiasco caro para a Intel, pois exigia um recall do produto porque o microcódigo defeituoso do processador Pentium original não podia ser reprogramado. Os sistemas operacionais também podem atualizar o microcódigo do processador principal.

Identificação

Alguns BIOS contêm uma tabela de descrição de licenciamento de software (SLIC), uma assinatura digital colocada dentro do BIOS pelo fabricante do equipamento original (OEM), por exemplo, Dell. O SLIC é inserido na tabela de dados ACPI e não contém nenhum código ativo.

Os fabricantes de computadores que distribuem versões OEM do Microsoft Windows e do software aplicativo da Microsoft podem usar o SLIC para autenticar o licenciamento para o disco de instalação OEM do Windows e o disco de recuperação do sistema que contém o software Windows. Os sistemas com um SLIC podem ser pré-ativados com uma chave de produto OEM e verificam um certificado OEM formatado em XML em relação ao SLIC no BIOS como um meio de autoativação (consulte Pré-instalação bloqueada do sistema, SLP). Se um usuário realizar uma nova instalação do Windows, ele precisará ter a chave OEM (seja SLP ou COA) e o certificado digital de seu SLIC para ignorar a ativação. Isso pode ser obtido se o usuário executar uma restauração usando uma imagem pré-personalizada fornecida pelo OEM. Os usuários avançados podem copiar os arquivos de certificado necessários da imagem OEM, decodificar a chave do produto SLP e executar a ativação SLP manualmente. Cracks para distribuições não genuínas do Windows geralmente editam o SLIC ou o emulam para ignorar a ativação do Windows.

Overclock

Algumas implementações de BIOS permitem overclocking, uma ação na qual a CPU é ajustada para uma taxa de clock mais alta do que a classificação do fabricante para capacidade garantida. O overclocking pode, no entanto, comprometer seriamente a confiabilidade do sistema em computadores com refrigeração insuficiente e geralmente encurtar a vida útil dos componentes. O overclock, quando executado incorretamente, também pode causar o superaquecimento dos componentes tão rapidamente que eles se destroem mecanicamente.

Uso moderno

Alguns sistemas operacionais mais antigos, por exemplo, o MS-DOS, dependem do BIOS para executar a maioria das tarefas de entrada/saída no PC.

Chamar diretamente os serviços do BIOS em modo real é ineficiente para sistemas operacionais em modo protegido (e modo longo). As chamadas de interrupção do BIOS não são usadas por sistemas operacionais multitarefa modernos após o carregamento inicial.

Na década de 1990, o BIOS forneceu algumas interfaces de modo protegido para Microsoft Windows e sistemas operacionais semelhantes ao Unix, como Advanced Power Management (APM), Plug and Play BIOS, Desktop Management Interface (DMI), VESA BIOS Extensions (VBE), e820 e especificação de multiprocessador (MPS). A partir de 2000, a maioria dos BIOS fornece interfaces ACPI, SMBIOS, VBE e e820 para sistemas operacionais modernos.

Após o carregamento dos sistemas operacionais, o código do modo de gerenciamento do sistema ainda está em execução na SMRAM. Desde 2010, a tecnologia BIOS está em um processo de transição para UEFI.

Configuração

Utilitário de configuração

Historicamente, o BIOS no IBM PC e XT não tinha interface de usuário integrada. As versões do BIOS em PCs anteriores (classe XT) não eram configuráveis por software; em vez disso, os usuários definem as opções por meio de chaves DIP na placa-mãe. Computadores posteriores, incluindo todos os compatíveis com IBM com CPUs 80286, tinham uma memória BIOS não volátil alimentada por bateria (chip CMOS RAM) que mantinha as configurações do BIOS. Essas configurações, como tipo de adaptador de vídeo, tamanho da memória e parâmetros do disco rígido, só podem ser definidas executando um programa de configuração de um disco, não embutido na ROM. Um "disquete de referência" foi inserido em um IBM AT para definir configurações como tamanho da memória.

As primeiras versões do BIOS não tinham senhas ou opções de seleção de dispositivo de inicialização. O BIOS foi codificado para inicializar a partir da primeira unidade de disquete ou, se isso falhar, do primeiro disco rígido. O controle de acesso nas primeiras máquinas da classe AT era feito por um interruptor físico de bloqueio de chave (que não era difícil de derrotar se o gabinete do computador pudesse ser aberto). Qualquer pessoa que pudesse ligar o computador poderia inicializá-lo.

Posteriormente, os computadores da classe 386 começaram a integrar o utilitário de configuração do BIOS na própria ROM, juntamente com o código do BIOS; esses computadores geralmente inicializam no utilitário de configuração do BIOS se uma determinada tecla ou combinação de teclas for pressionada; caso contrário, o BIOS POST e o processo de inicialização serão executados.

utilitário de configuração do BIOS de prêmio em um PC padrão

Um utilitário de configuração de BIOS moderno tem uma interface de usuário de texto (TUI) ou interface gráfica de usuário (GUI) acessada pressionando uma determinada tecla no teclado quando o PC é iniciado. Normalmente, a chave é anunciada por um curto período de tempo durante a inicialização inicial, por exemplo "Pressione DEL para entrar na configuração". A chave real depende do hardware específico. Os recursos presentes no utilitário de configuração do BIOS normalmente incluem:

  • Configurar, habilitar e desativar os componentes de hardware
  • Definindo o tempo do sistema
  • Definindo a ordem de inicialização
  • Definir várias senhas, como uma senha para garantir o acesso à interface de usuário do BIOS e impedir que usuários maliciosos iniciem o sistema de dispositivos de armazenamento portáteis não autorizados, ou uma senha para inicializar o sistema

Monitoramento de hardware

Uma tela de configuração de BIOS moderna geralmente apresenta uma guia Status de integridade do PC ou Monitoramento de hardware, que faz interface direta com um chip Monitor de hardware da placa-mãe. Isso permite monitorar a temperatura da CPU e do gabinete, a tensão fornecida pela fonte de alimentação, além de monitorar e controlar a velocidade das ventoinhas conectadas à placa-mãe.

Depois que o sistema é inicializado, o monitoramento do hardware e o controle do ventilador do computador são normalmente feitos diretamente pelo próprio chip do Monitor de Hardware, que pode ser um chip separado, conectado através de I2C ou SMBus, ou vir como parte de um Super I/O solução, com interface através da arquitetura padrão da indústria (ISA) ou baixa contagem de pinos (LPC). Alguns sistemas operacionais, como NetBSD com envsys e OpenBSD com sysctl hw.sensors, apresentam interface integrada com monitores de hardware.

No entanto, em algumas circunstâncias, o BIOS também fornece as informações subjacentes sobre o monitoramento de hardware por meio da ACPI; nesse caso, o sistema operacional pode estar usando a ACPI para executar o monitoramento de hardware.

Reprogramação

Kit de substituição do BIOS para um Dell 310 no final dos anos 80. Incluem-se dois chips, um suporte de plástico para as fichas, e um puller de chip.

Nos PCs modernos, o BIOS é armazenado em EEPROM regravável ou memória flash NOR, permitindo que o conteúdo seja substituído e modificado. Esta reescrita do conteúdo é algumas vezes chamada de piscando. Isso pode ser feito por um programa especial, geralmente fornecido pelo fabricante do sistema, ou no POST, com uma imagem da BIOS em um disco rígido ou pen drive USB. Às vezes, um arquivo com esse conteúdo é chamado de "uma imagem do BIOS". Um BIOS pode ser atualizado para atualizar para uma versão mais recente para corrigir bugs ou fornecer desempenho aprimorado ou para oferecer suporte a hardware mais recente.

Hardware

American Megatrends BIOS 686. Este chip BIOS está alojado em um pacote PLCC em uma tomada.

O IBM PC BIOS original (e o cassete BASIC) foi armazenado em chips de memória somente leitura (ROM) programados por máscara em soquetes na placa-mãe. As ROMs podem ser substituídas, mas não alteradas, pelos usuários. Para permitir atualizações, muitos computadores compatíveis usavam dispositivos de memória BIOS reprogramáveis, como EPROM, EEPROM e dispositivos de memória flash posteriores (geralmente NOR flash). De acordo com Robert Braver, presidente da Micro Firmware, fabricante do BIOS, os chips Flash BIOS tornaram-se comuns por volta de 1995 porque os chips PROM (EEPROM) apagáveis eletricamente são mais baratos e fáceis de programar do que os PROM (EPROM) apagáveis ultravioleta padrão) salgadinhos. Os chips flash são programados (e reprogramados) no circuito, enquanto os chips EPROM precisam ser removidos da placa-mãe para reprogramação. As versões do BIOS são atualizadas para aproveitar as versões mais recentes do hardware e corrigir bugs nas revisões anteriores do BIOS.

A partir do IBM AT, os PCs suportavam um relógio de hardware configurável por meio do BIOS. Tinha um bit de século que permitia mudar manualmente o século quando o ano 2000 aconteceu. A maioria das revisões do BIOS criadas em 1995 e quase todas as revisões do BIOS em 1997 suportaram o ano 2000 definindo o bit do século automaticamente quando o relógio passou da meia-noite de 31 de dezembro de 1999.

Os primeiros chips flash foram conectados ao barramento ISA. A partir de 1998, o flash do BIOS mudou para o barramento LPC, seguindo uma nova implementação padrão conhecida como "hub de firmware" (FWH). Em 2005, a memória flash do BIOS mudou para o barramento SPI.

O tamanho do BIOS e a capacidade da ROM, EEPROM ou outra mídia na qual ele pode ser armazenado aumentou com o tempo à medida que novos recursos foram adicionados ao código; Versões do BIOS agora existem com tamanhos de até 32 megabytes. Por outro lado, o IBM PC BIOS original estava contido em uma ROM de máscara de 8 KB. Algumas placas-mãe modernas incluem ICs de memória flash NAND ainda maiores que são capazes de armazenar sistemas operacionais compactos inteiros, como algumas distribuições Linux. Por exemplo, alguns notebooks ASUS incluíam o Splashtop OS embutido em seus ICs de memória flash NAND. No entanto, a ideia de incluir um sistema operacional junto com o BIOS na ROM de um PC não é nova; na década de 1980, a Microsoft ofereceu uma opção de ROM para MS-DOS, e foi incluída nas ROMs de alguns clones de PC, como o Tandy 1000 HX.

Outro tipo de chip de firmware foi encontrado no IBM PC AT e nos primeiros compatíveis. No AT, a interface do teclado era controlada por um microcontrolador com memória programável própria. No IBM AT, esse era um dispositivo com soquete de 40 pinos, enquanto alguns fabricantes usavam uma versão EPROM desse chip que se assemelhava a uma EPROM. Este controlador também recebeu a função de portão A20 para gerenciar a memória acima do intervalo de um megabyte; ocasionalmente, uma atualização deste "BIOS de teclado" era necessário aproveitar o software que poderia usar memória superior.

O BIOS pode conter componentes como o Memory Reference Code (MRC), que é responsável pela inicialização da memória (por exemplo, SPD e inicialização dos tempos de memória).

O BIOS moderno inclui Firmware do Intel Management Engine ou AMD Platform Security Processor.

Fornecedores e produtos

Comparação de diferentes implementações do BIOS
Empresa Prémios AMIBIOS Insígnio SEGURANÇA
Licença Privado Privado Privado LGPL v3
Mantido / desenvolvido Terminado Terminado Terminado Sim.
Chamadas de BIOS PCI de 32 bits Sim. Sim. Sim. Sim.
AHCISim. Sim. Sim. Sim.
APMSim. Sim. Sim. (1.2)Sim. (1.2)
BBSSim. Sim. Sim. Sim.
Menu de inicialização Sim. Sim. Sim. Sim.
Compressão Sim. (LHA)Sim. (LHA)Sim. (RLE)Sim. (LZMA)
CMOS Sim. Sim. Sim. Sim.
EDDSim. Sim. Sim. Sim.
ESCODSim. Sim. ? Não.
Flash de ROM ? Sim. ? Não.
Língua Assembleia Assembleia Assembleia C
LBASim. (48)Sim. (48)Sim. Sim. (48)
Multiprocessador Especificação Sim. Sim. Sim. Sim.
Opção ROM Sim. Sim. Sim. Sim.
Senha Sim. Sim. Sim. Não.
PMM? Sim. ? Sim.
Tela de configuração Sim. Sim. Sim. Não.
SMBIOSSim. Sim. Sim. Sim.
Tela de Splash Sim. (EPA)Sim. (PCX)Sim. Sim. (BMP, JPG)
TPMDesconhecido Desconhecido Desconhecido Alguns
Inicialização USB Sim. Sim. Sim. Sim.
hub USB ? ? ? Sim.
Teclado USB Sim. Sim. Sim. Sim.
Mouse USB Sim. Sim. Sim. Sim.

A IBM publicou todas as listagens do BIOS para seu PC original, PC XT, PC AT e outros modelos de PC contemporâneos, em um apêndice do Manual de Referência Técnica do PC IBM para cada tipo de máquina. O efeito da publicação das listas de BIOS é que qualquer um pode ver exatamente o que um BIOS definitivo faz e como faz.

Compaq portátil 386 BIOS

Em maio de 1984, a Phoenix Software Associates lançou seu primeiro ROM-BIOS, que permitia que os OEMs construíssem clones essencialmente totalmente compatíveis sem ter que fazer engenharia reversa do próprio IBM PC BIOS, como a Compaq havia feito para o Portable, ajudando a alimentar o crescimento em a indústria de PCs compatíveis e vendas de versões não-IBM do DOS. E o primeiro American Megatrends (AMI) BIOS foi lançado em 1986.

Novos padrões inseridos no BIOS geralmente não possuem documentação pública completa ou qualquer listagem de BIOS. Como resultado, não é tão fácil aprender os detalhes íntimos sobre as muitas adições não-IBM ao BIOS quanto sobre os principais serviços do BIOS.

A maioria dos fornecedores de placas-mãe licencia um BIOS "núcleo" e kit de ferramentas de um terceiro comercial, conhecido como um "fornecedor independente de BIOS" ou VBI. O fabricante da placa-mãe personalizou esse BIOS para se adequar ao seu próprio hardware. Por esta razão, os BIOS atualizados são normalmente obtidos diretamente do fabricante da placa-mãe. O IBV principal incluiu American Megatrends (AMI), Insyde Software, Phoenix Technologies e Byosoft. Microid Research e Award Software foram adquiridos pela Phoenix Technologies em 1998; Mais tarde, a Phoenix eliminou gradualmente a marca Award. A General Software, que também foi adquirida pela Phoenix em 2007, vendia BIOS para sistemas embarcados baseados em processadores Intel.

A comunidade de código aberto aumentou seus esforços para desenvolver um substituto para BIOS proprietários e suas futuras encarnações com uma contraparte de código aberto por meio dos projetos libreboot, coreboot e OpenBIOS/Open Firmware. A AMD forneceu especificações de produto para alguns chipsets e o Google está patrocinando o projeto. O fabricante de placas-mãe Tyan oferece o coreboot próximo ao BIOS padrão com sua linha de placas-mãe Opteron.

Segurança

Um American Megatrends BIOS mostrando um "Intel CPU uCode Carregando erro" após uma tentativa fracassada de carregar patches de microcódigo na CPU
Um chip BIOS destacado

Os chips de memória EEPROM e Flash são vantajosos porque podem ser facilmente atualizados pelo usuário; é comum que os fabricantes de hardware emitam atualizações de BIOS para atualizar seus produtos, melhorar a compatibilidade e remover bugs. No entanto, essa vantagem tinha o risco de que uma atualização do BIOS executada incorretamente ou abortada pudesse tornar o computador ou dispositivo inutilizável. Para evitar essas situações, os BIOS mais recentes usam um "bloco de inicialização"; uma parte do BIOS que é executada primeiro e deve ser atualizada separadamente. Este código verifica se o restante do BIOS está intacto (usando somas de verificação de hash ou outros métodos) antes de transferir o controle para ele. Se o bloco de inicialização detectar qualquer corrupção no BIOS principal, ele normalmente avisará o usuário de que um processo de recuperação deve ser iniciado inicializando a partir de uma mídia removível (disquete, CD ou unidade flash USB) para que o usuário possa tentar atualizar o BIOS novamente. Algumas placas-mãe têm um BIOS de backup (às vezes chamado de placas DualBIOS) para se recuperar de corrupções do BIOS.

Existem pelo menos cinco vírus de ataque de BIOS conhecidos, dois dos quais foram para fins de demonstração. O primeiro encontrado na natureza foi Mebromi, visando usuários chineses.

O primeiro vírus do BIOS foi o BIOS Meningitis, que em vez de apagar os chips do BIOS, os infectava. BIOS Meningite tem relativamente inofensivo, em comparação com um vírus como CIH.

O segundo vírus do BIOS foi o CIH, também conhecido como "Chernobyl Virus", que foi capaz de apagar o conteúdo do flash ROM BIOS em chipsets compatíveis. O CIH apareceu em meados de 1998 e tornou-se ativo em abril de 1999. Freqüentemente, os computadores infectados não conseguiam mais inicializar e as pessoas tinham que remover o flash ROM IC da placa-mãe e reprogramá-lo. A CIH tinha como alvo o então amplamente difundido chipset da placa-mãe Intel i430TX e aproveitou o fato de que os sistemas operacionais Windows 9x, também amplamente difundidos na época, permitiam acesso direto do hardware a todos os programas.

Os sistemas modernos não são vulneráveis ao CIH por causa de uma variedade de chipsets sendo usados que são incompatíveis com o chipset Intel i430TX e também outros tipos de flash ROM IC. Há também proteção extra contra regravações acidentais do BIOS na forma de blocos de inicialização que são protegidos contra sobregravação acidental ou sistemas equipados com BIOS duplo e quádruplo que podem, em caso de falha, usar um BIOS de backup. Além disso, todos os sistemas operacionais modernos, como FreeBSD, Linux, macOS, sistema operacional Windows baseado em Windows NT, como Windows 2000, Windows XP e mais recentes, não permitem que programas de modo de usuário tenham acesso direto ao hardware usando uma camada de abstração de hardware.

Como resultado, a partir de 2008, o CIH tornou-se essencialmente inofensivo, na pior das hipóteses causando aborrecimento ao infectar arquivos executáveis e acionar software antivírus. Outros vírus de BIOS permanecem possíveis, no entanto; como a maioria dos usuários domésticos do Windows sem o UAC do Windows Vista/7 executa todos os aplicativos com privilégios administrativos, um vírus moderno do tipo CIH poderia, em princípio, obter acesso ao hardware sem primeiro usar um exploit. O sistema operacional OpenBSD impede que todos os usuários tenham esse acesso e o patch grsecurity para o kernel do Linux também impede esse acesso direto ao hardware por padrão, com a diferença de um invasor exigir uma exploração muito mais difícil no nível do kernel ou reinicializar a máquina.

O terceiro vírus de BIOS foi uma técnica apresentada por John Heasman, principal consultor de segurança da Next-Generation Security Software com sede no Reino Unido. Em 2006, na Black Hat Security Conference, ele mostrou como elevar privilégios e ler a memória física, usando procedimentos maliciosos que substituíram as funções ACPI normais armazenadas na memória flash.

O quarto vírus do BIOS era uma técnica chamada "Infecção persistente do BIOS." Ele apareceu em 2009 na Conferência de Segurança CanSecWest em Vancouver e na Conferência de Segurança SyScan em Cingapura. Os pesquisadores Anibal Sacco e Alfredo Ortega, da Core Security Technologies, demonstraram como inserir códigos maliciosos nas rotinas de descompressão do BIOS, permitindo o controle quase total do PC na inicialização, antes mesmo de o sistema operacional ser inicializado. A prova de conceito não explora uma falha na implementação do BIOS, mas envolve apenas os procedimentos normais de atualização do BIOS. Assim, requer acesso físico à máquina, ou que o usuário seja root. Apesar desses requisitos, Ortega sublinhou as profundas implicações de sua descoberta e da descoberta de Sacco: “Podemos corrigir um driver para instalar um rootkit totalmente funcional. Temos até um pequeno código que pode remover ou desativar o antivírus."

Mebromi é um trojan que visa computadores com AwardBIOS, Microsoft Windows e software antivírus de duas empresas chinesas: Rising Antivirus e Jiangmin KV Antivirus. Mebromi instala um rootkit que infecta o registro mestre de inicialização.

Em uma entrevista de dezembro de 2013 para o 60 Minutes, Deborah Plunkett, diretora de garantia de informações da Agência de Segurança Nacional dos EUA, afirmou que a NSA havia descoberto e impedido um possível ataque ao BIOS por um estado estrangeiro, visando o sistema financeiro americano. O programa citou fontes anônimas alegando que era uma conspiração chinesa. No entanto, artigos subsequentes no The Guardian, The Atlantic, Wired e The Register refutaram as acusações da NSA' s reivindicações.

As plataformas Intel mais recentes têm a tecnologia Intel Boot Guard (IBG) habilitada, essa tecnologia verifica a assinatura digital do BIOS na inicialização e a chave pública IBG é fundida no PCH. Os usuários finais não podem desabilitar esta função.

Alternativas e sucessores

Unified Extensible Firmware Interface (UEFI) complementa o BIOS em muitas máquinas novas. Inicialmente escrito para a arquitetura Intel Itanium, o UEFI agora está disponível para plataformas de arquitetura x86 e ARM; o desenvolvimento da especificação é impulsionado pelo Unified EFI Forum, um Grupo de Interesse Especial da indústria. A inicialização EFI foi suportada apenas em versões do Microsoft Windows com suporte para GPT, o kernel Linux 2.6.1 e posterior e macOS em Macs baseados em Intel. A partir de 2014, o novo hardware de PC vem predominantemente com o firmware UEFI. A arquitetura da proteção de rootkit também pode impedir que o sistema execute as próprias alterações de software do usuário, o que torna a UEFI controversa como uma substituição de BIOS herdada na comunidade de hardware aberto. Além disso, o Windows 11 requer UEFI para inicializar.

Outras alternativas para a funcionalidade do "Legacy BIOS" no mundo x86 incluem coreboot e libreboot.

Alguns servidores e estações de trabalho usam um Open Firmware independente de plataforma (IEEE-1275) baseado na linguagem de programação Forth; ele está incluído nos computadores SPARC da Sun, na linha RS/6000 da IBM e em outros sistemas PowerPC, como as placas-mãe CHRP, junto com o OLPC XO-1 baseado em x86.

A partir de pelo menos 2015, a Apple removeu o suporte de BIOS herdado dos computadores MacBook Pro. Como tal, o utilitário BIOS não suporta mais a opção legado e imprime "Modo legado não suportado neste sistema". Em 2017, a Intel anunciou que removeria o suporte do BIOS herdado até 2020. Desde 2019, os novos PCs OEM da plataforma Intel não oferecem mais suporte à opção herdada.

Contenido relacionado

Arte ASCII

Arte ASCII é uma técnica de design gráfico que usa computadores para apresentação e consiste em imagens reunidas a partir de 95 caracteres imprimíveis...

Dados digitais

Dados digitais, na teoria da informação e nos sistemas de informação, são informações representadas como uma sequência de símbolos discretos, cada um...

Ada (linguagem de programação)

Ada é uma linguagem de programação de alto nível estruturada, tipada estaticamente, imperativa e orientada a objetos, estendida de Pascal e outras...

Computador Atanasoff-Berry

O computador Atanasoff–Berry foi o primeiro computador digital eletrônico automático. Limitado pela tecnologia da época e execução, o dispositivo...

Sistema de nomes de domínio

O Domain Name System é um sistema de nomenclatura hierárquico e distribuído para computadores, serviços e outros recursos na Internet ou em outras redes...
Más resultados...
Tamaño del texto:
Copiar