名前
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 | 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 | |
スーパーブロックフィールド 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 | |
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 Tso <tytso@mit.edu> によって作成された。