Arch

Arch

domingo, 8 de abril de 2012

Tabela de partição GUID uma pequena introdução

Este "artigo" foi originalmente publicado no:http://www.vivaolinux.com.br/artigo/Tabela-de-Particao-GUID-Uma-Pequena-Introducao




Introdução
É necessária, pelo menos, uma noção do exposto abaixo para a compreensão do tema.

- Definição de BIOS, encontrada na Wikipédia:

"BIOS, em computação Basic Input/Output System (Sistema Básico de Entrada/Saída). O termo é incorretamente conhecido como Basic Integrated Operating System (Sistema Operacional Básico Integrado) ou Built In Operating System (Sistema Operacional Interno). O BIOS é um programa de computador pré-gravado em memória permanente (firmware) executado por um computador quando ligado. Ele é responsável pelo suporte básico de acesso ao hardware, bem como por iniciar a carga do sistema operacional."

 Link para a página completa: http://pt.wikipedia.org/wiki/Bios

- Definição de UEFI, encontrada na Wikipédia:

"EFI (Extended Firmware Interface) é uma interface criada pela Intel para substituir o velho BIOS. A EFI é uma especificação que define uma interface de software entre o sistema operacional e a plataforma de firmware. A EFI destina-se a ser um substituto significativamente melhorado para o velho BIOS firmware interface, historicamente usado por todos os computadores pessoais IBM PC compatíveis. A especificação EFI foi originalmente desenvolvida pela Intel, e é atualmente gerida pelo Unified EFI Forum que é oficialmente conhecido como Unified EFI (UEFI)."

 Link para a página completa: http://pt.wikipedia.org/wiki/UEFI

- Definição de Tabela de Partição GUID, na Wikipédia:

"Em hardware a Tabela de Partição GUID (GPT) é um padrão para o layoute da tabela de partição em um disco rígido físico. Embora seja parte do padrão de Extensible Firmware Interface (EFI) (a proposta de substituição da Intel para a BIOS da IBM), ele pode ser usado em sistemas BIOS sistemas devido às limitações das tabelas de partição na Ficha de Boot Principal, que limitam o tamanho máximo do disco a 2 TiB. O Windows XP 32-bit (das versões do Windows XP, a mais utilizada) e versões anteriores do Windows não podem (sem Hacks) ler ou escrever em unidades formatadas com uma tabela de partição GUID, no entanto, Windows Vista e Windows 7 possuem esta capacidade."

 Link para a página completa: http://pt.wikipedia.org/wiki/GUID_Partition_Table

De posse das noções acima expostas, podemos prosseguir...

Tabelas de Particionamento

A Tabela de Particionamento MBR
Como abordado na primeira página do artigo:

"Em Hardware, a Tabela de Partição GUID (GPT), é um padrão para o Layoute da tabela de partição em um disco rígido físico."

De uns tempos para cá, sempre que tenho que formatar algum de meus HDs, tenho alterado os mesmos para utilizá-los no modelo proposto acima. Razão para isso, é necessário começar a se habituar com a mudança vindoura.

GUID Partition Table (GPT) é um modo mais atual de particionamento, que é parte da UEFI, usando o identificador global exclusivo para dispositivos. E diferentemente do Master Boot Record (o estilo de particionamento mais usado atualmente devido ao padrão BIOS), tem muitas vantagens.

Para entender GPT, é importante entender o que é MBR e quais são suas desvantagens.

Segue uma imagem para ajudar a compreensão:




Para qualquer estilo de partição, o número de divisões do disco que podem ser definidos, baseia-se no espaço total alocado para a tabela de partição, e no espaço necessário para armazenar a informação de uma única partição.

1 - Master Boot Record

A tabela de partição MBR, armazena a informação sobre as partições no primeiro setor de um disco rígido.
Primeiros 440 Bytes Código de inicialização MBR que é lançado pelo BIOS.
441-446 Bytes Assinatura de disco MBR.
447-510 Bytes Tabela de partição real com informações sobre as partições primárias e estendidas. (Partições lógicas não estão listadas aqui)
511-512 Bytes Assinatura de inicialização MBR 0xAA55.

Neste cenário, toda a informação sobre as partições primárias estão limitadas aos 64 bytes atribuídos. Para 'burlar' essa limitação, partições estendidas foram implementadas.

