5
73 | ANÁLISE O novo xerife da inicialização Linux Magazine #100 | Março de 2013 Boot com UEFI O novo xerife da inicialização A especificação do boot UEFI oferece novas capacidades – e novas dores de cabeça também – se o usuário não estiver preparado para isso. por Christopher Dock A lgumas coisas das quais nunca devemos esquecer: primeiro carro primeiro computador primeiro beijo No entanto, uma destas primeiras coisas não deve ser um borked (ter- mo usado para algo que foi destruído ou não funciona corretamente) [1] das partições do novo laptop. Infe- lizmente, algumas pessoas passam por essa experiência, especialmen- te quando displicentes ao instalar o Kubuntu 12.04 em modo dual-boot com o Windows 7. A principal razão de problemas é geralmente porque o Windows 7 original pré-instalado estava configurado para usar o novo recurso de boot UEFI, e o Linux novo, adicionado posteriormente, não tinha essa capacidade. Master Boot Record (MBR) Até recentemente, a maioria dos computadores usava o Basic Input Output System (BIOS) para geren- ciar o processo de boot. O sistema de BIOS executa algumas tarefas preliminares e então carrega o setor de boot do disco rígido. Este setor de boot é chamado de Master Boot Record (MBR) e é composto pelos primeiros 512 bytes de início do dis- co, onde estão descritos não apenas o layout do disco (suas partições), como também a forma de iniciar o (ou os) sistema operacional. O MBR mudou um pouco ao longo dos anos, mas não é radicalmente tão diferente de quando foi criado, em 1983. O MBR contém quatro partições primárias, onde uma delas é definida como partição ativa ou inicializá- vel. Juntamente com uma lista das partições e contém um pequeno carregador de boot (bootloader) (de aproximadamente 440 bytes) para carregar o sistema operacional. Este bootloader encontra a partição ativa e então executa o Volume Boot Re- cord (o primeiro setor da partição), que continuará o processo de car- regamento do sistema operacional. O MBR possui algumas limita- ções que têm impedido seu pro- gresso. Duas dessas limitações são o fato de o número de partições primárias ser limitada a quatro, e o tamanho das partições de disco ser limitada a 2TB. Estes limites não eram um problema quando surgiu a primeira implementação do MBR, mas agora que é possível comprar um drive USB de 3TB por menos de R$300, estas questões se tornaram mais visíveis. Os especialistas têm reconheci- do a necessidade de romper com o passado e produzir um moderno firmware independente do sistema operacional e com suporte para ini- cializar a partir de discos de grandes dimensões, bem como em um am- biente sem sistema operacional de forma flexível, com capacidade de rede e design modular. A interface de firmware estendida (Extended Firmware Interface) da Intel é o resultado desse esforço. Uma or- ganização de toda a indústria foi formada em 2005 para promover a adoção da especificação EFI, e a especificação foi então renomeada de Unified EFI (UEFI) [2]. Como funciona a UEFI A UEFI traz o conceito de BIOS para um nível totalmente novo. Em vez de um MBR de 512 bytes e algum código de inicialização, a UEFI, em contraste com a opção de simples legado do BIOS, sabe o que é um sistema de arquivos e ainda possui seu próprio sistema de arquivos, com arquivos e drivers. ANÁLISE

Boot com UEFI O novo xerife da inicialização · A especificação do boot UEFI oferece novas capacidades – e novas dores de cabeça também – se o usuário não estiver preparado

  • Upload
    lamthu

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

73

| ANÁLISEO novo xerife da inicialização

Linux Magazine #100 | Março de 2013

Boot com UEFI

O novo xerife da inicialização

A especificação do boot UEFI oferece novas capacidades – e novas dores de cabeça também – se o usuário não estiver preparado para isso.por Christopher Dock

Algumas coisas das quais nunca devemos esquecer: ➧ primeiro carro

➧ primeiro computador ➧ primeiro beijoNo entanto, uma destas primeiras

