debugfs - ext2/ext3
ファイルシステムデバッガ
debugfs [
-Vwci ] [
-b blocksize ] [
-s superblock ]
[
-f cmd_file ] [
-R request ] [
-d data_source_device ]
[ device ]
debugfs
は対話的なファイルシステムのデバッガである。
ext2
ファイルシステムの状態の調査・変更に利用できる。
device は、ext2
ファイルシステムを含むデバイスに対応する
スペシャルファイルである。(例:
/dev/hdXX)
- -w
- ファイルシステムを
read/write
モードでオープンする。
このオプションを指定しない場合は、
ファイルシステムは
read-only
モードでオープンされる。
- -c
- ファイルシステムを
catastrophic
(甚大な破損が起こった場合の)
モードでオープンする。
このモードでは inode
とグループビットを最初に読み込まない。
これは重度に破損したファイルシステムに対しては有効なことがあるが、
一方このため catastrophic
モードではファイルシステムを
read-only
でしかオープンできない。
- -i
-
device が e2image
プログラムによって作成された
ext2
イメージファイルであることを指定する。
ext2
イメージファイルは、スーパーブロック・
ブロックグループディスクリプタ・ブロックアロケーションビットマップ・
inode
アローケションビットマップ・inode
テーブルしか持たないので、
debugfs
の多くのコマンドが正しく機能しない。
警告:
安全性のチェックは行わない。
また、 -d
オプションによって
data_source_device
を指定せずに、 ls,
dump
などのコマンドを実行した場合には
debugfs
は変な風に失敗するかもしれない。
debugfs
はデバッグ用のツールなので、洗練された部分のみであるとは限らない!
- -d data_source_device
-
-i
オプションと共に使用され、
読み込みブロックが
ext2
イメージファイルに見つからない場合には、
指定された data_source_device
が使用される。
このデバイスにはデータ・ディレクトリ・間接
(indirect)
ブロックが含まれる。
- -b blocksize
- 通常のように正しいブロックサイズを検出する動作を行わず、
指定したブロックサイズをそのファイルシステムに用いる。
- -s superblock
- ファイルシステムのスーパーブロックを、デフォルトの
1 ではなく、
指定したブロック番号から読ませる。
-s
オプションを指定した場合、
-b
オプションも指定しなければならない。
- -f cmd_file
-
debugfs に、 cmd_file
からコマンドを読み込ませ、実行させる。
コマンドの実行を終了すると、
debugfs は終了する。
- -R request
-
request
というひとつのコマンドを実行し、終了する。
- -V
-
debugfs
のバージョンを表示して終了する。
debugfs
のコマンドの多くは、
debugfs
が現在オープンしているファイルシステムにおける
inode (パス名ではない)
を示す
filespec
という引数を取る。
filespec には 2
種類の表記法がある。ひとつは、inode
番号を <>
で囲む方法である (例:
<2>)。
もうひとつはパス名で指定する方法である。
パス名が「/
(スラッシュ)」ではじまる場合、
debugfs
が現在オープンしているファイルシステムのルートからの相対パスを表す。
「/」で始まらない場合、カレントワーキングディレクトリからの相対パスを表す。
カレントワーキングディレクトリは
debugfs の
cd
コマンドによって変更できる。
debugfs
がサポートするコマンドの一覧を以下に示す。
- bmap filespec logical_block
-
filespec で指定した
inode
における論理ブロック番号
logical_block
に対応する物理ブロック番号を表示する。
- cat filespec
-
filespec で指定した
inode
の内容を標準出力へダンプする。
- cd filespec
- カレントワーキングディレクトリを
filespec
で指定したディレクトリに変更する。
- chroot filespec
- ルートディレクトリを
filespec
で指定したディレクトリに変更する。
- close
- 現在オープンしているファイルシステムをクローズする。
- clri file
-
file で指定した inode
の内容をクリアする。
- dump [-p] filspec out_file
-
filespec で指定した
inode の内容を out_file
で指定したファイルにダンプする。
-p
オプションを与えると、
out_file の所有者
(owner)、所有グループ
(group)、パーミッション
(permission) を filespec
と同じにする。
- expand_dir filespec
-
filespec
で指定したディレクトリを展開する。
- feature [fs_feature] [-fs_feature] ...
- スーパーブロックの様々なファイルシステム属性をセット/クリアする。
要求のあった属性をセット/クリアした後は、
ファイルシステム属性の現在状態の一覧を表示する。
- find_free_block [count [goal]]
-
goal
から始まる最初の
count
分の空きブロックを探し、その空きブロックをアロケート
(allocate) する。
- find_free_inode [dir [mode]]
- 空き inode
を探し、その inode
をアロケートする。
dir を指定すると、
これはその inode
を置くべきディレクトリの
inode と解釈される。
さらに mode
を指定すると、
これは新しい inode
のパーミッションと解釈される。
(mode
にディレクトリであることを指定するビットが立っている場合、
アロケートルーチンの挙動は異なるものになる。)
- freeb block [count]
- ブロック番号
block
をアロケートされていないものとしてマークする。
省略可能な引数 count
を指定すると、ブロック番号
block から始まる count
分のブロックをアロケートされていないものとしてマークする。
- freei filespec
-
filespec で指定した
inode を解放する。
- help
-
で利用できるコマンドのリストを表示する。
- icheck block ...
- コマンドラインに与えたブロック
(複数指定可)
を利用している inode
のリストを表示する。
- imap filespec
-
filespec
で指定された inode の (inode
テーブルにおける) inode
データ構造の場所を表示する。
- init_filesys device blocksize
-
device
上に、デバイスサイズ
blocksize の ext2
ファイルシステムを作成する。
このコマンドは、すべてのデータ構造を完全に初期化するわけではない。
これをしたい場合は
mke2fs(8)
プログラムを用いること。
このコマンドは、単にスーパーブロックとブロックディスクリプタを設定する
低レベルライブラリを呼び出すだけである。
- kill_file filespec
-
filespec で指定した
inode と、 その inode
が使用しているブロックをアロケートから外す
(deallocate)。 なお、その inode
に対応するディレクトリエントリは削除しないことに注意。
ファイルを unlink
したい場合は rm
コマンドを参照のこと。
- lcd directory
-
debugfs
プロセスのカレントワーキングディレクトリを
ネイティブファイルシステム
(訳註:
作業対象のものではなく、
debugfs
が呼び出され、稼働しているファイルシステム)
上の directory
に変更する。
- ln filespec dest_file
-
filespec
を指すリンク dest_file
を作成する。 この際
inode の参照数 (reference counts)
は変更しないことに注意。
- logdump [-acs] [-b<block>] [-i<filespec>]
[-f<journal_file>] [output_file]
- ext3
ジャーナルの内容をダンプする。
デフォルトではジャーナル
inode
はスーパーブロックで指定される。
しかし -i
オプションで上書きすることも可能である。
-i
オプションは使用されるジャーナルを指定する
inode 指定子を使う。
ジャーナルデータが書かれたファイルは、
-f
オプションを使って指定することができる。
そして -s
オプションはスーパーブロックにあるバックアップ情報を使って、
ジャーナルをアロケートする。
-
-a
オプションを指定すると、
logdump
プログラムは全てのディスクリプタブロックの内容を表示する。
-b
オプションを指定すると、
logdump
プログラムは指定されたブロックを参照する全てのジャーナルレコードを表示する。
-c
オプションを指定すると、
-a と -b
オプションで選択された全てのデータブロックの内容を表示する。
- ls [-l] [-d] filespec
-
filespec
で指定したディレクトリ内にあるファイルをリスト表示する。
-l
フラグを指定すると、より詳細な書式でファイルをリスト表示する。
-d
フラグを指定すると、
このディレクトリにある削除エントリ
(deleted entry)
をリスト表示する。
- modify_inode filespec
-
filespec で指定した
inode にある inode
構造体の内容を変更する。
- mkdir filespec
- ディレクトリを作成する。
- mknod filespec [p|[[c|b] major minor]]
- スペシャルデバイスファイル
(名前付きパイプ、キャラクタデバイス、ブロックデバイス)
を作成する。
キャラクタデバイスおよびブロックデバイスを作成する場合は、
デバイス番号として
major および minor
を指定しなければならない。
- ncheck inode_num ...
- 指定した inode
番号それぞれに対応するパス名のリストを表示する。
- open [-w] [-e] [-f] [-i] [-c] [-b blocksize] [-s
superblock] device
- 編集の対象とするファイルシステムをオープンする。
-f
フラグをつけると、通常ではオープンできないような、
不明なファイルシステムや非互換なファイルシステムでも
強制的にオープンする。
-e
フラグをつけるとファイルシステムを排他モードでオープンする。
-b, -c, -i, -s, -w
オプションを指定した場合の動作は、
debugfs
にコマンドラインオプションを指定した場合と同じである。
- pwd
- カレントワーキングディレクトリを表示する。
- quit
-
debugfs
を終了する。
- rdump directory destination
-
directory と
(通常のファイル・シンボリックリンク・
その他のディレクトリを含む)
そのディレクトリの全ての内容を、
destination
という名前のディレクトリに再帰的にダンプする。
destination
はネイティブファイルシステム上に存在するディレクトリでなければならない。
- rm pathname
-
pathname
で指定したパス名を
unlink する。 pathname の示す
inode
が何も参照しなくなった場合には、
ファイルのアロケートを外す。
このコマンドは unlink()
システムコールのように動作する。
- rmdir filespec
-
filespec
で指定したディレクトリを消去する。
- setb block [count]
- ブロック番号
block
をアロケートされているものとしてマークする。
省略可能な引数 count
を指定すると、ブロック番号
block から始まる count
分のブロックをアロケートされているものとしてマークする。
- seti filespec
- inode
ビットマップに、
filespec で指定した inode
が使用中であるとマークする。
- set_inode_field filespec field value
-
filespec
で指定された inode
を変更し、inode
フィールド field が値
value
を持つようにする。
このコマンドで設定が可能な、正しい
inode
フィールドのリストは、
set_inode_field -l
コマンドによって表示できる。
- set_super_value field value
- スーパーブロックフィールド
field を value
にする。このコマンドで設定が可能な、
正しいスーパーブロックフィールドのリストは、
set_super_value -l
コマンドによって表示できる。
- show_super_stats [-h]
- スーパーブロックとブロックグループディスクリプタの内容を表示する。
-h
フラグが与えられると、
スーパーブロックの内容だけを表示する。
- stat filespec
-
filespec で指定した
inode の inode
構造体の内容を表示する。
- testb block [count]
- ブロック番号
block
がブロックビットマップにおいてアロケートになっているかどうか調べる。
省略可能な引数 count
を指定すると、ブロック番号
block から始まる count
分のブロックを検査する。
- testi filespec
-
filespec で指定した
inode が inode
ビットマップにおいてアロケートになっているかどうか調べる。
- unlink pathname
-
pathname
で指定した、ある inode
を指すリンクを削除する。
なおこの際、inode
参照数は変更しないことに注意。
- write source_file out_file
- ファイルシステム内に
out_file
で指定したファイルを作成し、
source_file
の内容をそのファイルにコピーする。
- DEBUGFS_PAGER, PAGER
-
はいくつかのコマンドの出力を常にページャプログラムにパイプする。
そのようなコマンドとしては、
show_super_stats, list_directory, show_inode_info,
list_deleted_inodes, htree_dump
がある。
特定のページャを環境変数
DEBUGFS_PAGER
で明示的に指定することができる。
この環境変数が設定されていない場合は、環境変数
PAGER で指定される。
- 1
つのページャが常に使われるので、
less(1)
ページャは特に適さない点に注意すること。
less(1)
はコマンドの表示を表示する前にスクリーンをクリアしたり、
ページャが終了するときにスクリーンへの出力をクリアしてしまうからである。
多くのユーザは less(1)
ページャをいろいろな目的に使うのを好んでいる。
これが環境変数
DEBUGFS_PAGER
で、より一般的な環境変数
PAGER
を上書きできる理由である。
debugfs は Theodore Ts'o <
[email protected]>
によって作成された。
dumpe2fs(8),
e2fsck(8),
mke2fs(8)