Eu queria converter algumas partições lógicas para as estendidas, então eu estava seguindo esta resposta aceita . No entanto, no passo de fazer o backup da minha tabela de partições atual, eu errei e digitei o seguinte em vez do que foi escrito.
sfdisk -f /dev/sda > /mnt/parts.txt
O que resultou nisso:
Disk /dev/sda: 30401 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 304- 304- 2441214+ 82 Linux swap / Solaris
/dev/sda2 * 304+ 565- 262- 2097152 83 Linux
/dev/sda3 565+ 4486- 3921- 31495168 83 Linux
/dev/sda4 4486+ 30401- 25916- 208163840 5 Extended
/dev/sda5 4486+ 24026- 19540- 156954624 83 Linux
Como você pode ver, as unidades são cilindros e blocos, o que provavelmente faz uma perda de precisão em comparação a uma exportação correta com setores.
O problema é que eu quebrei minha tabela de partições e agora tenho que explorar esse backup incompleto (ou é?).
Até agora, tentei reescrever a tabela de partição usando setor como uma unidade (os cilindros não levam a lugar nenhum) sabendo que um bloco é dois setores (não sei se é geral, mas exportando a tabela de partições em setores informa que 1 setor = 512 bytes e 1 bloco = 1024 bytes ...).
root@debian:/home/user# sfdisk -u S /dev/sda
Checking that no-one is using this disk right now ...
OK
Disk /dev/sda: 30401 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sda1 1 4882429 4882429 82 Linux swap / Solaris
/dev/sda2 4882430 9076733 4194304 83 Linux
/dev/sda3 9076734 72067069 62990336 83 Linux
/dev/sda4 72067070 488394749 416327680 83 Linux
Input in the following format; absent fields get a default value.
<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
Usually you only need to specify <start> and <size> (and perhaps <type>).
/dev/sda1 :1 4882429 S
/dev/sda1 1 4882429 4882429 82 Linux swap / Solaris
/dev/sda2 :4882430 4194304 L *
/dev/sda2 * 4882430 9076733 4194304 83 Linux
/dev/sda3 :9076734 62990336
/dev/sda3 9076734 72067069 62990336 83 Linux
/dev/sda4 :72067070 416327680 E
/dev/sda4 72067070 488394749 416327680 5 Extended
/dev/sda5 :72067071 313909248
/dev/sda5 72067071 385976318 313909248 83 Linux
/dev/sda6 :
/dev/sda6 385976320 488394749 102418430 83 Linux
/dev/sda7 :
No room for more
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sda1 1 4882429 4882429 82 Linux swap / Solaris
/dev/sda2 * 4882430 9076733 4194304 83 Linux
/dev/sda3 9076734 72067069 62990336 83 Linux
/dev/sda4 72067070 488394749 416327680 5 Extended
/dev/sda5 72067071 385976318 313909248 83 Linux
/dev/sda6 385976320 488394749 102418430 83 Linux
Warning: partition 1 does not end at a cylinder boundary
Warning: partition 2 does not start at a cylinder boundary
Warning: partition 2 does not end at a cylinder boundary
Warning: partition 3 does not start at a cylinder boundary
Warning: partition 3 does not end at a cylinder boundary
Warning: partition 4 does not start at a cylinder boundary
Warning: partition 4 does not end at a cylinder boundary
Warning: partition 5 does not end at a cylinder boundary
Warning: partition [6] does not start at a cylinder boundary
Warning: partition [6] does not end at a cylinder boundary
Warning: partition 6 does not end at a cylinder boundary
Do you want to write this to disk? [ynq] y
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
Ele diz: nenhuma partida / parada da partição em um limite de cilindro. Não sei o que isso significa, mas como existem + e - , isso significa que o número foi arredondado, na exportação original, presumo que isso seja normal .
Também emiti o mesmo comando errado para ver se a saída era a mesma:
Disk /dev/sda: 30401 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 303- 304- 2441214+ 82 Linux swap / Solaris
/dev/sda2 * 303+ 565- 262- 2097152 83 Linux
/dev/sda3 565+ 4485- 3921- 31495168 83 Linux
/dev/sda4 4485+ 30401- 25916- 208163840 5 Extended
/dev/sda5 4485+ 24025- 19540- 156954624 83 Linux
/dev/sda6 24025+ 30401- 6376- 51209215 83 Linux
Está perto, mas não é exatamente o mesmo. Além disso, o gparted não parece reconhecer nenhum sistema de arquivos de partição (tudo é "desconhecido").
Além disso, como pode / dev / sda1 ter 304 cilindros grandes, mas termina em 303 cilindros?
Eu acho que estou perto da solução, mas não consigo obter os números exatos que são necessários, provavelmente porque eu calculei mal algo ou estou fazendo errado. Mas eu não posso mudá-los um por um para ver qual combinação funciona (eu posso, mas exigiria algum tempo bash de codificação e processamento, e eu não saberia o que estava errado).
Eu tenho backups recentes dos mais importantes para este disco, mas se eu pudesse corrigi-lo sem reinstalar e copiar arquivos, isso poderia ser bom.