Pode sobrescrever partições adjacentes

14

dd if=/dev/zero of=somepartition bs=512

também limpe partições após somepartition ou pare no final de somepartition ?

    
por LogicBreaker 25.10.2017 / 19:41

5 respostas

17

Substituir uma partição por dd

dd é uma ferramenta muito poderosa, mas também perigosa. Faz o que você diz para fazer sem perguntas. Então, se você disser para limpar as fotos da família, ... e é um pequeno erro de digitação.

Mas, se você marcar e confirmar, poderá usá-lo.

dd if=/dev/zero of=somepartition bs=512

ou eu sugeriria

dd if=/dev/zero of=/dev/sdxn bs=4096

em que x é a letra da unidade e n é o número da partição e o tamanho do bloco 4096 bytes torna o processo de gravação mais rápido.

É importante que você grave em uma partição nesse caso. Se você gravar em toda a unidade (a extremidade da unidade) /dev/sdx , a unidade inteira será sobrescrita. Mas a gravação na partição será interrompida no final da partição e as partições por trás dela serão preservadas. (Eu testei agora em um USB pendrive no Lubuntu 16.04 LTS, então eu sei que funciona assim.)

Exceção para uma partição estendida

Existe uma exceção para uma partição estendida (que é um contêiner para partições lógicas, para ter mais de quatro partições em uma tabela de partição MSDOS). Isso é descrito no link a seguir,

Posso fazer uma imagem de 'extended 'partição usando dd?

  

Mas há outro problema também. Eu testei o seu comando em um ambiente de teste e o dd leu apenas um kibibyte (1024 bytes) quando eu queria fazer uma imagem de uma partição estendida.

Eu também testei isso agora em um USB pendrive no Lubuntu 16.04 LTS, e isso se aplica à escrita (bem como à leitura). Apenas o primeiro kibibyte é sobrescrito.

Para resumir, substituir partições primárias e partições lógicas funciona de acordo com a descrição principal desta resposta. Mas não use este método para sobrescrever uma partição estendida, porque somente o primeiro kibibyte será sobrescrito. As partições lógicas da partição estendida não serão mais encontradas através da tabela de partições, mas os dados armazenados nelas ainda estarão lá.

    
por sudodus 25.10.2017 / 20:28
4

As gravações em um dispositivo de partição não serão gravadas fora dessa partição, com dd ou qualquer outra coisa. Você precisaria usar um dispositivo wholedisk para ter algum efeito fora de uma única partição.

(Advertência: a menos que seu disco tenha uma tabela de partição com partições sobrepostas, o que nunca deve acontecer.)

    
por hobbs 26.10.2017 / 00:29
4

Eu acho que sua pergunta é baseada em um mal-entendido fundamental sobre como dd (e, na verdade, sistemas operacionais parecidos com o Unix em geral) funcionam:

dd não pode sobrescrever partições adjacentes, simplesmente porque dd não pode sobrescrever partições, período .

dd simplesmente grava em arquivos . É isso.

Agora, se você passar dd um arquivo que represente múltiplas partições, então dd sobrescreverá aquele arquivo . Mas, nesse caso, não é dd escrevendo além do final da partição. dd continuará escrevendo até o final do arquivo, e somente até o final do arquivo.

Mas, se você passar dd um arquivo que representa apenas uma partição, então dd não irá escrever após o final desta partição. Novamente, isso não tem nada a ver com dd . dd simplesmente escreve no arquivo para o qual você escreve. O fato de esse arquivo representar uma única partição é (neste caso) assegurado pelo driver de dispositivo de bloco no kernel. dd não tem nada a ver com isso.

Então, em suma: dd escreve em arquivos. O que esses arquivos representam não é uma preocupação de dd . dd não sabe nada sobre partições.

    
por Jörg W Mittag 26.10.2017 / 10:06
1

Há um cenário especial perigoso, mas raro, no qual isso pode acontecer mesmo com drivers de dispositivo de bloqueio sem bugs:

  • A tabela de partição no disco é alterada de forma que a partição x seja redimensionada para terminar em um limite inferior ao anterior. Ou a partição y atrás é redimensionada para início superior em um limite inferior ou uma nova partição y é adicionada ao espaço.
  • A partição y é preenchida com dados relevantes por meio independentes da tabela de partição, por exemplo, usando dd com opções skip / count no dispositivo de bloco de disco inteiro (por exemplo, / dev / sda)
  • O ioctl que informa ao kernel para reler a tabela de partição não é emitido ou falha devido a dispositivos ocupados
  • A partição x é gravada por qualquer processo que tente gravar nela até atingir uma condição de erro.
por rackandboneman 26.10.2017 / 11:11
0

Você tem que ter cuidado com o dd como se cometer um erro você pode sobrescrever mais do que esperava e isso depende do que você está usando dd (o OP era vago no uso dele do dd e da sintaxe exata do comando dd).

Se você especificar uma partição , ela gravará nessa partição até que a partição esteja cheia.

Se você cometer um erro e colocar a unidade inteira, por exemplo de = / dev / sda, o dd gravará no início inteiro da unidade para terminar de ignorar (e sobrescrever) sua tabela de partições.

Você também pode usar dd em uma partição para sobrescrever arquivos apagados (arquivos apagados podem permanecer na partição e descobertos por várias ferramentas de recuperação com vários graus de sucesso até que sejam gravados. Nesse caso, você pode usar o dd para preencher o arquivo. espaço livre escrevendo em um arquivo.

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file

Dependendo do que você está fazendo, no entanto, você pode querer usar uma ferramenta alternativa para excluir arquivos com segurança. Veja Como excluir arquivo (s) de maneira segura? para opções .

    
por Panther 25.10.2017 / 19:49

Tags