coisas não deve ser um borked (ter-mo usado para algo que foi destruído ou não funciona corretamente) [1] das partições do novo laptop. Infe-lizmente, algumas pessoas passam por essa experiência, especialmen-te quando displicentes ao instalar o Kubuntu 12.04 em modo dual-boot com o Windows 7. A principal razão de problemas é geralmente porque o Windows 7 original pré-instalado estava configurado para usar o novo recurso de boot UEFI, e o Linux novo, adicionado posteriormente, não tinha essa capacidade.

Master Boot Record (MBR)

Até recentemente, a maioria dos computadores usava o Basic Input Output System (BIOS) para geren-ciar o processo de boot. O sistema de BIOS executa algumas tarefas preliminares e então carrega o setor de boot do disco rígido. Este setor de boot é chamado de Master Boot

Record (MBR) e é composto pelos primeiros 512 bytes de início do dis-co, onde estão descritos não apenas o layout do disco (suas partições), como também a forma de iniciar o (ou os) sistema operacional. O MBR mudou um pouco ao longo dos anos, mas não é radicalmente tão diferente de quando foi criado, em 1983.

O MBR contém quatro partições primárias, onde uma delas é definida como partição ativa ou inicializá-vel. Juntamente com uma lista das partições e contém um pequeno carregador de boot (bootloader) (de aproximadamente 440 bytes) para carregar o sistema operacional. Este bootloader encontra a partição ativa e então executa o Volume Boot Re-cord (o primeiro setor da partição), que continuará o processo de car-regamento do sistema operacional.

O MBR possui algumas limita-ções que têm impedido seu pro-gresso. Duas dessas limitações são o fato de o número de partições primárias ser limitada a quatro, e o tamanho das partições de disco ser limitada a 2TB. Estes limites não eram um problema quando surgiu a primeira implementação do MBR, mas agora que é possível comprar um drive USB de 3TB por

menos de R$300, estas questões se tornaram mais visíveis.

Os especialistas têm reconheci-do a necessidade de romper com o passado e produzir um moderno firmware independente do sistema operacional e com suporte para ini-cializar a partir de discos de grandes dimensões, bem como em um am-biente sem sistema operacional de forma flexível, com capacidade de rede e design modular. A interface de firmware estendida (Extended Firmware Interface) da Intel é o resultado desse esforço. Uma or-ganização de toda a indústria foi formada em 2005 para promover a adoção da especificação EFI, e a especificação foi então renomeada de Unified EFI (UEFI) [2].

Como funciona a UEFI

A UEFI traz o conceito de BIOS para um nível totalmente novo. Em vez de um MBR de 512 bytes e algum código de inicialização, a UEFI, em contraste com a opção de simples legado do BIOS, sabe o que é um sistema de arquivos e ainda possui seu próprio sistema de arquivos, com arquivos e drivers.

AN

ÁLIS

E

74 www.linuxmagazine.com.br

ANALISE | O novo xerife da inicialização

Este sistema de arquivos possui geralmente entre 200MB e 500MB e é formatado como FAT32. Em vez de alguns bytes de código de montagem para carregar o sistema operacional, cada sistema instalado deve possuir um bootloader próprio (como por exemplo, no caso do Grub: grubx64.efi). Este bootloader terá lógica o suficiente para exibir algum tipo de menu de boot ou iniciar o carrega-mento de um sistema operacional. Basicamente, a UEFI é o próprio mini-sistema operacional.

A UEFI tem deixado de lado a antiga metodologia de partição MBR e, ao invés dela, utiliza o GPT (GUID Partition Table) para gerenciar tabelas de partição. Usar o GPT elimina a limitação no número de partições e também garante o suporte para partições maiores de até 9ZB [3]. A partição GPT é parte do padrão UEFI, mas é limitada a apenas uma lista de partições sem nenhuma lógica de bootloader. A especificação permi-te um número quase ilimitado de partições, mas implementações es-pecíficas podem impor limites mais práticos (o Windows, por exemplo, limita o número de partições a 128 [4]). Como o MBR, a UEFI mar-ca uma das partições como ativa, mas esta é apenas a partição EFI, nunca qualquer uma das partições do sistema operacional.

A estrutura geral do sistema de arquivos EFI significa que cada siste-ma operacional (ou fornecedor) tem seu próprio diretório. Este diretório pode conter quaisquer dados e tam-bém todos os arquivos necessários para carregar o sistema operacional:

