WIPEFS(8)

名前
wipefs - デバイスからシグナチャーを消去する

書式
wipefs [options] device...

wipefs [--backup] -o offset device...

wipefs [--backup] -a device...

説明
wipefs を使えば、指定された device からファイルシステム、raid、 パーティションテーブルなどのシグナチャー (signatures, マジックストリング) を消去して、シグナチャーを libblkid から見えなくすることができる。 wipefs は、デバイスからファイルシステムそのものを消去するわけではない。 また、シグナチャー以外のいかなるデータも消去しない。

wipefs は、オプションなしで使用すると (訳注: たとえば、wipefs /dev/sda* と実行すると)、 見ることが可能なすべてのファイルシステムと、その基本的なシグナチャーのオフセットを一覧表示する。 デフォルトで何を出力するかは、バージョンによって違うことがよくあるので、スクリプトで使うときは、 デフォルトの出力の使用は、なるべく避けた方がよい。 いつでも一定の出力が必要な場合には、--output column-list を使用して、表示させたい項目が何と何かを、必ず明確に指定するべきである。

wipefs は、パーティションテーブルのシグナチャーの消去が済むと、BLKRRPART ioctl を呼んで、変更についてカーネルに知らせる。ioctl を呼ぶのは、最後のステップなので、 そのときには、指定されたすべてのデバイスの、指定されたすべてのシグナチャーは、 すでに消去されているわけである。

ファイルシステムやパーティションテーブルによっては、 複数のマジックストリングをデバイスに保存するものがある (たとえば、FAT, ZFS, GPT など)。wipefs コマンドは (v2.31 以来) マジックストリングを検出したすべてのオフセット位置を列挙する。

オプション -a を使用すると、libblkid から見えるすべてのマジックストリングが消去される。その際、wipefs は、変更 (消去) を行うごとに、デバイスを再度スキャンして、マジックストリングがひとつも見つからなくなるまで、 それを繰り返す。

気を付けていただきたいが、wipefs は、デフォルトでは、 ディスク全体ではないデバイスにある、ネストしたパーティションテーブルを消去しない。 そうするためには、--force オプションが必要である。

オプション

-a, --all
    処理可能なシグナチャーをすべて消去する。消去するシグナチャーを何と何にするかは、-t オプションによって絞り込むことができる。

    [訳注]
        オプションの名前が --all のせいで紛らわしいが、-t オプションを使って、シグナチャーのタイプを限定している場合でも、消去操作には -a (--all) が必要である。-t だけだと、動作が消去ではなく、表示になる。

-b, --backup
    ファイル $HOME/wipefs-<devname>-<offset>.bak にシグナチャーのバックアップを作成する。詳しくは、「用例」をご覧いただきたい。

-f, --force
    ファイルシステムがマウントされている場合でも、消去を強行する。 このオプションは、ブロックデバイス上のパーティションテーブル・シグナチャーを消去するために必要である。

    [訳注]
        2 番目の文は、訳者には意味不明である。 確かに、ファイルシステムがマウントされている場合に、 ファイルシステムのシグナチャーを消すには、-f が必要だろう。 また、おそらく、ネストしたパーティションテーブルのシグナチャーを消去するためにも、 -f が必要なのだろう。しかし、そういうことでないならば、ルート権限さえ持っていれば、 ブロックデバイス上のパーティションテーブルのシグナチャーを消すのに、 普通 -f は要らないはずである。 それとも、あるデバイスのパーティションに自分が目下実行しているシステムが含まれているとき、 そのディスクのパーティションテーブルのシグナチャーを消去するということだろうか。 それは、やらない方がよい乱暴なことだと思うのだが。

-h, --help
    ヘルプテキストを表示して終了する。

-J, --json
    出力に JSON フォーマットを使用する。

-i, --noheadings
    ヘッダ行を表示しない。

-O, --output list
    出力にどの項目 (column) を表示するかを指定する。 サポートされている全項目のリストを得るには、--help を使用すればよい。

-n, --no-act
    write() 呼び出し以外のすべてを行うようにする。

-o, --offset offset
    デバイスから消去すべきシグナチャーの位置を (バイト単位で) 指定する。offset には接頭辞　"0x" を付けてもよく、その場合は、数値が 16 進数と見なされることになる。複数の -o オプションを指定することもできる。 (訳注: -t と違って、こちらは -a オプションと一緒に使う必要はない。 と言うより、両方指定すると、エラーになる。)

    引き数 offset には、KiB (=1024), MiB (=1024*1024) のような乗数を表す接尾辞を付けることができる。GiB, TiB, PiB, EiB, ZiB, YiB も同様に使える。("iB" を続けるのは任意であり、たとえば、"K" は "KiB" と同じ意味である)。あるいは、KB (=1000), MB (=1000*1000) といった接尾辞を付けてもよい。GB, TB, PB, EB, ZB, YB も同様に使える。

-p, --parsable
    人間に見やすい (printable) フォーマットではなく、プログラムが解析しやすい (parsable) フォーマットで出力する。文字列中の問題を起こしかねないすべての文字は、 対応する '\x' を頭に点けた 16 進数にエンコードされる。

-q, --quiet
    シグナチャーの消去に成功した場合は、いかなるメッセージも表示しない。

-t, --types list
    表示、または消去するシグナチャーを絞り込む。 複数のタイプを指定するには、コンマで区切ったリストにすればよい。 リスト、または個々のタイプの前に、'no' という接頭辞を付けることができ、 その場合は、作業の対象にすべきではないタイプを指定することになる。 もっと詳しく知りたければ、mount(8) のマニュアルをご覧になるとよい。

    [訳注]
        list に使えるのは、基本的には mount(8) の -t に指定するファイルシステムのタイプと同じものだが、gpt や swap を指定することもできる。すなわち、wipefs /dev/sda* の出力の TYPE の項目に表示されるものが使えるわけである。

-V, --version
    バージョン情報を表示して終了する。

用例

wipefs /dev/sda*
    sda と sda 上のすべてのパーティションの情報を表示する。

wipefs --all --backup /dev/sdb
    デバイス /dev/sdb からすべてのシグナチャーを消去し、 シグナチャーそれぞれに対して、~/wipefs-sdb-<offset>.bak というバックアップファイルを作成する。

dd if=~/wipefs-sdb-0x00000438.bak of=/dev/sdb seek=$((0x00000438)) bs=1 conv=notrunc
    バックアップファイル ~/wipefs-sdb-0x00000438.bak から ext2 のシグナチャーを復元する。

[訳注]
    3 番目の例は、ちょっと変わったことをしていると言えるかもしれない。 ここでは、/dev/sdb にファイルシステムのシグナチャーを復元している。 とすると、/dev/sdb1 のようなパーティションにではなく、/dev/sdb というディスクに直接 ext2 のファイルシステムを作成していたことになりそうだ。/dev/sdb が、たとえば USB メモリなら、そういうこともあるだろうけれど。

作者
Karel Zak <kzak@redhat.com>

環境変数

LIBBLKID_DEBUG=all
    libblkid デバッグ出力を有効にする。

関連項目
blkid(8), findfs(8)

入手方法
この wipfs コマンドは、util-linux パッケージの一部であり、次の URL から入手できる。https://www.kernel.org/pub/linux/utils/util-linux/