Menghapus Semua Partisi Dari Baris Perintah

40

Bagaimana Anda menghapus semua partisi pada perangkat dari baris perintah di Linux (khususnya Ubuntu)? Saya mencoba melihat fdisk, tetapi ia menyajikan prompt interaktif. Saya mencari satu perintah, yang dapat saya berikan jalur perangkat (mis. / Dev / sda) dan itu akan menghapus ext4, linux-swap, dan partisi apa pun yang ditemukannya. Pada dasarnya, ini akan sama dengan jika saya membuka GParted, dan secara manual memilih dan menghapus semua partisi. Ini tampaknya cukup sederhana, tetapi sayangnya, saya belum dapat menemukan apa pun melalui Google.

Cerin
sumber

Jawaban:

44

Apakah ini cukup?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pk.
sumber
4
Ini tidak akan menghapus partisi. Dengan menghapus partisi yang dimaksudkannya untuk mempertahankan MBR dan hanya mengosongkan tabel partisi.
Mircea Vutcovici
2
Tidak, ini tampaknya melakukan apa yang saya butuhkan. Saya tidak terlalu peduli jika datanya masih ada. GParted menunjukkan bahwa partisi hilang setelah menjalankan ini, dan itulah yang saya inginkan.
Cerin
Mircea Vutcovici tidak berbicara tentang data Anda, tetapi tentang kode bootstrap di MBR Anda. Itu sekarang hilang, karena Anda telah menghapusnya bersama dengan 4 entri utama dari tabel partisi gaya MBR.
JdeBP
1
Jangan lupa untuk meng-unmount driver, jika tidak maka tidak akan berhasil.
OrangeTux
Ini juga berfungsi dengan baik jika Anda telah menggunakan ZFS pada drive dan melakukan repurposing untuk sesuatu yang lain. Baik partisi dan format Windows atau Linux standar tidak akan menyingkirkan label ZFS yang dapat menyebabkan masalah besar bagi Anda.
Tony Maro
33

The wipefsProgram memungkinkan Anda dengan mudah menghapus tanda tangan partisi-meja:

wipefs -a /dev/sda

Dari man wipefs

wipefs dapat menghapus tanda tangan filesystem, raid atau partisi-table (string ajaib) dari perangkat yang ditentukan untuk membuat tanda tangan tidak terlihat oleh libblkid.

wipef tidak menghapus sistem file itu sendiri atau data lain dari perangkat. Ketika digunakan tanpa opsi apa pun, wipefs mencantumkan semua sistem file yang terlihat dan offset tanda tangan dasarnya.

wipefs memanggil ioctl BLKRRPART ketika telah menghapus tanda tangan tabel partisi untuk menginformasikan kernel tentang perubahan.

pengguna144437
sumber
12

Cepat dan Kotor: gunakan gparteduntuk menghapus partisi, atau jika Anda sedang terburu-buru:

dd if=/dev/zero of=/dev/[disk device] bs=512 count=1

Ini akan zap MBR drive (Data masih utuh).

Kalau tidak:

dd if=/dev/zero of=/dev/[disk device]

untuk menghapus seluruh drive (tulis satu angka nol di atas segalanya. Tidak "aman" tetapi biasanya cukup baik), atau menggunakan alat "penghancur disk" untuk penghapus yang aman.

voretaq7
sumber
7

Lihat man sfdisk, yang merupakan varian fdisk non-interaktif. Selain itu, Anda dapat menghapus seluruh tabel partisi dengan dd, seperti pk tulis.

Sven
sumber
6

Anda harus dapat menggunakan parted untuk ini juga, meskipun itu mungkin melibatkan beberapa skrip untuk mengulang melalui partisi.

Dekado
sumber
3

Jika kita berbicara tentang partisi bergaya MBR ...

dd if=/dev/zero of=/dev/[disk device] bs=1 count=64 seek=446 conv=notrunc

Penjelasan:

dd

Perintah standar ini menyalin byte dari sumber dan menulisnya ke tujuan. Ini alat fleksibel paling sederhana untuk pekerjaan ini.

if=/dev/zero

Di sini, kami menetapkan bahwa kami membaca dari /dev/zero, yang merupakan perangkat khusus yang memancarkan NULbyte - nol.

of=/dev/[disk device]

Di sini, kami menentukan ke perangkat mana kami menulis.

bs=1

ddberpikir dalam hal blok . Ukuran blok default mungkin 512 byte, 1024 byte atau 4096 byte, tergantung pada sistem Anda. Namun, kita perlu mengatasi hal-hal lebih tepat dari itu, jadi kami meminta dduntuk menggunakan ukuran blok 1 byte.

hitung = 64

Di sini, kami meminta dduntuk menulis 64 blok (atau byte, karena bs=1parameter kami ), karena tabel partisi primer terdiri dari 4 entri partisi 16-byte, dengan total 64 byte.

seek = 446

Tabel partisi utama dalam MBR (jadi, tidak berbicara tentang GPT di sini) terletak 446 byte, jadi kami menginstruksikan dduntuk mencari 446 byte sebelum menulis.

Partisi extended umumnya dibuat dengan menggunakan slot partisi primer untuk menunjuk pada tabel partisi extended, jadi jika kita menghapus 4 partisi primer, kita juga secara efektif menghapus tabel partisi extended; OS tidak akan dapat menemukannya, sehingga tidak akan dapat membaca dan menafsirkannya. (Jika Anda ingin menghapus tabel partisi extended, Anda perlu tahu lebih banyak tentang sistem operasi; sistem operasi yang berbeda melakukan perluasan partisi dengan cara yang berbeda.)

Michael Mol
sumber
2

Saya ingin melakukan hal yang sama (kecuali di Slackware 14.2) tetapi ternyata saya tidak dapat mempengaruhi sebagian besar solusi yang diusulkan di sini, dengan solusi yang paling rumit dan terdokumentasi dengan baik menciptakan masalah baru untuk membuat partisi pengganti. Itu menghapus partisi tetapi beberapa perangkat lunak partisi tampaknya menemukan cadangan partisi secara otomatis.

Saya menemukan f3probe ( http://oss.digirati.com.br/f3 ) memecahkan masalah menghapus semua partisi, dengan cepat dan mudah, bekerja dengan drive berkapasitas besar, dan membuat tepat 1 partisi yang mencakup seluruh drive, yang mudah untuk menghapus.

Itu juga mudah, dari sana untuk membuat partisi baru, dengan cara yang lurus ke depan.

yaitu

f3probe --destructive --time-ops /dev/sdb
# Now we know only 1 partition exists on /dev/sdb
#    which is /dev/sdb1
#
# Unmount that partition
umount /dev/sdb1

#
# Delete that single partition
parted /dev/sdb rm 1

#
# Now you can create new partitions
# i.e. parted /dev/sdb mkpart primary fat32 1049K 15.8G
# 
# Update /etc/fstab before rebooting....
John
sumber
0

Gunakan versi fdisk non-interaktif yang ditingkatkan, yaitu sfdisk

Untuk menghapus tabel partisi gunakan perintah ini:

sfdisk --delete /dev/sda
Suncatcher
sumber