Isso não está /dev/zeroapagando algo, está ddapagando copiando sobre ele. Os fatos de que os bytes são zero e de que os zero bytes são originários, em /dev/zerovez de alguma outra fonte de zeros, são pequenos detalhes.
chrylis -on strike-
2
Se você quiser apenas limpar a tabela de partição, os wipefs podem ser mais confiáveis.
pipe
Respostas:
23
Vai dd if=/dev/zero of=/dev/sdaacabar com uma tabela de partição pré-existente?
Sim, a tabela de partições está na primeira parte da unidade, portanto, escrever sobre ela irá destruí-la. Isso ddescreverá sobre toda a unidade se você a deixar executar (por isso levará algum tempo).
Algo como dd bs=512 count=50 if=/dev/zero of=/dev/sdaseria suficiente para substituir os 50 primeiros setores, incluindo a tabela de partições MBR e a GPT principal. Embora, pelo menos de acordo com a Wikipedia, a GPT tenha uma cópia secundária da tabela de partições no final da unidade, portanto, substituir apenas a parte da cabeça da unidade pode não ser suficiente.
(Você não precisa usar dd, no entanto. head -c10000 /dev/zero > /dev/sdaOu cat /bin/ls > /dev/sdateria o mesmo efeito.)
faz fdisk /dev/sda g(para GPT) acabar com os zeros escritos por / dev / zero?
Também sim (desde que você salve as alterações).
(No entanto, o fraseado no título é apenas confuso, /dev/zeropor si só não faz nada mais do que qualquer armazenamento regular.)
Nota lateral: se a saída de /bin/lsfor suficientemente curta, a operação de gravação poderá substituir apenas alguns bytes do MBR, e a parte mais importante (setores inicial e final das partições) poderá permanecer intacta. Embora uma reinstalação do MBR (mais comumente grub --install /dev/sda) ainda seja necessária para tornar o sistema inicializável novamente.
peterh - Restabelece Monica 25/11
8
@ Peterh Observe que eles estão redirecionando o lsbinário real , não a saída da execução. O menor binário ELF possível "Hello World" parece ter 98 bytes (menos que um MBR), mas acho seguro assumir que qualquer binário com recursos reais deve ser maior que um MBR (a notoriamente pequena implementação do FreeBSD lsé 32784 bytes de comprimento, até grandes o suficiente para substituir a parte do início do disco de uma GPT). ;)
n.st 25/11
Ah, sim, você também pode usar a saída ls. Uma lista de /usr/binprovavelmente seria longa o suficiente. Eu usaria apenas echocomo exemplo, mas o IIRC precisa de quase 500 bytes para substituir uma tabela de partição MBR, por isso é um pouco cansativo digitar. (seja qual for o número exato) #
1155 ilkkachu
1
Você provavelmente deve usar bs e contar com dd para isso, caso contrário, isso ocorrerá por algum tempo, você só precisa zerar o setor. 512 bytes para discos herdados. (consulte @ n.st abaixo) De fato, a tabela de partições está no final disso e é pequena o suficiente para você fazer uma cópia e zerar com um editor hexadecimal antes de copiar novamente para preservar o conteúdo da inicialização. Existem ferramentas para isso também, é comum a inicialização do disco NAS fazer isso.
Mckenzm
1
Só queria acrescentar que, no caso de unidades GPT, você DEVE limpar o final do disco também. Uma implementação GPT compatível verificará a tabela secundária no final do disco e reescreverá a primeira parte (ignorando o que você já possui). Veja: news.ycombinator.com/item?id=18541493
wbkang
10
A tabela de partição é armazenada próximo ao início 1 do dispositivo de disco (lógico 2 ).
Sobrescrever essa área por qualquer coisa (zeros /dev/zeroou outros dados) substituirá a tabela de partições por coisas sem sentido, de modo que não será mais óbvio onde as partições no dispositivo começam.
Ainda é possível verificar o disco inteiro e tentar identificar os "bytes mágicos" que marcam o início dos sistemas de arquivos.
Por outro lado, se você usar fdisk(ou qualquer outra ferramenta de particionamento) para criar uma nova tabela de partição, a ferramenta substituirá os primeiros bytes do disco para armazenar essa nova tabela.
Há apenas um começo no disco; portanto, o que você fizer por último "ficará" lá.
Observe, no entanto, que alguns formatos de tabela de partição (como GPT) manterão cópias de backup em locais diferentes (por exemplo, no final do disco para GPT), dos quais algumas informações da partição podem ser recuperadas.
Quase à direita - a tabela de partição (antiga, do tipo MBR) reside nos bytes 1BE - 1FD do MBR. Os primeiros bytes contêm o IBL (carregador de inicialização inicial).
Rudic
@ RudiC Bom ponto, eu já disse isso com mais precisão agora.
/dev/zero
apagando algo, estádd
apagando copiando sobre ele. Os fatos de que os bytes são zero e de que os zero bytes são originários, em/dev/zero
vez de alguma outra fonte de zeros, são pequenos detalhes.Respostas:
Sim, a tabela de partições está na primeira parte da unidade, portanto, escrever sobre ela irá destruí-la. Isso
dd
escreverá sobre toda a unidade se você a deixar executar (por isso levará algum tempo).Algo como
dd bs=512 count=50 if=/dev/zero of=/dev/sda
seria suficiente para substituir os 50 primeiros setores, incluindo a tabela de partições MBR e a GPT principal. Embora, pelo menos de acordo com a Wikipedia, a GPT tenha uma cópia secundária da tabela de partições no final da unidade, portanto, substituir apenas a parte da cabeça da unidade pode não ser suficiente.(Você não precisa usar
dd
, no entanto.head -c10000 /dev/zero > /dev/sda
Oucat /bin/ls > /dev/sda
teria o mesmo efeito.)Também sim (desde que você salve as alterações).
(No entanto, o fraseado no título é apenas confuso,
/dev/zero
por si só não faz nada mais do que qualquer armazenamento regular.)fonte
/bin/ls
for suficientemente curta, a operação de gravação poderá substituir apenas alguns bytes do MBR, e a parte mais importante (setores inicial e final das partições) poderá permanecer intacta. Embora uma reinstalação do MBR (mais comumentegrub --install /dev/sda
) ainda seja necessária para tornar o sistema inicializável novamente.ls
binário real , não a saída da execução. O menor binário ELF possível "Hello World" parece ter 98 bytes (menos que um MBR), mas acho seguro assumir que qualquer binário com recursos reais deve ser maior que um MBR (a notoriamente pequena implementação do FreeBSDls
é 32784 bytes de comprimento, até grandes o suficiente para substituir a parte do início do disco de uma GPT). ;)ls
. Uma lista de/usr/bin
provavelmente seria longa o suficiente. Eu usaria apenasecho
como exemplo, mas o IIRC precisa de quase 500 bytes para substituir uma tabela de partição MBR, por isso é um pouco cansativo digitar. (seja qual for o número exato) #A tabela de partição é armazenada próximo ao início 1 do dispositivo de disco (lógico 2 ).
Sobrescrever essa área por qualquer coisa (zeros
/dev/zero
ou outros dados) substituirá a tabela de partições por coisas sem sentido, de modo que não será mais óbvio onde as partições no dispositivo começam.Ainda é possível verificar o disco inteiro e tentar identificar os "bytes mágicos" que marcam o início dos sistemas de arquivos.
Por outro lado, se você usar
fdisk
(ou qualquer outra ferramenta de particionamento) para criar uma nova tabela de partição, a ferramenta substituirá os primeiros bytes do disco para armazenar essa nova tabela.Há apenas um começo no disco; portanto, o que você fizer por último "ficará" lá.
Observe, no entanto, que alguns formatos de tabela de partição (como GPT) manterão cópias de backup em locais diferentes (por exemplo, no final do disco para GPT), dos quais algumas informações da partição podem ser recuperadas.
1: por exemplo, nos primeiros 512 bytes para um MBR ou nos primeiros e últimos 17408 bytes para uma GPT
2: A unidade pode remapear internamente os blocos lógicos em diferentes partes do meio físico, mas esse mapeamento é invisível para (e sem importância para) o sistema operacional.
fonte