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 <
[email protected]>
- LIBBLKID_DEBUG=all
- libblkid
デバッグ出力を有効にする。
blkid(8),
findfs(8)
この wipfs
コマンドは、util-linux
パッケージの一部であり、次の
URL
から入手できる。
https://www.kernel.org/pub/linux/utils/util-linux/