GPT + MBR c/ rEFIt

Estava a usar no MacBook uma tabela de partições híbrida GPT/MBR para poder correr Linux. Para facilitar instalei o rEFIt que permite colocar o boot directo para o SO não Mac OS (legacy), e mostra o menu por omissão sem precisar estar a carregar no Option.

Tinha preparado para montar um disco maior e tinha-lhe instalado o mesmo esquema, com o Ubuntu Karmic Koala. Ora quando tive oportunidade de trocar os discos, actualizei o Ubuntu desse disco maior para o Lucid Lynx que trouxe com ele o grub2. Ao reiniciar, o grub dava um erro que tornava impossível arrancar o sistema, a shell do grub era a de rescue, e não conseguia carregar o módulo com a shell normal. Como o rEFIt não arranca o Linux directamente de uma pen usb (dá um erro qualquer que me parece ser limitação dos Macs, que só arrancam o Mac OS dessa forma), fiquei bloqueado até ter um CD/DVD do Ubuntu à mão. :(

Quando arranjei o CD, pensava que o problema era do grub estar mal instalado. Voltei a instalá-lo na partição onde tinha a root e continuava a ter erro. Como esta partição era a 5ª e o MBR só mostra as 4 primeiras, deduzi que talvez o problema estivesse relacionado. Decidi remover uma partição genérica que estava antes mais a swap (2GB de RAM com desenhos grandes no Inkscape por vezes precisam da swap) e mover a root para trás. Como não apaguei a root, ficou com o mesmo número. O problema do grub manteve-se, embora não saiba ao certo se exactamente por isso. Como o MBR é independente da GPT, acabei por resolver o problema instalando o grub no MBR. Não afectou o boot principal e ficou reconhecido pelo rEFIt, carregando o Linux correctamente.

Como tinha instalado o grub primeiro para a partição, acabei com 2 entradas no menu do rEFIt, uma do MBR (que ficou a funcionar) e outra da partição que também tinha o grub e não funcionava. Como no rEFIt ele não indicava qual era qual, seria interessante remover o grub da partição para eliminar a opção de boot que não interessava.
Procurei se alguém tinha tido esta necessidade, mas a maioria dos resultados da pesquisa era alguém a procurar uma solução para remover o grub do MBR, e as soluções indicadas para remover de uma partição passavam por apagá-la, que não era de todo uma solução que me servisse, dado que a partição já tinha o sistema instalado.

Acabei por decidir experimentar fazer o mesmo procedimento usado para limpar o MBR, mas com a partição, usar o dd e limpar o sector inicial da partição em causa: dd if=/dev/zero of=/dev/sda5 bs=512 count=1 e funcionou. :-) No MBR apenas os primeiros 446B são usados para guardar o boot loader, por isso limpar o sector todo implica apagar também a tabela de partições (daí 446B em vez de 512B), assumi que esse não era o caso com o sector da partição independente, dado que este não necessita guarda essa informação.

Entretanto enquanto estava pesquisar alguma informação para escrever este post, encontrei uma página que explica uma situação semelhante, de instalar o stage1 do grub numa partição por engano.

Será possível usar o grub2 na vez do rEFIt (dado que já suporta GPT) e deixar de ter este esquema do MBR no GPT :?: