Seria
dd if=/dev/zero of=somepartition bs=512
também limpe partições depois somepartition
ou para no final de somepartition
?
Seria
dd if=/dev/zero of=somepartition bs=512
também limpe partições depois somepartition
ou para no final de somepartition
?
Respostas:
dd
dd
é uma ferramenta muito poderosa, mas também perigosa. Ele faz o que você manda fazer sem perguntas. Portanto, se você disser para apagar as fotos da família, ... e ocorrer um pequeno erro de digitação.
Mas se você verificar e verificar duas vezes, poderá usá-lo.
dd if=/dev/zero of=somepartition bs=512
ou eu sugeriria
dd if=/dev/zero of=/dev/sdxn bs=4096
onde x
está a letra da unidade en
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ê escreva em uma partição nesse caso. Se você gravar em toda a unidade (o cabeçote da unidade), /dev/sdx
toda a unidade será substituída. Mas a gravação na partição será interrompida no final da partição e as partições atrás dela serão preservadas. (Eu testei agora em um pendrive USB no Lubuntu 16.04 LTS, então eu sei que funciona assim.)
Há 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ções do MSDOS). Isso é descrito no seguinte link,
Posso criar uma imagem da partição 'estendida' usando o dd?
Mas há outro problema também. Testei seu comando em um ambiente de teste e o dd leu apenas um kibibyte (1024 bytes) quando desejava criar uma imagem de uma partição estendida.
Testei também isso agora em um pendrive USB no Lubuntu 16.04 LTS, e isso se aplica à escrita (assim como à leitura). Somente o primeiro kibibyte é substituído.
Para resumir, a substituição de partições primárias e partições lógicas funciona de acordo com a descrição principal nesta resposta. Mas não use esse método para substituir uma partição estendida porque somente o primeiro kibibyte será substituído. 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 estão lá.
dd
e que seja arriscado, para ter muito cuidado ao usá-lo. Boa sorte :-) Em geral, você deve sempre ter um backup de todos os arquivos que não pode perder.
Gravações em um dispositivo de partição não gravam 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ções com partições sobrepostas, o que nunca deve acontecer.)
Eu acho que sua pergunta é baseada em um mal-entendido fundamental sobre como dd
(e de fato os sistemas operacionais Unix-like em geral) funcionam:
dd
não pode sobrescrever partições adjacentes, simplesmente porque dd
não pode sobrescrever partições, ponto .
dd
simplesmente escreve para arquivos . É isso aí.
Agora, se você passar dd
um arquivo que representa várias partições, dd
substituirá esse arquivo . Mas, nesse caso, não está dd
gravando além do final da partição.dd
ainda gravará 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, dd
não gravará além do final desta partição. Novamente, isso não tem nada a ver comdd
. dd
simplesmente grava no arquivo para o qual você escreve. O fato de esse arquivo representar uma única partição é (nesse caso) garantido pelo driver do dispositivo de bloco no kernel. dd
não tem nada a ver com isso.
Então, resumindo: dd
grava em arquivos. O que esses arquivos representam, não dd
é motivo de preocupação. dd
não sabe nada sobre partições.
dd
para gravar em partições brutas. Você só pode gravar em arquivos. Obviamente, você pode gravar em um arquivo de dispositivo de bloco que represente uma partição (como /dev/sda1
), mas não pode gravar em uma partição bruta. E como você só pode gravar em um arquivo que representa uma partição, não é possível gravar além do final da partição, porque o arquivo representa apenas a partição, e não a partição e um pouco além do final.
/dev/sda
no seu editor de texto e alterar os dados, dd
não é diferente de nenhum outro programa em termos de poder acessar partições. Resposta muito boa!
Há um cenário especial perigoso, mas raro, em que isso pode ocorrer mesmo com drivers de dispositivo de bloco que não sejam de buggy:
Você deve ter cuidado com o dd, como se cometer um erro, poderá sobrescrever mais do que esperava e isso depende do que você está usando para o dd (o OP foi vago no uso do dd e na sintaxe exata do dd comando).
Se você especificar uma partição, ela gravará nela até que a partição esteja cheia.
Se você cometer um erro e colocar a unidade inteira, por exemplo, = / dev / sda, o dd gravará em toda a unidade e começará a ignorar (e substituir) a tabela de partição.
Você também pode usar o dd em uma partição para sobrescrever os arquivos excluídos (os arquivos excluídos podem permanecer na partição e descobertos por várias ferramentas de recuperação com vários graus de sucesso até que sejam sobrescritos. Nesse caso, você pode usar o dd para preencher o 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, convém usar uma ferramenta alternativa para excluir arquivos com segurança. Consulte Como excluir arquivos de maneira segura? para opções.
dd
não é tão baixo nível. De fato, a maioria das coisas que as pessoas fazem usando dd
poderia ter sido feita da mesma maneira cat
. Na verdade, cat
é um pouco mais rápido porque usa blocos maiores do dd
que o padrão. Todo o código de baixo nível está no kernel. E o motorista realmente não se importa se você estiver usando dd
ou cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
ou dd if=/dev/zero of=/dev/sda bs=512
são exemplos. Com o segundo comando, ele continuará gravando e preenchendo o disco inteiro "ignorando" a tabela de partições. Se você especificar uma partição, dd if=/dev/zero of=/dev/sda1
ela não irá além da partição. Mais ou menos depende do que você quer fazer com o dd.
of=somepartition
, portanto, o caso em que você escreve para todo o dispositivo de disco não se aplica. dd
não pode contornar as restrições do driver de dispositivo.
/dev/sda1
, são criados pelo kernel de tal maneira que é impossível acessar o armazenamento adjacente através deles (assumindo que a tabela de partições não foi alterada após a leitura do kernel pela última vez). Se você pudesse acessar o armazenamento adjacente dessa maneira, isso seria considerado um bug enorme.