Como usar o comando 'od' para verificar a zeragem do HDD?

1

Eu quero verificar se uma unidade de disco rígido foi zerada com sucesso. Eu li isso , que instrui para executar:

$ sudo od /dev/disk2 | head

que para o disco rígido retorna:

0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000

Eu li aqui que

  

head retorna as dez primeiras linhas de cada nome de arquivo fornecido   para isso.

  1. Estou certo em assumir que sem | head , od imprimirá todo o conteúdo do HDD no terminal?

  2. Quando tentei isso, recebi a mesma saída: 1 de sete dígitos 0 s e 8 de seis dígitos 0 s e 1 * , exceto que após o * recebi% código%. Está tudo incluído e incluindo o 7216060060000 as dez "linhas" (embora isso não seja um arquivo e não deve haver nenhuma linha)?

  3. Por que apenas o primeiro número tem sete dígitos?

  4. O que significa o * ? Significa que tudo o mais pode ser qualquer coisa (não necessariamente zeros), são todos zeros (ou seja, todo o meu HDD é todo zeros), ou são todos iguais repetindo o padrão precedente (ou seja, 1 sete dígitos * s e 8 seis dígito 0 s)?

  5. A 0 manpage indica que o comando od será : "Escreva uma representação não ambígua, bytes octal por padrão, de FILE para a saída padrão." O que é um "byte octal"? Isso sugere que é terminologia fora do padrão, mas pode ser de 6 bits.

  6. Meu HDD é de 500 GB com setores de 512 bytes. Será que od é igual a essa capacidade?

    7216060060000 bytes octal * (6 bits? / 1 octal byte?) * (1 byte / 8 bits) * (1 GB / 1e9 bytes) = 5412.045045 GB

    qual não é a minha capacidade de HDD. Alguma coisa deu errado?

  7. Meu HDD foi zerado com sucesso?

por CodeBricks 23.10.2017 / 02:59

2 respostas

3
  1. Não. head cortará a saída após 10 linhas por padrão. Como havia apenas três linhas no total, você obterá apenas três linhas com ou sem head .
  2. Quanto às linhas, por que os arquivos devem ter apenas as linhas linhas ? Você quer que toda a saída de comando seja preenchida em uma linha?
  3. É um número octal que mostra quantos bytes foram lidos desde o início da entrada. Pode ser mais dígitos, se necessário.
  4. Em man od :

    -v, --output-duplicates
          do not use * to mark line suppression
    

    Portanto, od tenta evitar a impressão de linhas duplicadas. * marca esses.

  5. De a documentação original de od (que é mais claro):

      

    Cada linha de saída consiste no deslocamento na entrada, seguido por   grupos de dados do arquivo. Por padrão, od imprime o deslocamento em   octal, e cada grupo de dados de arquivo é um valor de entrada de C curto int   impresso como um único número octal.

    Portanto, cada bloco como um todo é um número octal. Um C short int é geralmente 2 bytes . od recebe dois bytes de dados, trata-os como um número e imprime na base 8 como um único número e repete. Cada linha tem 8 blocos desse tipo, então temos 16 bytes por linha. O deslocamento também é impresso na base 8 e 20 na base 8 é 16 na base 10.

  6. Como o offset está na base 8, convertendo para a base 10:

    $ echo $((8#7216060060000))
    500107862016
    $ echo $((8#7216060060000 / 1000 / 1000 / 1000))
    500
    

    $((N#X)) diz ao bash para ler X como base- N number. Como o bash produz na base 10 por padrão, fazer $((8#...)) é convertido de octal para decimal.

  7. Sim.

por muru 23.10.2017 / 05:52
0

Você tem um monte de perguntas aqui, isso está respondendo # 5, saída octal representa dados binários três bits para um dígito, cada dígito terá um valor de 0-7, com 0 = binário 000, 1 = binário 001, 2 = binário 010, 3 = binário 011, 4 = binário 100, 5 = binário 101, 6 = 110 e 7 = 111. O Octal era popular com sistemas de computador antigos, mas o hex que usa 0-f para representar valores de 0000 a 1111 em cada dígito é mais compacto e usado com mais freqüência hoje .

    
por Robert Dinse 23.10.2017 / 04:42