Syntax

debugfs [ -b Blockgröße ] [ -s Superblock ] [ -f Kommandodatei ] [ -R Nachfrage ] [ -V ] [ -w ] [ -c ] [ -i ] [ Gerätedatei ]

Beschreibung

Das debugfs Programm ist ein Dateisystemdebugger. Es kann benutzt werden, um den Zustand eines ext2 Dateisystems zu untersuchen und zu ändern.

Gerätedatei ist die Gerätedatei, die das zu bearbeitende Dateisystem enthält (z.B. /dev/hdXX).

Optionen

-w
Das Dateisystem wird im ReadWrite Modus geöffnet. Ohne diese Option wird ein Dateisystem immer nur ReadOnly geöffnet.
-c
Das Dateisystem wird im Katastrophen Modus geöffnet. In diesem Fall werden die Inode- und Gruppeninformationen nicht initial geladen. Das kann für Dateisysteme mit katastrophalen Fehlern nützlich sein, zwingt aber daher auch zum Öffnen im ReadOnly Modus.
-i
Legt fest, daß Gerätedatei statt einer echten Gerätedatei, eine Imagedatei ist, die mit e2image(8) erstellt wurde. Weil die ext2 Image Dateien nur den Superblock, Block Gruppen Beschreibung, Block- und Inode Allocation Bitmaps und die Inode-Tabelle enthalten werden viele debugfs Kommandos nicht richtig funktionieren. Warnung: Es gibt hier keine Sicherheitsüberprüfung und debugfs kann auf interessante Weise scheitern, wenn Kommandos wie ls, dump, etc. ausprobiert werden. debugfs ist ein Debugging Werkzeug. Es hat rauhe Kanten.
-b Blockgröße
Zwingt die Anwendung der übergebenen Blockgröße für das Dateisystem, statt die richtige Blockgröße selbst zu ermitteln.
-s Superblock
Der angegebene Block wird als Superblock angenommen. Wenn diese Option verwendet wird, so muß auch die -b Option verwendet werden.
-f Kommandodatei
debugfs liesst seine Kommandos aus der angegebenen Datei und führt sie aus. Nach dem letzten Kommando wird das Programm beendet.
-R Nachfrage
debugfs führt nur das einzelne Kommando Nachfrage aus und beendet sich dann.
-V
Ausgabe der Versionsnummer und Exit.

Kommandos

debugfs ist ein interaktiver Debugger. Er versteht folgende Kommandos:

