Copie apenas a tabela de partição de 64 bytes usando o dd

0

Dado:

===MBR INFO===
MBR SECTOR NAME             BYTES
code area                   440(max. 446)
disk signature (optional)   4
Usually nulls; 0x0000       2
Table of primary partitions 64(Four 16-byte entries, IBM partition table scheme)
MBR signature;0xAA55        2

MBR, total size: 446 + 64 + 2 = 512

Eu acredito que o comando dd para copiar a tabela de partições de 64 bytes JUST seria :

dd obs=2 seek=223 count=32 if=/path/to/some_mbr.bin of=/dev/sda

Está correto,

e / ou existe uma maneira melhor?

    
por GlassGhost 26.12.2011 / 21:22

2 respostas

2

Se o some_mbr.bin é um mbr completo, você precisa pular o código no arquivo de entrada também.

dd bs=1 if=/path/to/some_mbr.bin of=/dev/sda skip=446 seek=446 count=64

Claro que você pode fazer isso também com vi -b /path/to/some_mbr.bin /dev/sda com yank e put (se tiver coragem).

    
por 26.12.2011 / 22:20
0

Você tentou? Eu acabei de fazer e o arquivo de saída foi 16KB, não 64 bytes (tente olhar para a página de manual que você vinculou e os valores de obs e ibs).

Tente configurar o tamanho do bloco (para leitura e gravação) como 2 e pule a leitura da entrada que você não deseja, em vez de ler tudo e apenas escrever o que quiser.

Então você acabaria com algo como:

dd bs=2 skip=223 count=32 if=/path/to/some_mbr.bin of=/dev/sda

Também seria mais fácil de ler se você tivesse um tamanho de bloco igual a 1 em vez de 2 e significasse não mais dobrar e reduzir pela metade os números em sua cabeça.

Eu tentava ler o mbr e escrevê-lo em um arquivo e checar com um visualizador hexadecimal antes de ter coragem de escrever para o mbr.

    
por 26.12.2011 / 22:22