Uma partição estendida é simplesmente uma partição primária na MBR, que age como um recipiente para outras partições chamadas de partições lógicas. Então, segundo este estilo, um disco rígido é limitado às 4 partições primárias, ou 3 primárias e 1 partições estendida, com várias partições lógicas dentro dela.

1.1 - Problemas com MBR

Apenas 4 partições primárias, ou 3 primárias + 1 partição estendida, com várias partições lógicas podem ser definidas.

Se você tem 3 partições primárias + 1 partição estendida, e tem algum espaço livre no disco fora da área partição estendida, você não poderá criar uma nova partição no referido espaço livre.

Dentro da partição estendida, as partições lógicas de 'metadados' são armazenadas em uma estrutura de lista encadeada. Se um link for perdido, todas as partições lógicas que seguem esse link, serão perdidas.

A tabela MBR suporta apenas 1 Byte de código em referência ao tipo de partição, fato este que leva a muitas colisões.

A tabela MBR armazena informações de setor de partição utilizando os valores 32-bit LBA. Este comprimento LBA, juntamente com setores com 512 Bytes de tamanho (o mais comumente utilizado), limita o tamanho máximo endereçável do disco a 2TB.

Qualquer espaço além de 2TB não pode ser definido em uma partição, se a tabela de particionamento MBR for utilizada.

A Tabela de Particionamento GUID
Novamente uma imagem auxiliar:




GUID Partition Table (GPT) usa GUIDs (ou UUIDs no mundo Linux) para definir as partições e seus tipos, daí o nome. A GPT consiste de:

1 - Primeiros 512 Bytes do disco rígido - protetor MBR:

- O mesmo que um MBR normal, mas a área de 64 Bytes contém uma única entrada '0xEE', tipo partição primária definida sobre o tamanho total do disco, ou no caso de um disco maior que 2 TB, uma partição de 2 TB.

2 - Próximos 512 Bytes - cabeçalho GPT primário:

- Contém o GUID (UUID), endereço da tabela de partição primária, do número de entradas possíveis na tabela de partição, seus próprios CRC32 Checksums e a tabela de partição primária, e ainda a localização do secundário (ou Backup) do cabeçalho (GPT).

3 - Próximos 16 KB (por padrão) - tabela GPT primária:

- 128 entradas de partição, cada uma com o tamanho de 128 Bytes (portanto, 16 KB). Este tamanho pode ser modificado para acomodar mais entradas da tabela (> 128) e também pode ser reduzido (mas as especificações UEFI requerem espaço para mínimo de 128 entradas de tabela que corresponde a 16 KB). Números dos setores são armazenados como 64-bit LBA e cada partição tem uma entrada tipo GUID e um único UUID.

4 - OS últimos 512 Bytes formam o cabeçalho GPT secundário:

- Contém o exclusivo GUID do disco, local da tabela de partição secundária, número de entradas possíveis na tabela de partição, seus próprios CRC32 Checksums, e a tabela de partição secundária, a localização do cabeçalho GPT primário. Este cabeçalho pode ser utilizado para recuperar informação da GPT, no caso do cabeçalho primário ser corrompido.

5 - Últimos 16 KB excluindo os últimos 512 bytes - tabela GPT Secundária:

- É idêntica Byte a Byte à tabela primária. Utilizada principalmente para operações de recuperação.

Vantagens de GPT
1. Usa GUIDs (UUIDS) únicos para identificar os tipos de partição. Elimina colisões.

2. Fornece uma única entrada em disco e GUID e UUID para cada partição. Uma excelente forma de referenciar as partições ao SO, independente do mesmo.

3. Mínimo de 128 entradas de tabela de partição. Com isso elimina-se a necessidade de se criar partições estendidas e lógicas. (sem nenhuma alteração das configurações podem ser criadas até 128 partições primárias em um HD).

4. Usa 64-bit LBA para armazenar os números do setor, portanto suporta até 2 Zib de endereçamento (o tamanho máximo do disco endereçável é de 2 Zib Zebibyte (1 zebibyte (ZiB) = 1.18059162072E+15 megabyte MB)).

5. Armazena um cabeçalho de Backup, e uma cópia da tabela de partição no final do disco, que ajuda na recuperação se a principal estiver corrompida.