cat Dateispezifizierung
Gibt den Inhalt der Inode Dateispezifizierung auf die Standard Ausgabe aus.
cd Dateispezifizierung
Wechselt das Arbeitsverzeichnis nach Dateispezifizierung.
chroot Dateispezifizierung
Erklärt das durch Dateispezifizierung benannte Verzeichnis zum Wurzelverzeichnis.
close
Schließt das aktuell geöffnete Dateisystem.
clri Dateispezifizierung
Löscht den Inhalt der Inode Dateispezifizierung.
dump [-p] Dateispezifizierung Ausgabedatei
Gibt den Inhalt der Inode Dateispezifizierung in die Datei Ausgabedatei aus. Wenn die -p Option gesetzt ist, wird die Ausgabedatei die Eigentümer-, Gruppen- und Zugriffsinformation der Orginaldatei erhalten.
expand_dir Dateispezifizierung
Erweitert das durch Dateispezifizierung bezeichnete Verzeichnis.
feature [Dateisystemfeature] [-Dateisystemfeature] ...
Setzt oder löscht (-) verschiedene Dateisystemfeatures im Superblock. Nach der Aktion wird der Status der Dateisystemfeatures ausgegeben.
find_free_block [Zielpunkt]
Findet den ersten freien Block, ausgehend von Zielpunkt und weist ihn zu.
find_free_inode [Dir [Modus]]
Findet eine freie Inode und weist sie zu. Wenn angegeben, spezifiziert Dir die Inode Nummer des Verzeichnisses, in dem die neue Inode lokalisiert sein soll. Das zweite optionale Argument Modus bezeichnet die Zugriffsrechte der neuen Inode. (Wenn das Verzeichnisbit in diesem Modus gesetzt ist wird die Zuweisungsroutine anders arbeiten).
freeb Block
Markiert die Blocknummer Block als nicht zugewiesen.
freei Dateispezifizierung
Markiert die durch Dateispezifizierung bezeichnete Inode als frei.
help
Gibt eine Liste der Kommandos aus, die von debugfs verstanden werden.
icheck Block ...
Gibt ein Listing der Inodes aus, welche den oder die auf der Kommandozeile angegebenen Blöcke nutzen.
initialize Gerätedatei Blockgröße
Legt auf dem durch Gerätedatei angegebenen Gerät ein ext2 Dateisystem an. Beachten Sie, daß dieser Befehl nicht alle Datenstrukturen voll initialisiert. Benutzen Sie das mke2fs(8) Programm um das zu erledigen. Dieses Kommando ist nur ein Aufruf der Low-Level Library, das den Superblock und die Blockbeschreibungen setzt.
kill_file Dateispezifizierung
Dealloziiere die Inode Dateispezifizierung und ihre Blöcke. Beachten Sie, daß das keine Verzeichniseinträge dieser Inode löscht. Siehe auch das rm Kommando.
ln Dateispezifizierung Zieldatei
Erzeugt einen Link mit Namen Zieldatei, der auf die durch Dateispezifizierung bezeichnete Inode zeigt. Dieser Befehl stellt nicht den Wert der Links in der Inode ein.
ls [-l] Dateispezifizierung
Gibt eine Liste der Dateien im Verzeichnis Dateispezifizierung aus.
modify_inode Dateispezifizierung
Modifiziert den Inhalt der Inode-Struktur der durch Dateispezifizierung bezeichneten Inode.
mkdir Dateispezifizierung
Legt ein Verzeichnis an.
mknod Dateispezifizierung [p | [[c|b] major minor]]
Erstellt eine Named-Pipe (p) oder eine zeichen- (c) oder blockorientierte (b) Gerätedatei. Wenn Gerätedateien erstellt werden, müssen major und minor Nummern angegeben werden.
ncheck Inodenummer ...
Nimmt die übergebene Liste der Inodenummern und gibt eine Liste der dazu passenden Dateinamen aus.
open [-wfic] [-b Blockgröße] [-s Superblock] Gerätedatei
Öffnet ein Dateisystem zum Editieren. Die -w Option öffnet es zum Schreiben. Die -f Option zwingt das Dateisystem geöffnet zu werden, auch wenn es unbekannte oder inkompatible Dateisystemfeatures gibt, die das Öffnen normalerweise verhindern würden. Die -c, -b, -i und -s Optionen haben die selben Bedeutungen als wären sie debugfs selbst mitgegeben worden.
pwd
Gibt das aktuelle Arbeitsverzeichnis aus.
quit
Beendet debugfs
rm Pfadname
Löscht (unlink) die durch Pfadname angegebene Datei. Wenn die Inode, auf die der Dateiname zeigt keine weiteren Namen hat wird die Datei ganz gelöscht.
rmdir Dateispezifizierung
Lösche das durch Dateispezifizierung bezeichnete Verzeichnis. Diese Funktion ist im Augenblick noch nicht implementiert.
setb Block
Markiert den angegebenen Block als zugewiesen.
seti Dateispezifizierung
Markiert die Inode Dateispezifizierung im Inode-Bitmap als gebraucht.
show_super_stats [-h]
Listet den Inhalt des Superblocks und der Block Gruppenbeschreibung auf. Wenn die -h Option gesetzt wird, wird nur der Inhalt des Superblocks ausgegeben.
stat Dateispezifizierung
Zeigt den Inhalt der Inodestruktur der durch Dateispezifizierung bezeichneten Inode.
testb Block
Überprüft ob der angegebene Block im Block-Bitmap als zugewiesen markiert ist.
testi Dateispezifizierung
Überprüft, ob die durch Dateispezifizierung bezeichnete Inode im Inode-Bitmap als zugewiesen markiert ist.
unlink Pfadname
Löscht den durch Pfadname bezeichneten Link. Die Angabe der Anzahl der Links in der Inode wird nicht angepasst.
write Quelldatei Zieldatei
Erzeugt eine Datei Zieldatei und kopiert den Inhalt von Quelldatei dort hinein.
lcd Verzeichnis
Wechselt das aktuelle Arbeitsverzeichnis des debugfs-Prozesses auf dem echten Dateisystem.
rdump Verzeichnis Ziel
Gibt den Inhalt (inklusive regulären Dateien, Symlinks und anderer Verzeichnisse) des Verzeichnisses Verzeichnis rekursiv in das angegebene Ziel aus. Ziel sollte ein bestehendes Verzeichnis des echten Dateisystems sein.

Dateien spezifizieren

Viele Kommandos von debugfs nehmen eine Dateispezifizierung als Argument um eine Inode (im Gegensatz zu einem Pfadnamen) auf dem bearbeiteten Dateisystem zu bezeichnen. Dieses Argument kann in zwei Formen angegeben werden. Die erste Form ist eine Inode-Nummer in spitzen Klammern z.B. <2>. Die zweite Form ist ein Pfadname. Wenn dem Pfadnamen ein Slash (/) vorangestellt wird, dann wird der Pfadname als relativ zum Wurzelverzeichnis des durch debugfs bearbeiteten Dateisystems interpretiert. Wenn nicht, so wird der Pfadname als relativ zum aktuellen Arbeitsverzeichnis interpretiert, das durch debugfs angegeben wurde. Dieses aktuelle Arbeitsverzeichnis kannn durch den debugfs Befehl cd gewechselt werden.

Autor

debugfs wurde von Theodore Ts’o <tytso@mit.edu> geschrieben.