回答:
これで十分でしょうか?
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
このwipefs
プログラムを使用すると、パーティションテーブルの署名を簡単に削除できます。
wipefs -a /dev/sda
から man wipefs
ワイプファイルは、指定されたデバイスからファイルシステム、RAID、またはパーティションテーブルの署名(マジックストリング)を消去して、libblkidの署名を非表示にすることができます。
ワイプfsは、ファイルシステム自体もデバイスから他のデータも消去しません。オプションなしで使用すると、wipefsはすべての可視ファイルシステムとその基本シグネチャのオフセットをリストします。
パーティションテーブルの署名が消去され、カーネルに変更が通知されると、wipefsはBLKRRPART ioctlを呼び出します。
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はそれを見つけることができないので、それを読み取って解釈することはできません。(拡張パーティションテーブルを消去する場合は、オペレーティングシステムについて詳しく知る必要があります。オペレーティングシステムが異なると、パーティションの拡張方法も異なります。)
私は同じことをしたかったのですが(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....