Uma partição NTFS tem um Bloco de Parâmetros do BIOS em seu início, onde um campo (um DWORD no deslocamento 0x1C, o "Número de setores ocultos") diz onde no disco está localizado.
Você deve (a) restaurar a partição exatamente no mesmo setor no disco rígido, ou (b) corrigir este campo (escrevendo o número no estilo Little-Endian), se você quiser inicializar a partir dele.
Por exemplo para afirmar que uma partição está carregada no setor 63 (padrão no XP), use:
echo 63 | gawk '{printf("%c%c%c%c",$1,rshift($1,8),rshift($1,16),rshift($1,24))}' | dd bs=1 count=4 seek=28 of=/dev/sda1
onde /dev/sda1
é a partição em questão.
Você pode usar fdisk
para ver as partições atuais:
# fdisk -l /dev/sda
...
Device Boot Start End Blocks Id System
/dev/sda1 * 321300 192089204 95883952+ 7 HPFS/NTFS/exFAT
/dev/sda2 192089210 408998834 108454812+ 7 HPFS/NTFS/exFAT
/dev/sda3 409001982 625141759 108069889 5 Extended
/dev/sda4 63 321299 160618+ 83 Linux
...
# dd bs=1 count=4 skip=28 if=/dev/sda1 | hd
...
00000000 14 e7 04 00
...
Neste exemplo, tenho a partição NTFS / dev / sda1 (com o Win Vista) no setor 321300 (0x0004e714).