Sim, você pode fazer isso com o /sys
sistema de arquivos.
/sys
é um sistema de arquivos falso gerado dinamicamente pelos drivers do kernel e do kernel.
Nesse caso específico, você pode acessar /sys/block/sda
e você verá um diretório para cada partição na unidade. Existem 2 arquivos específicos nessas pastas que você precisa start
e size
. start
contém o deslocamento desde o início da unidade e size
é o tamanho da partição. Basta excluir as partições e recriá-las com exatamente os mesmos começos e tamanhos encontrados em /sys
.
Por exemplo, é assim que minha unidade se parece:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 133119 65536 83 Linux
/dev/sda2 * 133120 134340607 67103744 7 HPFS/NTFS/exFAT
/dev/sda3 134340608 974675967 420167680 8e Linux LVM
/dev/sda4 974675968 976773167 1048600 82 Linux swap / Solaris
E é isso que eu tenho em /sys/block/sda
:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
Eu testei isso para verificar se as informações são precisas após modificar a tabela de partição em um sistema em execução
/dev/sdb/start
. Foi renomeado paraext_range
? Kernel:4.8.15-1-MANJARO
/sys/block/sdb/start
, não #/dev/sdb/start
stat
lá, mas nãostart
.fdisk
, pois permite inserir o número de setores diretamente e você pode verificar os valores antes de gravar no disco. Eu restaurei um disco com êxito: criando a primeira partição, aceitando estar e inserindo "+ size" (de cima) para final, segunda partição inserindostart
de / sys ... e "+ size" novamente e assim por diante ... tamanho das partições antes de escrever a nova tabela. Boa sorte!Eu criei um script para ajudar a resolver esse problema, SEM GARANTIA . (mas eu testei na minha máquina virtual)
Executando o seguinte script, com HD danificado no primeiro parâmetro: $ ./repart.sh sda
A saída é um formato sfdisk. Mas cuidado , esse arquivo precisa ser modificado para ser usado. No tipo de partição estendida = 5, aumente o tamanho, usando todo o espaço lógico mais o espaço entre o início da estendida e o início da primeira partição lógica.
Você precisa alterar o tipo , de XX para o número do tipo de partição. Coloque a partição inicializável na primeira linha.
Aplique essas alterações
Reler tabelas de partição
Reinstale o grub
fonte
Você já tentou o testdisk ? Ele pode verificar o disco e recuperar as tabelas de partição perdidas, mesmo após a reinicialização.
Está disponível pré-empacotado para o Debian e, presumivelmente, para o Ubuntu também. Provavelmente outras distros.
Se você estiver inicializando um CD do gparted, provavelmente vale a pena verificar se ele está pré-instalado nele.
fonte