Itu tidak /dev/zeromemusnahkan sesuatu, itu ddmemusnahkannya dengan menyalinnya. Fakta-fakta bahwa byte kebetulan nol, dan bahwa byte nol kebetulan berasal dari /dev/zerobukan beberapa sumber nol lainnya, adalah detail kecil.
chrylis -pada mogok-
2
Jika Anda hanya ingin menghapus tabel partisi, wipef bisa lebih andal.
pipa
Jawaban:
23
Akan dd if=/dev/zero of=/dev/sdamenghapus tabel partisi yang sudah ada sebelumnya?
Ya, tabel partisi ada di bagian pertama drive, jadi menulisnya akan menghancurkannya. Itu ddakan menulis di seluruh drive jika Anda membiarkannya berjalan (sehingga akan memakan waktu cukup lama).
Sesuatu seperti dd bs=512 count=50 if=/dev/zero of=/dev/sdaakan cukup untuk menimpa 50 sektor pertama, termasuk tabel partisi MBR dan GPT primer. Meskipun setidaknya menurut Wikipedia, GPT memiliki salinan sekunder tabel partisi di akhir drive, jadi menimpa hanya bagian di kepala drive mungkin tidak cukup.
(Namun, Anda tidak harus menggunakan dd. head -c10000 /dev/zero > /dev/sdaAtau cat /bin/ls > /dev/sdaakan memiliki efek yang sama.)
apakah fdisk /dev/sda g(untuk GPT) menghapus angka nol yang ditulis oleh / dev / zero?
Juga ya (asalkan Anda menyimpan perubahan).
(Namun, ungkapan dalam judul hanya membingungkan, /dev/zerodengan sendirinya tidak melakukan apa-apa lebih dari penyimpanan biasa.)
Catatan: jika output dari /bin/lscukup pendek, maka operasi penulisan mungkin menimpa hanya beberapa byte MBR, dan bagian yang paling penting (sektor awal dan akhir partisi) dapat tetap utuh. Meskipun MBR instal ulang (paling umum, grub --install /dev/sda) masih diperlukan untuk membuat sistem bootable lagi.
peterh
8
@ Peterh Perhatikan bahwa mereka mengarahkan lsbiner yang sebenarnya , bukan output dari menjalankannya. Biner ELF "Hello World" terkecil yang mungkin tampaknya adalah 98 byte (jadi kurang dari MBR), tapi saya pikir aman untuk mengasumsikan bahwa setiap biner dengan fitur aktual harus lebih besar dari MBR (implementasi FreeBSD yang terkenal kecil lsadalah 32784) byte panjang, bahkan cukup besar untuk menimpa bagian awal disk GPT). ;)
n.st
Oh ya, Anda bisa menggunakan output lsjuga. Daftar /usr/binmungkin akan cukup lama. Saya akan menggunakan hanya echosebagai contoh, tetapi IIRC Anda membutuhkan hampir 500 byte untuk menimpa tabel partisi MBR, jadi agak lelah untuk mengetik. (berapapun jumlah pastinya)
ilkkachu
1
Anda mungkin harus menggunakan bs dan hitung dengan dd untuk ini, jika tidak maka akan berlangsung beberapa waktu, Anda hanya perlu nol sektor. 512 byte untuk disk lama. (lihat @ n.st di bawah) Sebenarnya tabel partisi ada di akhir ini dan cukup kecil untuk Anda buat salinan dan nol dengan hex editor sebelum menyalin kembali untuk menjaga konten boot. Ada alat untuk ini juga, itu biasa untuk inisialisasi disk NAS untuk melakukan ini.
mckenzm
1
Hanya ingin menambahkan bahwa dalam kasus drive GPT, Anda HARUS menghapus ujung disk juga. Implementasi GPT yang sesuai akan memeriksa tabel sekunder di akhir disk dan menulis ulang bagian pertama juga (mengabaikan apa pun yang sudah Anda miliki di sana). Lihat: news.ycombinator.com/item?id=18541493
wbkang
10
Tabel partisi disimpan di dekat awal 1 perangkat disk (logis 2 ).
Menimpa area itu dengan apa saja (nol dari /dev/zeroatau data lainnya) akan mengganti tabel partisi dengan omong kosong, sehingga tidak lagi jelas di mana partisi pada perangkat dimulai.
Anda masih dapat memindai seluruh disk dan mencoba mengidentifikasi "byte ajaib" yang menandai awal sistem file.
Sebaliknya, jika Anda menggunakan fdisk(atau alat pemartisi lainnya) untuk membuat tabel partisi baru, alat akan menimpa beberapa byte pertama dari disk untuk menyimpan tabel baru itu.
Hanya ada satu awal ke disk, jadi apa pun yang Anda lakukan terakhir akan "menempel" di sana.
Namun, perlu diketahui bahwa beberapa format tabel partisi (seperti GPT) akan menyimpan salinan cadangan di tempat yang berbeda (misalnya di akhir disk untuk GPT), yang darinya beberapa informasi partisi dapat dipulihkan.
/dev/zero
memusnahkan sesuatu, itudd
memusnahkannya dengan menyalinnya. Fakta-fakta bahwa byte kebetulan nol, dan bahwa byte nol kebetulan berasal dari/dev/zero
bukan beberapa sumber nol lainnya, adalah detail kecil.Jawaban:
Ya, tabel partisi ada di bagian pertama drive, jadi menulisnya akan menghancurkannya. Itu
dd
akan menulis di seluruh drive jika Anda membiarkannya berjalan (sehingga akan memakan waktu cukup lama).Sesuatu seperti
dd bs=512 count=50 if=/dev/zero of=/dev/sda
akan cukup untuk menimpa 50 sektor pertama, termasuk tabel partisi MBR dan GPT primer. Meskipun setidaknya menurut Wikipedia, GPT memiliki salinan sekunder tabel partisi di akhir drive, jadi menimpa hanya bagian di kepala drive mungkin tidak cukup.(Namun, Anda tidak harus menggunakan
dd
.head -c10000 /dev/zero > /dev/sda
Ataucat /bin/ls > /dev/sda
akan memiliki efek yang sama.)Juga ya (asalkan Anda menyimpan perubahan).
(Namun, ungkapan dalam judul hanya membingungkan,
/dev/zero
dengan sendirinya tidak melakukan apa-apa lebih dari penyimpanan biasa.)sumber
/bin/ls
cukup pendek, maka operasi penulisan mungkin menimpa hanya beberapa byte MBR, dan bagian yang paling penting (sektor awal dan akhir partisi) dapat tetap utuh. Meskipun MBR instal ulang (paling umum,grub --install /dev/sda
) masih diperlukan untuk membuat sistem bootable lagi.ls
biner yang sebenarnya , bukan output dari menjalankannya. Biner ELF "Hello World" terkecil yang mungkin tampaknya adalah 98 byte (jadi kurang dari MBR), tapi saya pikir aman untuk mengasumsikan bahwa setiap biner dengan fitur aktual harus lebih besar dari MBR (implementasi FreeBSD yang terkenal kecills
adalah 32784) byte panjang, bahkan cukup besar untuk menimpa bagian awal disk GPT). ;)ls
juga. Daftar/usr/bin
mungkin akan cukup lama. Saya akan menggunakan hanyaecho
sebagai contoh, tetapi IIRC Anda membutuhkan hampir 500 byte untuk menimpa tabel partisi MBR, jadi agak lelah untuk mengetik. (berapapun jumlah pastinya)Tabel partisi disimpan di dekat awal 1 perangkat disk (logis 2 ).
Menimpa area itu dengan apa saja (nol dari
/dev/zero
atau data lainnya) akan mengganti tabel partisi dengan omong kosong, sehingga tidak lagi jelas di mana partisi pada perangkat dimulai.Anda masih dapat memindai seluruh disk dan mencoba mengidentifikasi "byte ajaib" yang menandai awal sistem file.
Sebaliknya, jika Anda menggunakan
fdisk
(atau alat pemartisi lainnya) untuk membuat tabel partisi baru, alat akan menimpa beberapa byte pertama dari disk untuk menyimpan tabel baru itu.Hanya ada satu awal ke disk, jadi apa pun yang Anda lakukan terakhir akan "menempel" di sana.
Namun, perlu diketahui bahwa beberapa format tabel partisi (seperti GPT) akan menyimpan salinan cadangan di tempat yang berbeda (misalnya di akhir disk untuk GPT), yang darinya beberapa informasi partisi dapat dipulihkan.
1: mis. Dalam 512 byte pertama untuk MBR atau yang pertama dan terakhir 17408 byte untuk GPT
2: Drive dapat secara internal memetakan kembali blok logis ke berbagai bagian dari media fisik, tetapi pemetaan itu tidak terlihat (dan tidak penting untuk) sistem operasi.
sumber