FSDB(8)

名称
fsdb - FFS デバッグ/編集 ツール

書式
fsdb [-d] -f fsname

解説
fsdb は、 fsname (通常は raw ディスクパーティション) をオープンし、ファイルシステムの i ノード データを操作するためのコマンドループに入ります。 コマンド入力用のプロンプトは “fsdb (inum X)>” のように出ます。ここで X は現在選択している i ノード番号 です。最初に選択される i ノードは、 そのファイルシステムの root (iノード 番号 2) です。 コマンドプロセッサは editline(3) を利用しているので、必要ならば、コマンドライン編集を用いて タイピングを減らすことが可能です。 コマンドループを抜けると、ファイルシステムのスーパブロックは dirty であると 印がつけられ、バッファリングされている全てのブロックはそのファイルシステムに 書き込まれます。

-d オプションは、デバッグ出力を有効にします (これは主に fsck(8) のコードから持ってきました)。

コマンド
editline(3) の組み込みコマンド以外では、 fsdb はこれらのコマンドをサポートしています:

help
    fsdb が受け入れるコマンドのリストを表示します。

inode i-number
    i-number の i ノードを新しいカレント i ノードとして選択します。

back
    前のカレント i ノードに戻ります。

clri
    カレント i ノードをクリアします。

lookup name
cd name
    カレントディレクトリ内から name を探し、その i ノードをカレント i ノードとします。 name は複数の要素をもつ名前でもよく、また、lookup を開始するルート i ノードを 示すスラッシュをつけることも許されます。 もしそのパス名の途中の要素が見つからない場合は、最後に発見された 有効ディレクトリまでがアクティブ i ノードとして残されます。
    このコマンドは、実行を開始する i ノードがディレクトリの場合のみ有効です。

active
print
    アクティブ i ノードを表示します。

uplink
    アクティブ i ノードのリンクカウントを 1 つ増やします。

downlink
    アクティブ i ノードのリンクカウントを 1 つ減らします。

linkcount number
    アクティブ i ノードのリンクカウントを number に設定します。

ls  現在の i ノードのディレクトリエントリの一覧を表示します。 このコマンドは、カレント i ノードがディレクトリの場合のみ有効です。

rm name
del name
    現在のディレクトリ i ノードから name のエントリを削除します。 このコマンドは、カレント i ノードがディレクトリの場合のみ有効です。

ln ino name
    現在のディレクトリ i ノード内に、i ノード番号が ino で、名前が name のリンクを作成します。 このコマンドは、カレント i ノードがディレクトリの場合のみ有効です。

chinum dirslot inum
    ディレクトリエントリ dirslot 内の i ノード番号を inum に変更します。

chname dirslot name
    ディレクトリエントリ dirslot 内の名前を to name に変更します。このコマンドは、ディレクトリエントリを拡大させることは できません。新しい名前が既存のディレクトリスロット内に入る場合のみ、 名前の変更が可能です。

chtype type
    カレント i ノードの型を type に変更します。 type は file, dir, socket, fifo のうちの 1 つです。

chmod mode
    カレント i ノードの mode ビットを mode に変更します。このサブコマンドでファイルタイプを変更することは出来ません。 ファイルタイプの変更には chtype を使って下さい。

chflags flags
    カレント i ノードのファイルフラグを flags に変更します。

chown uid
    カレント i ノードの所有者を、ユーザ ID が uid のユーザに変更します。

chgrp gid
    カレント i ノードのグループ ID を gid にします。

chgen gen
    カレント i ノードの生成番号を gen にします。

mtime time
ctime time
atime time
    それぞれ、 カレント i ノードの 書換え時間、 ステータス変更時間、 アクセス時間を time にします。 time のフォーマットは YYYYMMDDHHMMSS[.nsec] です。ここで nsec はナノ秒を指定する部分で、省略可能です。 もし、ナノ秒の部分が指定されなかった場合は、 mtimensec, ctimensec, atimensec のフィールドは 0 に設定されます。

quit, q, exit, <EOF>
    プログラムを終了します。

関連項目
editline(3), fs(5), clri(8), fsck(8)

バグ
``短い'' シンボリックリンクに対する操作は動作しません (特に、 シンボリックリンクの型を変更しようとはしないでください)。
モードは、シンボル名ではなく数値で指定しなければなりません。
fsdb にはインプリメントされていないけれどもあなたがしたいということが、 たくさんあるでしょう。

歴史
fsdb は、ファイルシステムに細工をする部分のコードの大部分をインプリメントするために fsck(8) のソースコードを用いています。 fsdb の残りの部分は NetBSD 1.1 で初めて登場しました。

警告
極端なほど用心して、このツールを使って下さい。 fsck(8) で修正できる範囲を越えており、FFS file system にダメージを与える 可能性があります。