クリーンな状態から開始するには、コマンドラインからハードディスクを空の状態にリセットする必要があります。
これはワイプユーティリティの実行に関するものではなく、データを上書きする必要はありません。
この質問は コマンドラインからすべてのパーティションを削除する とよく似ています
そこでの解決策はかなりうまくいきます、
dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
しかし、そのような上書きされたディスクで作業したい場合、デバイスがまだ使用中であるというエラーが表示されます。
root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy
または
root@grml ~ # partprobe
Error: Partition(s) 2, 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Error: Partition(s) 2, 3 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
だから私は手動でデバイスに「座っている」すべてのものを無効にする必要があります
umount /mnt/debootstrap
umount /mnt/debootstrap/tmp
umount /mnt/debootstrap/var/log
umount /mnt/debootstrap/var
umount /mnt/debootstrap/home
service mdadm stop
service lvm2 stop
vgremove vg_main
pvremove /dev/md1
mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --remove /dev/md0
mdadm --remove /dev/md1
その後、partprobe
コマンドが機能します。
より簡単に機能するコマンドはありますか?お気に入り
harddiskreset /dev/sda
それで、異なるパーティション/ lvm/mdレイアウトのシステムで簡単に使用できますか?
wipefs
プログラムを使用すると、パーティションテーブルの署名を簡単に削除できます。
wipefs -a /dev/sda
ただし、LVMなどのデバイスを使用するプロセスはすべて停止する必要があります。
man wipefs
wipefsは、指定されたデバイスからファイルシステム、raid、またはパーティションテーブルの署名(マジックストリング)を消去して、libblkidから署名を見えなくすることができます。
wipefsは、ファイルシステム自体やその他のデータをデバイスから消去しません。オプションなしで使用した場合、wipefsはすべての可視ファイルシステムとその基本的な署名のオフセットをリストします。
wipefsは、パーティションテーブルシグネチャを消去したときにBLKRRPART ioctlを呼び出して、変更についてカーネルに通知します。
私はいつもこれのために単にpartedを使用しました。特にfdiskとは異なり、現代の大容量HDDを処理できるため、ディスクラベルタイプの変更やパーティションの追加/削除に適しています。
あなたは走ることができます
$ Sudo parted /dev/sda
これにより、物事が開始され、partedターミナルに移動します。その後、helpコマンドを実行して、使用可能なすべてのコマンドを表示できます。その非常に自明です。
はい、フォーマットしたいディスクのすべてのパーティションをアンマウントする必要があります。すべてのパーティションをアンマウントするより迅速な方法を単に探していた場合、umountコマンドで正規表現を使用してそれを行うことができると思いますが、それはばかげているようです。
Partedを使用してHDDを管理することで、ディスクや同様のものを強制的に更新する必要がなくなりました。
ドライブをまったく新しく使用できるように完全に更新するには、通常、次のようにします。
1)Sudo parted /dev/sda
を実行して別れを始める
2)print
を実行して既存のパーティションを見つけます
3)rm 1
を実行して既存のパーティションを削除します。1を削除するパーティション番号に置き換えます。次に、ディスク上の残りのすべてのパーティションについて繰り返します。
4)mklabel gpt
を実行してdisklabelをリセットします。gptラベルタイプを使用しますが、標準のmsdosまたは任意の設定を使用できます。 これはdisklabelタイプのリストです
5)mkpart
を実行して新しいパーティションを作成します。これにより、パーティションの作成ウィザードが実行されます。始点と終点のデフォルトはセクターです。これを変更するには、unit
を実行する前にmkpart
コマンドを実行します。これにより、GBまたはTBまたはMBなどで指定できます。
6)print
を使用して結果を確認し、新しいパーティションテーブル情報を表示します
7)次に、パーティションをフォーマットする必要があります。これにはいくつかのオプションがありますが、partedを介して行うべきではありません。代わりに、quit
を実行してpartedターミナルを終了し、mkfs
を使用してパーティションをフォーマットすることをお勧めします。ディスク全体ではなくパーティションをフォーマットするため、/ dev/sdaではなく/ dev/sda1で「mkfs」を実行することを忘れないでください。
それだけです。
これがあなたの質問に答えてくれることを願っています。
また、参考のためにオンラインのpartedマニュアルを示します。 https://www.gnu.org/software/parted/manual/html_node/index.html
編集:
OPは、端末からではなくスクリプトからこの種のことを実行したいと考えていました。 partedターミナル内ではなく、単一行コマンドでpartedを実行することにより、スクリプトを介して同じ種類の手順を実行できます。
たとえば、コマンド
$ Sudo parted /dev/sda print
ドライブ情報とパーティションテーブルをbashコンソールに出力し、grepなどを使用して変数やbashスクリプトに必要なものを作成できます。