Estranheza do deslocamento do hexdump do Linux

1

Estou tentando fazer o hexdump de alguns bytes perto do final de uma unidade de disco rígido de 1 TB. Primeiro, vamos olhar perto do começo, 0x1000:

%  hexdump -n 16  -s 0x1000 -C /dev/sda2

00001000  08 70 b5 7c 20 4c 56 4d  32 20 78 5b 35 41 25 72  |.p.| LVM2 x[5A%r|

E confirmando com o hexedit, vemos o hexdump funcionando bem:

00001000   08 70 B5 7C  20 4C 56 4D  32 20 78 5B  35 41 25 72

Agora o problema. hexedit mostra perto do final, no deslocamento 0xE864544000:

64544000   FC 4E 2B A9  01 00 00 00  00 00 00 00  00 00 00 00

Por que então o hexdump me mostra os dados em 0x7FFFFFFF quando eu especifico 0xE864544000 ...

%  hexdump -n 16  -s 0xE864544000 -C /dev/sda2

7fffffff  13 29 24 50 54 47 31 00  10 14 80 47 db 46 61 4e  |.)$PTG1....G.FaN|

Confirmando 0x7FFFFFFF:

%  hexdump -n 16  -s 0x7fffffff -C /dev/sda2

7fffffff  13 29 24 50 54 47 31 00  10 14 80 47 db 46 61 4e  |.)$PTG1....G.FaN|

Eu tentei isso em outro Linux e vi comportamento semelhante. Isso é um bug no hexdump ou estou faltando alguma coisa?

    
por hexer 25.07.2013 / 00:43

1 resposta

2

O deslocamento máximo, '-s', que o hexdump pode usar em uma instalação do Linux i686 é (2 ^ 31-1) ou 214783647 ou em hexadecimal, 0x7FFFFFFF. O número que você está tentando alcançar está muito além desse limite. Como @choroba apontou, você deve usar um kernel Linux de 64 bits para alcançar esse endereço.

    
por 25.07.2013 / 01:03

Tags