コマンドラインからすべてのパーティションを削除する


40

Linux(特にUbuntu)のコマンドラインからデバイス上のすべてのパーティションを削除するにはどうすればよいですか?fdiskを見てみましたが、対話型のプロンプトが表示されます。デバイスパス(/ dev / sdaなど)を指定できる単一のコマンドを探していますが、ext4、linux-swap、およびその他のパーティションを削除します。基本的に、これはGPartedを開き、すべてのパーティションを手動で選択して削除する場合と同じです。これはかなり簡単に思えますが、残念ながら、Googleで何も見つけることができませんでした。

回答:


44

これで十分でしょうか?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc

4
これはパーティションを削除しません。パーティションを削除することにより、MBRを保持し、パーティションテーブルを空にするだけでした。
ミルチャVutcovici

2
いいえ、これはまさに私が必要とすることを行うようです。データがまだあるかどうかはあまり気にしません。GPartedは、これを実行した後にパーティションがなくなったことを示しています。
セリン

Mircea Vutcoviciはデータについてではなく、MBRのブートストラップコードについて話していました。これは、MBRスタイルのパーティションテーブルから4つのプライマリエントリと共に消去されたため、なくなっています。
JdeBP

1
ドライバーをアンマウントすることを忘れないでください、そうしないと動作しません。
OrangeTux

これは、ドライブでZFSを使用し、それを別の目的に再利用している場合にも役立ちます。標準のWindowsとLinuxのどちらのパーティション分割とフォーマットでも、ZFSラベルは削除されないため、大きな問題が発生する可能性があります。
トニー・マロ

32

このwipefsプログラムを使用すると、パーティションテーブルの署名を簡単に削除できます。

wipefs -a /dev/sda

から man wipefs

ワイプファイルは、指定されたデバイスからファイルシステム、RAID、またはパーティションテーブルの署名(マジックストリング)を消去して、libblkidの署名を非表示にすることができます。

ワイプfsは、ファイルシステム自体もデバイスから他のデータも消去しません。オプションなしで使用すると、wipefsはすべての可視ファイルシステムとその基本シグネチャのオフセットをリストします。

パーティションテーブルの署名が消去され、カーネルに変更が通知されると、wipefsはBLKRRPART ioctlを呼び出します。


12

迅速で汚れた:gpartedパーティションを削除するために使用するか、急いでいる場合:

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

これにより、ドライブのMBRがザッピングされます(データはそのままです)。

代わりに:

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

ドライブ全体を消去する(すべてにゼロの単一パスを書き込みます。「安全」ではありませんが、通常は十分です)、または「ディスクシュレッダー」ツールを使用して安全に消去します。


7

man sfdiskfdiskの非対話型バリアントであるを参照してください。それ以外は、pkが書いたように、ddでパーティションテーブル全体を削除できます。


6

パーティションをループするためのスクリプティングが必要になる場合もあります、この場合にもpartedを使用できるはずです。


3

MBRスタイルのパーティションについて話している場合...

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

説明:

dd

この標準コマンドは、ソースからバイトをコピーし、宛先に書き込みます。これは、この仕事のための最も簡単で柔軟なツールです。

if=/dev/zero

ここ/dev/zeroでは、から読み取ることを指定します。これは、NULバイトを出力する特別なデバイスであり、ゼロです。

of=/dev/[disk device]

ここでは、書き込み先のデバイスを指定します。

bs=1

ddブロックの観点で考えます。デフォルトのブロックサイズは、システムに応じて、512バイト、1024バイト、または4096バイトです。ただし、それよりも正確に対処する必要があるためdd、1バイトのブロックサイズを使用するように指示します。

カウント= 64

ここでは、プライマリパーティションテーブルが合計16バイトの4つの16バイトパーティションエントリで構成されているddため、64ブロック(またはbs=1パラメーターのためにバイト)を書き込むように指示します。

seek = 446

MBR内のプライマリパーティションテーブル(ここではGPTについては説明しません)は446バイトにあるため、dd書き込み前に446バイトをシークするように指示します。

通常、拡張パーティションはプライマリパーティションスロットを使用して拡張パーティションテーブルを指すように作成されるため、4つのプライマリパーティションを消去すると、拡張パーティションテーブルも効果的に消去されます。OSはそれを見つけることができないので、それを読み取って解釈することはできません。(拡張パーティションテーブルを消去する場合は、オペレーティングシステムについて詳しく知る必要があります。オペレーティングシステムが異なると、パーティションの拡張方法も異なります。)


2

私は同じことをしたかったのですが(Slackware 14.2を除く)、ここで提案されたソリューションのほとんどに影響を与えることができず、最も精巧で十分に文書化されたソリューションが交換パーティションを作成するための新しい問題を作成しました。パーティションは削除されましたが、一部のパーティションソフトウェアはパーティションのバックアップを自動的に検出したようです。

f3probe(http://oss.digirati.com.br/f3)がすべてのパーティションをすばやく簡単に削除し、大容量ドライブで動作する問題を解決し、ドライブ全体にまたがる正確に1つのパーティションを作成したことがわかりました。削除します。

また、そこから簡単に新しいパーティションを作成することも簡単でした。

すなわち

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....

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.