Sobrescreveu a tabela de partição do disco de inicialização com o gdisk; como restaurar?

0

Instalei um novo disco rígido no meu servidor doméstico hoje, fui formatá-lo no gdisk (maior que 2 TB), configurei as alterações e as gravei. Então eu notei que eu havia selecionado o disco errado, na verdade eu acabei de substituir a tabela de partições no meu disco de inicialização.

As alterações na tabela de partições serão gravadas assim que eu reinicializar o sistema, e tenho certeza de que ele não será inicializável a menos que eu possa restaurar a tabela de partições para o que era antes.

Existe alguma maneira de restaurar a tabela de partições antiga ou pelo menos o suficiente para reinicializar com segurança?

Eu tenho a saída 'p' do gdisk, antes de ter substituído a tabela:

Command (? for help): p
Disk /dev/sdh: 125045424 sectors, 59.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D0127C61-1349-42D1-A03F-46F604F3DD6C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 125045390
Partitions will be aligned on 2048-sector boundaries
Total free space is 4717 sectors (2.3 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       119883775   57.2 GiB    8300  Linux filesystem
   5       119885824       125044735   2.5 GiB     8200  Linux swap

Algumas complicações:

  • O disco foi particionado anteriormente no MBR e - sem verificar com certeza - não acho que esse computador específico ofereça suporte a UEFI / inicialização do GPT.

  • Não tenho certeza se essa impressão inclui todas as informações necessárias para reconstruir a tabela de partições. É possível que algumas partições estejam escondidas aqui? Ou que outra informação vital estaria faltando? Eu sei - por exemplo - que, como o gdisk / GPT não tem um sinalizador "inicializável", esta impressão não o inclui.

  • Eu já tentei escrever essas partições de volta com o fdisk, mas não consigo descobrir como fazer com que o fdisk crie uma partição com o número '5'. Eu imagino que, se minha partição de swap "se mover" de sdh5 para sdh2, isso não funcionaria apenas magicamente.

Encontrei um problema semelhante, Recuperar tabela de partição ainda presente em executando o sistema para sobrescrever a tabela de partições usando dd . Mas no meu caso, desde que eu usei o gdisk (+ fdisk) para escrever uma nova tabela, eu não tenho certeza se as informações em / sys / block são mais precisas.

    
por user206468 21.11.2014 / 03:50

1 resposta

0

Eu finalmente tive uma chance hoje de dar uma boa olhada nesse problema, e felizmente a solução foi (principalmente) mais direta do que eu estava preocupado.

O que me ajudou foi aprender um pouco mais sobre como minha distro (Debian) configura partições de disco em uma instalação guiada ( link ), e sobre como as partições lógicas são criadas e especificadas no disco ( link ).

Depois de ler as anotações e verificar novamente, voltei para fdisk e:

  • Reescreveu o MBR ( o ) para começar de novo.
  • Criada ( n ) uma p rimary partition '1' com os setores "sdh1" anotados na saída do gdisk (2048 - 119883775).
  • Criada ( n ) uma partição e xtended '2' iniciando no primeiro setor disponível e abrangendo o restante do disco (119883776 - ...).
  • Criada ( n ) uma partição l ogical '5' com os setores "sdh5" anotados na saída do gdisk (119885824 - 125044735).
  • Alterou o tipo ( t ) na partição '5' para Trocar (digite o código '82').
  • Alterou o sinalizador inicializável ( a ) em "sdh1".
  • Escrevi minhas alterações ( w ) e saí.

Eu reiniciei para testar essa tabela de partição e o sistema não inicializou. Então, a partir daqui, tive que desconectar o disco e montá-lo em outro PC. Mas, felizmente, tudo que eu tinha esquecido de fazer era:

  • Reinstale o GRUB no MBR (agora reformatado). Uma vez que o disco foi montado no meu outro PC, usei grub-install --root-directory=/path/to/mount/point /dev/sdX (onde sdX era o arquivo do dispositivo para o disco montado no meu outro PC).
    • Se eu tivesse feito isso antes de reinicializar a máquina, imagino que seria grub-install --root-directory=/ /dev/sdh .

A configuração do grub no disco ainda estava bem, então reinstalar o próprio grub foi o necessário. Depois de conectar o disco novamente e inicializar, tudo parece estar funcionando perfeitamente até agora.

Uma lição importante que tirei disso foi que / sys / block data para partições estendidas é um pouco enganador. As informações de /sys/block/.../size para "sdh2" apenas reivindicaram 2 blocos, o que excluiu o tamanho real da partição, necessário para ajustar "sdh5" (minha partição lógica / swap) dentro dela.

EDIT Para uma boa medida, a saída atual fdisk -l no meu disco (que, após a reinicialização, agora se rotula como "sdi" em vez de "sdh" como antes) é:

Disk /dev/sdi: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders, total 125045424 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: <...>

   Device Boot      Start         End      Blocks   Id  System
/dev/sdi1   *        2048   119883775    59940864   83  Linux
/dev/sdi2       119883776   125045423     2580824    5  Extended
/dev/sdi5       119885824   125044735     2579456   82  Linux swap / Solaris
    
por 29.11.2014 / 02:35