Sim, você pode fazer isso com o sistema de arquivos /sys
.
/sys
é um sistema de arquivos falso gerado dinamicamente pelo kernel & drivers do kernel.
Neste caso específico, você pode ir para /sys/block/sda
e você verá um diretório para cada partição na unidade. Existem dois arquivos específicos nas pastas de que você precisa, start
e size
. start
contém o deslocamento do início da unidade e size
é o tamanho da partição. Basta excluir as partições e recriá-las com os mesmos inícios e tamanhos encontrados em /sys
.
Por exemplo, esta é a aparência da minha unidade:
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 é o 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 estão corretas depois de modificar a tabela de partições em um sistema em execução