6. Detecção de erros e corrupção da tabela de partição através de CRC32 Checksums.


Últimas Informações

Suporte do Kernel

A opção do kernel: CONFIG_EFI_PARTITION, deve ser definido para 'y', para ativar o suporte à partição EFI (o kernel de algum tempo para cá, já traz esta opção habilitada por padrão, mas achei por bem destacá-la aqui, para alertar os usuários de kernels customizados), se necessária for.

A ativação deve ser feita pelo método Built-in, pelo método de módulo carregável <M> não surtirá efeito. Você pode checar se a opção está ativada em seu kernel através do comando:

# zgrep CONFIG_EFI_PARTITION /proc/config.gz

Se o sistema retornar:
CONFIG_EFI_PARTITION=y

. . .Tudo estará OK.

Esta opção é necessária mesmo se discos, que forem formatados em GPT, sejam usados apenas para armazenamento de dados e não para iniciar o sistema.

Suporte do carregador de Boot:

1. GRUB Legacy ou o GRUB tradicional não oferecem suporte a GPT.

2. O jurássico LILO então, nem seria necessário mencionar, o faço por puro sarcasmo.

3. O GRUB2 tem a capacidade de iniciar discos GPT, tanto em Hardwares com BIOS, como em sistemas baseados em UEFI. Todos comandos referentes a partições permanecem relativamente os mesmos exemplo: (hd0, 8)). Apenas siga a documentação de sua distribuição. Como essa configuração está fora do escopo do artigo não entrarei em detalhes sobre a mesma.

4. A dupla Syslinux / Extlinux, támbem oferecem suporte a GPT. Mesmo caso acima consulte na documentação de sua distribuição.

Utilitários de Particionamento
- GPT fdisk

GPT fdisk é um conjunto de utilitários, em modo texto, para editar discos GPT de edição.

Consiste em 'gdisk', 'sgdisk' e 'cgdisk', que são equivalentes às ferramentas fdisk (usadas para discos MBR). Consulte em sua distribuição. No Arch Linux (como não poderia deixar de ser) por exemplo, o nome do pacote é: gptfdisk (não deve ser muito diferente nas outras).

Nota importantíssima: Os utilitários de particionamento 'fdisk' (ou seja: 'fdisk', 'cfdisk' e 'sfdisk') não suportam GPT.

- Converter de MBR para GPT

Uma das melhores características do 'gdisk', é sua capacidade de converter MBR e "disklabels" BSD para GPT, sem perda de dados. Após a conversão, todas as partições MBR primárias e as partições lógicas, se tornam partições GPT com os GUIDs de partição corretos e GUIDs (UUIDS), criadas para cada partição.

Para tanto, basta abrir o disco MBR usando 'gdisk'. * Cuidado para qualquer erro. Corrija os mesmos de gravar qualquer alteração no disco, porque você poderá perder dados.

Consulte o 'man gdisk' para entender o funcionamento da ferramenta, ela em si é muito similar ao 'fdisk', com sutis alterações nos comandos, seja ATENTO.

Sair com 'w' para gravar alterações de volta para o disco (semelhante ao 'fdisk') para converter o disco MBR para GPT

* FAÇA POR SUA CONTA E RISCO, SE ASSIM DESEJAR, SUGIRO UMA NOVA INSTALAÇÃO.

Após a conversão, será necessária a reinstalação do carregador de Boot e configurá-lo para iniciar a partir de um disco GPT.

Nota importante: Lembre-se que o disco GPT armazena uma tabela secundária no final do disco. Você deve ter certeza, de que os últimos 33 setores (do disco) não estejam sendo utilizados por qualquer partição.




Conclusões
Este esboço teve a intenção, apenas, de apontar uma direção, a ser seguida.

Não me vejo sem usar GNU/Linux, em hipótese alguma. Então, me fiz a seguinte pergunta:

- O que me garante que meu próximo Hardware não será um sistema baseado em UEFI?

Então, tenho de estar preparado para saber como lidar com isso quando essa hora chegar, e acreditem colegas, ela está chegando.

Os dias da velha BIOS estão chegando ao fim e viva a evolução, e principalmente, Viva o Linux.

Nenhum comentário:

Postar um comentário