/EFI /Boot /Microsoft/ /ubuntu /refind

Alguns diretórios possuem uma hierarquia bastante horizontalizada, enquanto outros (por exemplo, os da

Microsoft [5]), não. Os programas bootloader, por padrão, possuem a ex-tensão .efi; no entanto, esta é apenas uma convenção: arquivos bootloader são devidamente criados e executa-dos quando necessário mesmo sem essa extensão.

Olhar para a estrutura de diretório EFI oferece a esperança de que, com a próxima instalação ou reinstalação, outro sistema operacional Microsoft não irá sobrescrever nossa instala-ção Linux atual, mas não tentamos isso ainda. Uma coisa especialmente conveniente sobre como a UEFI foi implementada no Linux é que, após o computador ser iniciado, a partição EFI, pelo menos no Kubuntu, é mon-tada sobre a partição de boot (/boot/efi), o que torna fácil mudar ou ex-perimentar este sistema de arquivos.

Levando isso um passo adiante, no entanto, um bootloader é apenas um programa que executa a operação de carregamento do sistema operacional. E se este programa fosse um Shell? Um Shell com habilidade UEFI permitiria que o usuário interagisse com o sistema UEFI para modificar os parâmetros de boot, iniciasse boo-tloaders e obtesse informações sobre o ambiente de firmware. Shells para EFI já existem mas o usuário não precisa se contentar com qualquer Shell que tenha sido enviado com sua instalação UEFI: ao invés disso, pode obter um novo ou escrever o seu próprio. O projeto Tianocore fornece um EFI Shell [6] referenciado no site Arch Linux [7]. O Shell Tianocore inclui várias opções que atualmente não possuem muita utilidade, mas que podem vir a calhar no futuro. Com este Shell, é possível selecionar um novo bootloader manualmente, fazer listas de diretório, editar arquivos de texto ou remover arquivos.

Ao iniciar o Shell, é necessário um ponto de partida. Curiosamente, quando executamos o nosso Shell, o diretório de trabalho atual não se en-contra em qualquer um dos sistemas

de arquivos, o que causa um erro em cada comando. Para criar uma lista-gem de diretório ou mudar para um diretório diferente, só precisamos sele-cionar o sistema de arquivos primeiro.

Este Shell foi criado, conferindo-lhe uma atmosfera MS-DOS. Por exem-plo, para mudar para um sistema de arquivos, basta selecionar o número do sistema de arquivos: FS0: <Enter>.

A designação de unidade FS0 é uma referência ao File System 0; dependendo da configuração, tam-bém podemos ter um FS1 ou FS2. Podemos registrar um novo Shell, um novo sistema operacional, ou sis-temas operacionais múltiplos com a UEFI. Assim, o próprio computador pode perfeitamente suportar múltiplos sistemas operacionais ou Shells. Te-mos algumas opções diferentes para manter essas entradas.

A primeira seria usar o programa efibootmgr do Linux para manipu-lar entradas armazenadas na me-mória RAM não volátil (NVRAM). Dependendo da implementação, a UEFI pode realmente suportar o efibootmgr quando inicializar em tela UEFI/BIOS. O Asus N76, que usa o sistema de firmware Aptio ba-seado em UEFI da AMI, permite que o usuário registre o programa diretamente com a opção Add New Boot Option (adicionar nova opção de boot) (figura 1).

Eventualmente, podíamos fazê- lo trabalhar quando paramos de fazer re-ferência explícita à unidade (no caso, \EFI\path versus FSO:\EFI\path). Foi possível, então, experimentar novos bootloaders e um Shell. As entradas do caminho apontado em path são relativas à partição EFI instalada.

Boot seguroA UEFI oferece muita flexibili-

dade, mais (e maiores) partições, e uma maneira fácil e padrão para a definição de vários sistemas opera-cionais. O que há para não gostar? Talvez o usuário já tenha ouvido

75

| ANÁLISEO novo xerife da inicialização

Linux Magazine #100 | Março de 2013

falar do infame recurso “Secure Boot” (Boot Seguro) da UEFI, que foi controverso e bastante co-mentado Internet a fora e esteja preocupado com isso.

