O seguinte deve funcionar. Baixe um disco de instalação do FreeBSD e inicialize-o no modo de usuário único. Quando terminar, faça:
gpart show ada0
que deve imprimir seu texto descrevendo o layout do disco. O resultado seria parecido com:
=> 34 500118125 ada0 GPT (238G)
34 1024 1 - free - (512K)
1058 490732544 2 freebsd-ufs (234G)
490733602 8388608 3 freebsd-swap (4.0G)
499122210 995949 - free - (486M)
Agora você pode fazer o backup da GPT para edição emitindo gpart backup ada0
, o que deve fornecer algo nos moldes de (desde que você excluiu a partição 1):
GPT 128
2 freebsd-ufs 1058 490732544
3 freebsd-swap 490733602 8388608
copie a saída para um arquivo e edite-o assim (os números seguintes ao freebsd-boot são os números do espaço livre de gpart show ada0
):
GPT 128
1 freebsd-boot 34 1024
2 freebsd-ufs 1058 490732544
3 freebsd-swap 490733602 8388608
Se você armazenou o arquivo acima em um arquivo chamado newgpt
, o seguinte restaura o GPT para uma condição que deve permitir a inicialização:
gpart restore -F ada0 < newgpt
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
O último comando deve ser redundante, já que o código de inicialização deve estar intacto no disco, mas como não tenho um sistema para quebrar para testar isso, estou colocando-o lá no caso.