In diesem Kapitel benutze ich das Wort "Dateisystem" in zwei verschiedenen Zusammenhängen. Es gibt Dateisysteme auf einer Partition und Geräte und es gibt ein Dateisystem auf einem Linux System, welches Ihnen zur Verfügung gestellt wird. Sie "mounten" ein Dateisystem auf einem Linux in das System-Dateisytem.
Im vorhergehenden Kapitel erwähnte ich, das die init Scripte das Dateisystem überprüfen und einhängen.
Die Kommandos, die dies tun sind fsck
und mount
.
Eine Festplatte ist nur ein großer Platz, wo Sie Einsen und Nullen reinschreiben können.
Ein Dateisystem bildet eine Struktur auf diesen und läßt es aussehen, wie Dateien in einem Verzeichnis, in einem Verzeichnis,...
Jede Datei wird repräsentiert von einer inode, welche sagt, wessen Datei es ist, wann sie erstellt wurde und wo ihr Inhalt zu finden ist.
Verzeichnisse werden auch durch inodes repräsentiert, aber diese sagen, wo die
inodes der Dateien in den Verzeichnissen zu finden sind. Wenn das System die Datei
/home/greg/bigboobs.jpeg
lesen möchte, findet es zuerst die inode für das root
Verzeichnis /
im "superblock", dann findet es die inode für das
Verzeichnis home
im Inhalt von /
, dann findet es die inode für
das Verzeichnis greg
im Inhalt von /home
,
dann die inode für bigboobs.jpeg
welches schließlich aussagt, welches Dateisegment zu lesen ist.
Wenn wir etwas an eine Datei anfügen könnte es passieren, daß die Daten geschrieben sind, bevor die inode
upgedated wurden um zu sagen, das dieser Block zu dieser Datei gehört. Wenn nun der Strom ausfällt, ist das Dateisystem beschädigt.
Dies ist, was fsck
festzustellen und zu reparieren versucht.
Das mount Kommando nimmt das Dateisystem eines Gerätes und bindet es in der Struktur, die Sie auf Ihrem system sehen können, ein.
Gewöhnlich mounted der Kernel seine root Dateien im System
nur lesend. Das mount Kommando wird benutzt um sie lesend und schreibend zu remounten nachdem
fsck
überprüft hat ob alles o.k. ist.
Linux unterstützt auch andere Dateisysteme: msdos, vfat, minix und so weiter. Die Details der speziellen Dateisysteme werden behandelt vom virtuelllen Dateisystem (VFS). Ich möchte nicht ins Detail gehen. Es gibt eine Abhandlung darüber in "The Linux Kernel" (siehe Sektion Der Linux Kernel)
Ein komplett anderes Dateisystem wird unter /proc
eingebunden.
Es ist eine Darstellung aller Geschehnisse im Kernel. Es gibt ein
Verzeichnis für jeden Prozess der auf dem System läuft, mit der Prozessnummer
als Verzeichnisname. Es gibt auch Dateien, wie interrupts
,
und meminfo
welche Ihnen sagen, wie die Hardware benutzt wird.
Sie können eine Menge von /proc
lernen.
Es gibt Parameter zum Kommando mke2fs
welche ein ext2
Dateisystem erzeugen. Diese kontrollieren die Größe der Blocks, die Nummern der inodes und so weiter.
Schauen Sie auf die mke2fs
Hilfeseiten für Details.
Was auf Ihrem Dateisystem, wo eingebunden wird, finden Sie in der Datei /etc/fstab
. Diese hat auch eine Hilfeseite.
Erstellen Sie ein sehr kleines Dateisystem und sehen Sie es sich mit einem HexEditor an. Identifizieren Sie inodes, superblocks und Datei Inhalte.
Ich denke es gibt Werkzeuge, die Ihnen das Dateisystem grafisch anzeigen. Finden Sie eines, probieren Sie es aus und mailen Sie mir die URL!
Finden Sie den ext2 Dateisystemcode im Kernel.
mount
Kommando ist Teil des util-linux Pakets. Es gibt einen Link auf
Building a Minimal Linux System from Source Code mount
, fstab
, fsck
, mke2fs
und proc
Documentation/proc.txt
im Linux Quelltext erklärt
das /proc
Dateisystem./bin
, /sbin
und so weiter. Das ist eine
gute Referenz, wenn es Ihr Ziel ist, ein komplettes, minimales System zu erstellen.