O boot seguro garante o pro-cesso de boot, impedindo drivers ou bootloaders que não sejam as-sinados com uma chave conhecida de inicializar, evitando uma pos-sivel infeccção do seu sistema de inicialização por vírus ou trojans. Como várias fontes na comunida-de de código aberto já relataram, este recurso impediria com efi-ciência que alguém compilasse a distribuição favorita e a insta-lasse no próprio PC (pelo menos no pior dos casos – um caso um pouco melhor seria se o usuário tivesse a capacidade de desativar o recurso de boot seguro [8] [9]).

Como consertar o laptop

Vamos considerar a seguinte con-figuração problemática:

Drive 0:

➧ GPT particionado➧ Sistema de arquivos UEFI➧ Instalação do Windows não-

funcionalDrive 1:➧ MBR particionado➧ Algumas partições repletas de

dados➧ Instalação Linux não-funcionalA incompatibilidade entre GPT

e MBR, bem como nossos esforços de reparo subsequentes, tornaram o sistema impossível de iniciali-zar (unbootable). Quando acres-centamos o Linux, o bootloader preexistente não pode inicializar o sistema Linux no Drive 1 MBR particionado. Tentamos mudar o drive de boot, que nos devolveu o Linux – incluindo um menu GRUB que apontava para a op-ção de inicialização do Windows. Contudo, o Windows não iniciou com êxito. Para obter o Windows de volta, tentamos usar a opção Windows Restore, mas causamos ainda mais problemas, o que tor-nou o sistema Linux impossível de inicializar.

Como corrigir os problemas com a bagunça do dual-boot? A facilida-de da nossa recuperação foi porque tínhamos uma imagem de backup do primeiro disco, antes de qualquer instalação Linux, porque o Linux estava sendo instalado no segundo disco, e porque reconhecemos a necessidade de instalar o Kubuntu, com suporte da EFI.

A lista de tarefas a serem realiza-das, foi pequena:

1. Converter a unidade 1 do MBR para GPT;

2. Adicionar/modificar partições no Drive 1;

3. Instalar o Kubuntu, com su-porte da EFI;

4. Salvar toda a configuração da EFI

Instalação Kubuntu;5. Restaurar imagem de disco

para Drive 0;6. Restaurar configuração Kubun-

tu para partição EFI;7. Reiniciar o computador e testar.Nota: quando se tratam de parti-

ções, é importante fazer backup dos dados para evitar uma possível perda.

Figura 1 Alguns sistemas de firmware permitem adicionar uma opção de inicialização própria para a configuração.

76 www.linuxmagazine.com.br

ANALISE | O novo xerife da inicialização

Conversão MBR para GPT

O laptop foi inicializado com o Kubuntu 12.04 com um DVD Live. As partições estavam bem; o problema era o particionamento, então a coisa mais fácil era usar o comando sgdisk para ler na antiga tabela de partição MBR e escrever uma nova tabela de partição GTP. É importante ter em mente que deve haver algum espaço livre para manter as novas estruturas GPT. Isso pode exigir redimensionar a primeira partição para deixar algum espaço livre no início do disco, bem como redimensionar a partição final para deixar algum espaço no final. Tudo isso é descrito em detalhes por Rod Smith [10].

Uma vez que toda a preparação tenha sido feita, o comando a seguir executa a conversão:

sgdisk -g /dev/sdX

Este comando irá fazer a conver-são adequada, mas deixará a unidade sem qualquer sistema operacional inicializável.

Adicionar/modificar partições

Todo o particionamento foi feito durante a instalação anterior; ne-nhum particionamento adicional

foi necessário neste caso (o usuá-rio também pode realizar o parti-cionamento na etapa de instalação do Kubuntu).

Instalação do Kubuntu 12.04 com suporte EFI

Esta etapa é fácil, mas não 100% óbvia. Quando colocamos um CD ou DVD na unidade e o iniciamos, a UEFI vai examinar o que a mídia tem disponível; o que pode ser também um pendrive USB ou um DVD de boot. No entanto, pelo menos para o nosso Asus, tanto um DVD MBR de boot normal quanto um DVD de boot UEFI foram encontrados na lista de dispositivos de iniciali-zação. Apesar de ambas as entradas se referirem ao mesmo disco, é im-portante que a entrada UEFI seja escolhida porque esta entrada pare-ce ser o gatilho para a utilização do GRUB EFI em vez da configuração padrão do MBR. No nosso Asus, os dispositivos UEFI inicializáveis são prefixados com UEFI: na lista de boot (figura 2).

