Está um pouco atrasado, mas tive um problema semelhante depois que a porta USB do meu gabinete de disco rígido IOMEGA quebrou. Mudei para outro gabinete USB-2-SATA apenas para descobrir que não consegui montar a partição EXT4. Por alguma razão, o caso IOMEGA relatou que o tamanho do setor lógico era 4096, mas meu novo caso dizia que eram apenas 512 bytes. Isso estraga a tabela de particionamento do MS-DOS.
Isso estava me enlouquecendo, porque com a ajuda de testdisk
consegui acessar a partição, ao mudar o tamanho do setor, mas não encontrei nenhuma maneira de alterar o tamanho do setor em todo o sistema. Acontece que isso não é necessário, porque o EXT4 não se importa com o tamanho do setor, você só precisa encontrar o começo da partição que gostaria de acessar.
Correção rápida: Use um dispositivo de loopback para mudar para a posição correta da partição.
Correção permanente: Reescreva a tabela de partições de acordo.
No meu caso, a unidade afetada era /dev/sdb
.
Minha correção rápida foi relativamente fácil, já que eu tinha apenas uma partição começando no setor 63.
$ sudo sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 63, size=623708785, Id=83
Agora temos que calcular a posição da partição, quando o tamanho do setor ainda era de 4096 bytes:
63 sectors * 4096 bytes = 258048 bytes
E use isso com losetup
:
$ sudo losetup /dev/loop0 /dev/sdb -o 258048
$ sudo mount /dev/loop0 /mnt
Sua partição deve agora ser montada em /mnt
.
Para a correção a longo prazo, usei sfdisk
para despejar o layout da partição:
$ sudo sfdisk -d /dev/sdb > sdb.partitions.sfdisk.text
Corrigindo a tabela de partições multiplicando com o setor inicial com 8, quando apropriado - aqui percebi que minha tabela de partições estava meio aparafusada desde o começo.
Eu editei o despejo da tabela de partições com nano sdb.partitions.sfdisk.text
:
/dev/sdb1 : start= 63, size=623708785, Id=83
para:
/dev/sdb1 : start= 504, size=623708785, Id=83
e, posteriormente, estender a partição para usar todo o espaço disponível (que determinei por outros meios):
/dev/sdb1 : start= 504, size=625141944, Id=83
O último passo é escrever de volta a tabela de partições com:
$ sudo sh -c 'cat sdb.partitions.sfdisk.text | sfdisk /dev/sdb'