debugfs(8) 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
devicee2image プログラムによって作成された 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 が現在オープンしているファイルシステムのルートからの相対パスを表す。 「/」で始まらない場合、カレントワーキングディレクトリからの相対パスを表す。 カレントワーキングディレクトリは debugfscd コマンドによって変更できる。

コマンド

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
debugfs(8) で利用できるコマンドのリストを表示する。
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
スーパーブロックフィールド fieldvalue にする。このコマンドで設定が可能な、 正しいスーパーブロックフィールドのリストは、 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
debugfs(8) はいくつかのコマンドの出力を常にページャプログラムにパイプする。 そのようなコマンドとしては、 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]> によって作成された。