Quando inicializamos o Kubun-tu como um dispositivo UEFI, ele traz uma lista de menus GRUB fa-miliares. É possível que qualquer uma dessas opções consiga instalar qualquer sistema compatível com o EFI com sucesso, mas escolhemos a opção Install Expert Mode.

O processo segue de perto uma instalação gráfica padrão; confi-guramos nossas partições de troca (swap) (/) e /home e selecionamos o GRUB como bootloader. O único truque para esta etapa é como de-vemos iniciar o disco.

Arquivos de configuração do Kubuntu

A partição EFI é simplesmente um sistema de arquivos FAT32. Fazer o backup da configuração significa simplesmente copiar os arquivos para um local seguro. Basta montar o sistema de arquivos EFI e copiar os arquivos necessários para outro lugar:

mount /dev/sdX1 /mnt/mountpoint cp -rp /mnt/mountpoint/EFI/refind /media/usbstick cp -rp /mnt/mountpoint/EFI/ubuntu /media/usbstick

Nota: o diretório EFI provavel-mente será a partição 1, sdX1, mas essa não é uma regra.

Restaurar a imagem de disco para disk1

Como nunca planejamos fazer uma bagunça na nossa instalação, antes de começarmos esta grande aventura, fizemos o backup do Drive 0 usando o comando dd:

Salvar dd bs=1M if=/dev/sdX of=/media/usbdevice/saved-image Restaurar dd bs=1M if=/media/usbdevice/saved-image of=/dev/sdX

Neste ponto, o Drive 0 do lap-top possui a instalação original do Windows 7, mas a configuração do bootloader Kubuntu foi perdi-da. Isto não tem nada a ver com a Microsoft ou com o Windows, mas sim com a forma como fizemos o backup do disco.

Figura 2 No nosso Asus, os dispositivos de UEFI boot prontos são iniciados com o prefixo “UEFI:”.

77

| ANÁLISEO novo xerife da inicialização

Linux Magazine #100 | Março de 2013

Restaurarção EFI do Kubuntu

O laptop foi inicializado com o Kubuntu 12.04 em um DVD Live para o próximo passo. A partição EFI é simplesmente um sistema de arqui-vos FAT32. Restaurar a configuração significa simplesmente copiar os ar-quivos a partir de um local seguro:

mount /dev/sdX1 /mnt/mountpoint cp -rp /media/usbstick/refind /mnt/mountpoint/EFI cp -rp /media/usbstick/ubuntu /mnt/mountpoint/EFI

Depois de restaurar esses arquivos, seremos capazes de reiniciar o laptop e iniciar o Linux ou o Windows 7. n

Mais informações[1] Borked: http://www.urbandictionary.com/define.php?term=borked

[2] UEFI: http://www.uefi.org/home

[3] Tamanho das partições GPT: http://en.wikipedia.org/wiki/GUID_Partition_Table

[4] Windows e GPT: http://msdn.microsoft.com/en-us/library/windows/hardware/gg463525.aspx

[5] FAQ Windows e GPT: http://msdn.microsoft.com/en-us/library/windows/hardware/gg463525.aspx

[6] Tiancore ProjectL: http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell

[7] Shell UEFI no Arch: https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#UEFI_Shell_download_links

[8] Como fazer o boot seguro da UEFI funcionar em plataformas abertas: http://www.linuxfoundation.org/publications/making-uefi-secure-boot-work-with-open-plataforms/

[9] Linus Torvalds sobre Windows 8, UEFI e Fedora: http://www.zdnet.com/blog/open-source/linus-torvalds-on-windows-8-uefi-and-fedora/11187

[10] http://www.rodsbooks.com/gdisk/mbr2gpt.html

Gostou do artigo?Queremos ouvir sua opinião. Fale conosco em [email protected]

Este artigo no nosso site: http://lnm.com.br/article/8311