quarta-feira, 5 de dezembro de 2012

A fragilidade do GRUB instalado na partição

Bug 872826 - f18 beta tc7 anaconda - no option to install bootloader to a partition

(considere GRUB = GRUB2)

Instalar o GRUB na partição nunca foi um procedimento robusto. Se for chamado com --force, grub2-install usará lista de blocos para carregar o core.img do sistema de arquivos. O código no início da partição terá sua localização hardcoded. Se por acado o arquivo for movido, recriado, não será mais achado. Será preciso rodar novamente o grub2-install para a referência ao core.img ser refeita.

Esse problema não acontece quando o GRUB é instalado no MBR, pois ali existe o intervalo não usado entre o setor 1 e 62 (particionamento antigo) ou setor 1 e 2047 (particionamento pós-Windows Vista), ou seja, 31KiB ou ~1MiB. Nesse espaço, o core.img pode linkar seus módulos que dão suporte ao sistema de arquivos em questão e não dependerá mais de listas de blocos hardcoded. Assim, ele passa a entender o sistema de arquivos e achará sem problemas seus arquivos dentro da partição mesmo que os mesmos sejam movidos, recriados.

Os desenvovedores do GRUB não recomendam sua instalação em partições, processo que requer a chave --force. Instalar o GRUB na partição voltará a ser possível sem a fragilidade das listas de blocos com o Btrfs, que tem um intervalo não usado bem maior no seu início: 64KiB. Nesse espaço, o GRUB pode colocar o core.img da mesma forma quando é instalado no MBR (ou seja, no espaço não usado antes da primeira partição).

Espaço não usado no início de cada sistema de arquivos:

EXT4 - 1KiB
XFS - 0KiB
Btrfs - 64KiB

Como se vê, o GRUB não pode ser instalado de maneira nenhuma em partições com XFS (no MBR não tem problema, XFS é suportado).

Com firmwares UEFI e o particionamento GPT, essa celeuma não existe mais! É coisa de BIOS e do particionamento MBR.

Nenhum comentário:

Postar um comentário