Nesta altura dos acontecimentos já fazemos uma ideia razoável, ainda que superficial, do que seja a UEFI. E sabemos que seu principal objetivo é substituir os sistemas baseados em BIOS.
Não que o BIOS seja de todo ruim, o vilão da história, uma peça inservível de software. Pelo contrário: não pode ser tão ruim algo que sobrevive já há trinta anos em um universo em que as tecnologias costumam se tornar obsoletas em um décimo deste tempo. Nem se pode desprezar algo que ao longo destas três décadas vem prestando excelentes serviços em sua missão de prover uma interface através da qual o usuário pode fazer ajustes no comportamento do sistema e habilitar ou desabilitar certos componentes antes mesmo da carga do sistema operacional.
Figura 1: ACPI
Mais que isto: dentro de suas limitações, bem que o BIOS tem evoluído. Por exemplo: nos últimos anos, em que os computadores portáteis se disseminaram com suas baterias cuja carga jamais dura tanto quanto gostaríamos e, mesmo nos de mesa (“desktops”), as preocupações com consumo de energia assumiram alguma relevância, os sistemas baseados em BIOS contornaram o problema do controle do gerenciamento de energia incorporando a interface ACPI (“Advanced Configuration and Power Interface”, ou interface avançada de configuração e potência) capaz de transferir para o sistema operacional toda a responsabilidade sobre a configuração e o gerenciamento do consumo de potência elétrica não apenas do processador como dos demais dispositivos e até de alguns periféricos (veja, na Figura 1, uma janela exibida pelas rotinas de gerenciamento de energia exibida pelo SO durante a operação de uma máquina portátil). Portanto não é verdade que o BIOS seja incapaz de evoluir: ele pode receber extensões que aumentam suas funcionalidades, como demonstra a inclusão da ACPI. Mas é verdade que, devido ao fato de ter sido desenvolvido especificamente para uma arquitetura de processadores, algumas de suas limitações, por serem inerentes a esta arquitetura, são intransponíveis.
Por isto está na hora de se aposentar e dar lugar à UEFI com todas as suas novidades.
Que, como veremos logo, não se restringem a permitir uma inicialização mais rápida, como foi mencionado antes. Pelo contrário, vão muito além disto.
As vantagens da UEFI
Dentre estas novidades há algumas inegáveis vantagens. Por exemplo: sistemas baseados em UEFI podem oferecer uma gama de funcionalidades praticamente ilimitada – que depende apenas da vontade de quem a implementa – mesmo antes da carga do SO. Sendo a especificação UEFI modular e independente de arquitetura e sistema operacional, pode agregar gerenciadores de dispositivos (“drivers”), o que permite que tais dispositivos sejam acessados mesmo antes da carga do SO (desde que a arquitetura e o SO ofereçam suporte para ela, naturalmente; e não desdenhe achando que “assim é fácil” porque o BIOS, como sabemos, não pode ser adaptado para qualquer outra arquitetura que não a ix86/64). E, como vimos na < http://blogs.forumpcs.com.br/bpiropo/2012/03/09/uefi-como-funciona/ > coluna anterior, pode funcionar como um pseudo sistema operacional, portanto pode incluir código para executar tarefas que seriam impossíveis de agregar ao BIOS. E, ao contrário do BIOS, cujas rotinas devem necessariamente ser programadas em Assembly, as da UEFI podem utilizar a linguagem C, o que a dota de muito maior portabilidade (embora, como ressaltam alguns críticos, gere um código que exige mais memória o que faz com que exijam CIs de memória não volátil de maior capacidade caso sejam neles armazenadas). Tudo isto permite desenvolver uma interface com o usuário para ajustes do sistema durante a inicialização extraordinariamente mais amigável que as duras telas de “setup” dos sistemas baseados em BIOS. Veja, na Figura 2, a tela de ajustes de uma placa-mãe da ASRock que usa UEFI.
Figura 2: tela de “setup” da placa-mãe ASRock 970 Extreme
Toda esta flexibilidade faz com que a UEFI possa receber não apenas as extensões previamente incorporadas ao BIOS na medida em que ele evoluía (como a citada ACPI, que foi incluída na especificação UEFI) como aperfeiçoar e tornar mais amigáveis as rotinas do BIOS. Um bom exemplo é o POST, o teste de componentes realizado pelo BIOS quando a máquina é ligada. Os sistemas que adotam a UEFI usam novas rotinas de teste que quando encontram uma falha já não precisam apelar para os crípticos códigos de erro constituídos por uma série de “bipes” e podem (exceto em situações radicais, como um processador inoperante) exibir mensagens mais detalhadas sobre o ocorrido, permitindo que o usuário identifique com mais facilidade as providências necessárias para contornar o problema.
Também como vimos na coluna anterior, as rotinas da UEFI não precisam necessariamente ser armazenadas em um CI de memória não volátil integrado à placa-mãe, podendo usar outros meios de armazenamento de massa. Porém a especificação UEFI é suficientemente flexível para não exigir um sistema de arquivos em particular. Pode ser adotado qualquer um usado pelo sistema operacional a ser carregado. Mas como cada sistema operacional usa seu modelo de gerenciadores de dispositivo (“drivers”), a UEFI usa um modelo próprio, independente do SO, para permitir que os gerenciadores sejam carregados antes do sistema.
O resultado disto é que, por exemplo, os ajustes dos parâmetros do sistema efetuados antes da inicialização do SO, que atualmente são feitos nas telas do BIOS exclusivamente via teclado, poderão ser feitos com o mause nas telas da UEFI.
Suporte do SO
É claro que para usufruir dos benefícios da UEFI o sistema operacional deve oferecer o suporte necessário. No < http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface > verbete correspondente da Wikipedia (versão em inglês) há uma longa lista dos SO que já oferecem este suporte, lista que tende a crescer na medida em que aumentar o suporte oferecido pelos fabricantes de hardware (que, infelizmente, tem deixado muito a desejar, como fica claro < http://www.tomshardware.com/reviews/intel-uefi-firmware,2486-3.html > neste artigo do sempre excelente Tom’s Hardware Guide). E entre os sistemas citados pela Wikipedia constam o Linux, Mac OS X e Windows (todas as versões para Itanium, além de Windows 7, Vista e server 2008 para x86-64).
A diversidade de sistemas operacionais que se entendem com a UEFI é um ponto altamente positivo, posto que a especificação UEFI inclui seu próprio gerenciador de inicialização, ou “boot manager”, que permite ao usuário escolher que sistema operacional será carregado dentre os diversos eventualmente instalados na máquina. E como a especificação UEFI permite que sejam agregadas rotinas (ou “extensões”) a partir de diferentes meios de armazenamento não volátil, a indústria de fabricação de PCs pode usar qualquer placa-mãe que suporte a UEFI e adicionar suas próprias rotinas para implementar funções adicionais armazenadas no disco rígido da máquina, na rede ou até mesmo baixadas da Internet. Estas rotinas podem integrar o próprio procedimento de inicialização da máquina. A única limitação a ser respeitada é que o tamanho da “palavra” seja coerente, isto é: uma implementação UEFI “de 64 bits” só pode carregar sistemas operacionais “de 64 bits” (e o mesmo ocorre, é claro, com as correspondentes implementações “de 32 bits”).
Acha que talvez estas rotinas, programadas em C, incluindo gerenciadores de dispositivos, rotinas de teste mais amigáveis e até mesmo uma interface com o usuário semelhante à de um sistema operacional (“UEFI shell”) talvez exijam demasiado espaço de endereçamento de memória? É possível. Mas, pelo menos, isto agora fica a critério dos desenvolvedores, já que ao contrário do BIOS que, por ter sido concebido para respeitar as limitações do processador i8088, nada “enxerga” além do primeiro 1 MB de espaço de endereçamento, a UEFI está livre desta limitação. Desta e da obrigatoriedade de exigir que, ao ser ligado, o processador emule um i8088 e assuma o chamado “modo real” de operação. Sendo independente da arquitetura do processador, sistemas baseados em UEFI podem ser inicializados com o processador partindo em qualquer modo de operação, desde que suportado pelo SO e pela própria UEFI.
Mas aquelas que talvez sejam as duas maiores vantagens da UEFI, a saber, a possibilidade de incluir rotinas que permanecem carregadas e funcionais mesmo após a carga do sistema operacional e a forma pela qual ela gerencia partições em dispositivos de armazenamento de massa, serão discutidas na próxima coluna.
Até lá.