Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.
Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.
Auf UNIX-Sytemen ist ein Dateisystem ein Gerät (device), das für die Aufnahme von Dateien formatiert wurde (z.B. Festplatten, Disketten oder CD-ROMs). Dateisysteme finden Sie auf diesen Geräten ebenso wie auf anderen, die den wahlfreien Zugriff erlauben. (Die wichtigste Ausnahme sind Streamer, auf die nur sequentiell zugegriffen werden kann, und die deshalb per se kein Dateisystem enthalten können.)
Das genaue Format und die Methode der Speicherung von Dateien sind nicht wichtig; das System stellt ein gemeinsames Interface für alle Dateisystemtypen bereit, mit denen es arbeiten kann. Unter Linux gehören das Second Extended Filesystem (oder ext2fs dazu, unter dem Sie wahrscheinlich Ihre Linux-Dateien ablegen; das MS-DOS-Dateisystem, mit dessen Hilfe Sie auf Dateien in DOS-Partitionen und auf DOS-formatierten Floppies zugreifen; außerdem verschiedene andere wie z.B. das ISO-9660-Dateisystem für CD-ROMs.
Jeder dieser Dateisystemtypen benutzt ein anderes Format für die Speicherung von Daten. Wenn Sie allerdings unter Linux auf ein beliebiges Dateisystem zugreifen, wird das System Ihnen die Daten in der vertrauten Umgebung von Verzeichnishierarchien zusammen mit den Angaben zu Eigner und Gruppe, den Berechtigungsbits sowie allen anderen bekannten Merkmalen präsentieren.
Tatsächlich werden die Informationen zu Eignerschaft, Berechtigungen usw. nur von den Dateisystemen verwaltet, die für die Speicherung von Linux-Dateien vorgesehen sind. Bei solchen Dateisystemen, die diese Informationen nicht speichern, »erfinden« die Treiber, mit denen auf die Dateisysteme zugegriffen wird, diese Informationen. Das MS-DOS-Dateisystem z.B. kennt das Konzept der Eignerschaft gar nicht; deshalb werden alle Dateien so dargestellt, als ob sie root gehörten. Auf diese Weise gleichen sich die Dateisysteme oberhalb einer bestimmten Ebene, und jeder Datei werden gewisse Attribute zugeordnet. Ob das darunterliegende Dateisystem diese Attribute nutzt oder nicht, ist eine ganz andere Frage.
Als Systemverwalter müssen Sie wissen, wie Dateisysteme erzeugt werden, falls Sie Linux-Dateien auf Disketten speichern oder zusätzliche Dateisysteme auf der Festplatte einrichten wollen. Sie werden auch verschiedene Tools kennenlernen müssen, mit denen Dateisysteme im Fall von Datenverlusten geprüft und repariert werden. Außerdem müssen Sie wissen, mit welchen Befehlen und Dateien auf Floppy- oder CD-ROM-Dateisysteme zugegriffen wird.
In Tabelle 4--1 finden Sie alle Dateisystemtypen aufgelistet, die vom Linux-Kernel unterstützt werden (Stand: Ende 1994). Es werden ständig neue Typen hinzugefügt und für mehrere hier nicht aufgeführte Dateisysteme gibt es experimentelle Treiber. Im Verzeichnis /usr/src/linux/fs können Sie nachsehen, welche Typen von Dateisystemen Ihr Kernel unterstützt. Beim Kompilieren des Kernels können Sie bestimmen, welche Dateisysteme unterstützt werden sollen; lesen Sie dazu den Abschnitt » Den Kernel kompilieren « weiter oben in diesem Kapitel.
Tabelle 4-1: Die Dateisystemtypen unter Linux
Dateisystem Name Beschreibung
---------------------------------------------------------------------------
Second Extended-Dateisystem ext2 Das Standard-Linux-Dateisystem
Extended-Dateisystem ext Ersetzt durch ext2
Minix-Dateisystem minix Original-Minix-Dateisystem; selten
benutzt
Xia-Dateisystem xia Wie ext2 , aber selten benutzt
UMSDOS-Dateisystem umsdos Wird benutzt, um Linux in einer MS-
DOS-Partition zu installieren
MS-DOS-Dateisystem msdos Für den Zugriff auf MS-DOS-Dateien
HPFS-Dateisystem hpfs OS/2-Dateisystem
/proc-Dateisystem proc Liefert Zugriffsinformationen für ps
ISO-9660-Dateisystem iso9660 Von den meisten CD-ROMs benutzt
Xenix-Dateisystem xenix Für den Zugriff auf Xenix-Dateien
System-V-Dateisystem sysv Für den Zugriff auf Dateien von
System-V-Systemen
Coherent-Dateisystem coherent Für den Zugriff auf Coherent-Dateien
---------------------------------------------------------------------------
Jeder Dateisystemtyp hat individuelle Eigenschaften und Beschränkungen; MS-DOS z.B. erlaubt nur achtstellige Dateinamen mit einer dreistelligen Erweiterung. Sie sollten dieses Dateisystem nur für den Zugriff auf bereits existierende DOS-Partitionen oder -Disketten benutzen. Sie werden für den größten Teil der Arbeit unter Linux das Second Extended-Dateisystem benutzen, das in erster Linie für Linux entwickelt wurde. Es erlaubt Dateinamen bis einer Länge von zu 256 Stellen, Dateisysteme bis zu vier Terabytes Größe und bietet einen Haufen anderer Goodies. Frühere Linux-Systeme benutzten die inzwischen verdrängten Dateisysteme Extended und Minix. (Ursprünglich wurde aus mehreren Gründen Minix benutzt. Einerseits wurde Linux am Anfang unter Minix kompiliert. Andererseits kannte sich Linus mit Minix ziemlich gut aus und es war einfach, Minix in die frühen Original-Kernel einzubinden.) Das Xia-Dateisystem ist dem Second Extended-Dateisystem ähnlich, aber seine Weiterentwicklung ist praktisch eingestellt worden; es hat sich nie richtig durchsetzen können.
Das Dateisystem UMSDOS wird für die Installation eines Linux-Systems in einem Verzeichnis innerhalb einer bestehenden DOS-Partition benutzt. Auf diese Weise können Linux-Neulinge mit Linux experimentieren, ohne die Festplatte neu zu partitionieren. Das MS-DOS-Dateisystem dagegen wird für den direkten Zugriff auf DOS-Dateien benutzt. Das Dateisystem HPFS dient dem Zugriff auf das OS/2-Filesystem. Linux unterstützt momentan nicht den direkten Zugriff auf MS-DOS-Dateien, die mit DoubleSpace oder Stacker komprimiert wurden. Auf die unkomprimierten Teile der Dateien kann zwar zugegriffen werden, aber an die komprimierten Dateien kommt man nur mit einigen Tricks. Wer mehr darüber wissen will, sollte die aktuellsten Informationen aus der Linux HOWTO-Dokumentation beziehen.
/proc ist ein virtuelles Dateisystem, d.h., daß ihm kein Speicherplatz zugeordnet ist. Im Verzeichnis /proc finden Sie eine Reihe von »Dateien« und »Verzeichnissen«, deren Inhalt sich im Laufe der Zeit verändert. Der Kernel stellt durch das Dateisystem /proc statistische Informationen über das System und die Prozesse bereit. Wenn Sie versuchen, auf irgendeine Datei im Dateisystem /proc zuzugreifen, erkennt der Kernel dies und gibt einige Daten aus, um Ihre Leseanforderung zu erfüllen. Alle diese »Dateien» und «Verzeichnisse« existieren nicht auf der Festplatte. Sie werden vom Kernel als eine einfache Möglichkeit erzeugt, Programmen wie ps und top den Zugriff auf diese Informationen zu gewähren. (9)
Das ISO-9660-Dateisystem (früher als High Sierra Filesystem bekannt und auf anderen UNIX-Systemen mit hsfs abgekürzt) wird von den meisten CD-ROMs benutzt. Ähnlich wie unter DOS sind auch hier die Länge der Dateinamen und die Menge der Informationen, die zu jeder Datei gespeichert werden, beschränkt. Die meisten CD-ROMs kennen allerdings die Rock-Ridge-Erweiterungen zum ISO-9660-Standard, so daß der Kernel-Treiber den Dateien lange Namen, Eignerschaft und Berechtigungen zuordnen kann. Als Folge bekommen Sie beim Zugriff auf eine ISO-9660-CD-ROM unter DOS nur Dateinamen im 8.3-Format, während Sie unter Linux die »echten«, kompletten Namen erhalten.
Schließlich kennt Linux noch drei Dateisysteme, die in anderen UNIX-Systemen für PCs verwendet werden: Xenix, System V und Coherent. (Diese werden in Wirklichkeit von demselben Kernel-Treiber mit jeweils leicht geänderten Parametern bedient.) Falls Sie auf Dateisysteme stoßen, die in einem dieser Formate erzeugt wurden, können Sie auf die Dateien darin auch unter Linux zugreifen.
Damit Sie unter Linux auf ein beliebiges Dateisystem zugreifen können, müssen Sie es auf ein bestimmtes Verzeichnis aufsetzen (mounten). Dies läßt die Dateien in diesem Dateisystem so erscheinen, als ob sie in diesem Verzeichnis stünden, so daß Sie darauf zugreifen können.
Dies wird mit dem Befehl mount erledigt und muß in der Regel als root ausgeführt werden. (Wir werden noch sehen, daß normale Benutzer mount ausführen können, wenn der betreffende Gerätename in der Datei /etc/fstab aufgelistet ist.) Der Befehl hat folgendes Format:
mount -t typ gerät mount-point
Der Typ ist der Name des Dateisystems, wie er in Tabelle 4--1 erscheint; das Gerät ist das physikalische Gerät, auf dem das Dateisystem existiert (der Gerätename in /dev ); und der Mount-Point (Aufsetzpunkt) ist das Verzeichnis, auf das dieses Dateisystem aufgesetzt wird. Sie müssen das Verzeichnis vor dem Aufruf von mount anlegen.
Wenn Sie z.B. ein Second Extended-Dateisystem auf /dev/hda2 haben, das Sie auf das Verzeichnis /mnt aufsetzen möchten, geben Sie folgenden Befehl ein:
mount -t ext2 /dev/hda2 /mnt
Wenn alles klappt, sollten Sie auf das Dateisystem unter /mnt zugreifen können.
Mit folgendem Befehl mounten wir ein Dateisystem, das auf einer Diskette erzeugt wurde:
mount -t msdos /dev/fd0 /mnt
Anschließend können Sie unter /mnt auf Dateien zugreifen, die auf einer DOS-formatierten Diskette stehen.
Der Befehl mount kennt viele Optionen, die Sie mit dem Schalter -o spezifizieren können. Ein Beispiel: Die Dateisysteme MS-DOS und ISO-9660 unterstützen die »automatische Konvertierung« von Textdateien im DOS-Format (die am Ende jeder Zeile die Codes CR + LF enthalten) in das UNIX-Format (bei dem am Zeilenende nur ein LF steht). Mit dem Befehl:
mount -o conv=auto -t msdos /dev/fd0 /mnt
schalten Sie diese Konvertierung bei solchen Dateien ein, deren Suffix nicht auf eine Binärdatei hinweist (wie .exe , .bin usw.).
Eine häufig benutzte Option beim Aufsetzen ist -o ro (oder, mit demselben Effekt, -r ), mit der Sie Dateisysteme im Lesemodus (read-only) aufsetzen. Alle schreibenden Zugriffe auf ein solches Dateisystem haben die Fehlermeldung »permission denied« zur Folge. Medien, die nicht beschrieben werden können (etwa CD-ROMs), müssen read-only aufgesetzt werden. Wenn Sie versuchen, eine CD-ROM ohne die Option -r zu mounten, erhalten Sie die kryptische Fehlermeldung:
mount: block device /dev/cdrom is not permitted on its filesystem
Geben Sie in diesem Fall statt dessen ein:
mount -t iso9660 -r /dev/cdrom /mnt
Dies gilt auch, wenn Sie versuchen, eine schreibgeschützte Diskette zu mounten.
In der Man-Page zu mount finden Sie alle Optionen für das Aufsetzen von Dateisystemen. Sie werden nicht alle davon sofort benutzen, aber eines Tages müssen Sie vielleicht doch auf einige davon zurückgreifen.
Das Gegenteil zum Aufsetzen eines Dateisystems ist natürlich das Absetzen (unmounting). Das Absetzen bewirkt zweierlei: Der Inhalt des Dateisystems wird aus den Systempuffern aktualisiert, und auf das Dateisystem kann nicht mehr über seinen Aufsetzpunkt zugegriffen werden. Anschließend können Sie auf diesen Mount-Point ein anderes Dateisystem aufsetzen.
Das Absetzen geschieht mit dem Befehl umount (beachten Sie, daß das »n« in der Vorsilbe von »unmount« fehlt). Ein Beispiel:
umount /dev/fd0
setzt das Dateisystem auf /dev/fd0 ab. Mit einem Befehl wie:
umount /mnt
setzen Sie ein beliebiges, auf ein bestimmtes Verzeichnis aufgesetztes Dateisystem ab.
Es ist wichtig, daß Sie Wechselmedien wie Floppies und CD-ROMs nicht aus
dem Laufwerk entfernen oder gegen andere austauschen, solange sie aufgesetzt
sind. Das hätte zur Folge, daß die Systeminformationen über
das Gerät nicht mehr mit dem übereinstimmen, was tatsächlich
vorhanden ist; dies kann unendliche Probleme bereiten. Wenn Sie eine Floppy
oder CD-ROM wechseln wollen, sollten Sie das alte Medium erst absetzen, bevor
Sie das neue Medium aufsetzen.
Ebenso wie bei Festplatten wird auch das Lesen und Schreiben von/auf
Diskettendateisysteme(n) im Arbeitsspeicher gepuffert. Das bedeutet, daß
das Laufwerk beim Lesen und Schreiben nicht sofort aktiv wird. Das System
arbeitet die Ein/Ausgabe von/auf Floppies asynchron ab und führt Lese-
und Schreibvorgänge nur durch, wenn es wirklich notwendig ist. Wenn Sie
also eine kleine Datei auf die Diskette kopieren, und die Kontrolleuchte am
Laufwerk blinkt nicht sofort auf, brauchen Sie nicht in Panik auszubrechen --
die Daten werden schließlich doch noch geschrieben. Mit dem Befehl:
zwingen Sie das System, alle Puffer für das Dateisystem zu leeren, d.h.,
daß alle Daten in den Puffern physikalisch auf die Diskette geschrieben
werden. Dasselbe geschieht beim Absetzen eines Dateisystems.
Wenn Sie gewöhnlichen Sterblichen erlauben wollen, bestimmte Geräte
auf- und abzusetzen, gibt es zwei Möglichkeiten. Die erste davon ist,
für ein solches Gerät die Option user in
/etc/fstab
einzutragen (wir gehen weiter unter in diesem Abschnitt darauf ein). Danach
sind alle Benutzer in der Lage,
mount
und
umount
für dieses Gerät aufzurufen. Die andere Möglichkeit ist die
Benutzung eines Programms, das unter Linux das Auf- und Absetzen
übernimmt. Diese Programme werden mit setuid root ausgeführt und
erlauben normalen Benutzern das Aufsetzen bestimmter Geräte. Im
allgemeinen werden Sie nicht zulassen, daß Benutzer eine
Festplattenpartition auf- und absetzen, aber die Benutzung eines CD-ROM- oder
Diskettenlaufwerks könnte erlaubt sein.
Es gibt eine ganze Reihe von Fehlern, die beim Mounten von Dateisystemen
auftreten können. Unglücklicherweise gibt
mount
auf verschiedene Probleme dieselbe Fehlermeldung aus:
wrong fs type ist einfach: Es bedeutet, daß Sie dem Befehl
mount
den verkehrten
Typ
übergeben haben. Wenn Sie keinen
Typ
definieren, wird auf Linux-Systemen
-t minix
als Voreinstellung benutzt.
device
already mounted bedeutet genau das: Dieses Gerät ist bereits auf ein
anderes Verzeichnis aufgesetzt. Mit dem Befehl
mount
ohne Argumente können Sie feststellen, welche Geräte wo aufgesetzt
sind:
Wir sehen zwei Festplattenpartitionen, eine vom Typ
ext2
, die andere vom Typ
msdos
; ein CD-ROM-Laufwerk, das auf
/cdrom
aufgesetzt ist; und schließlich das Dateisystem
/proc
. Das letzte Feld in jeder Zeile (z.B. (rw)) zeigt die Optionen, unter denen
das Dateisystem aufgesetzt ist. Mehr dazu in Kürze.
Beachten Sie, daß das CD-ROM-Laufwerk auf
/cdrom
aufsetzt. Wenn Sie häufig mit CD-ROMs arbeiten, ist es eine gute Idee,
ein Verzeichnis
/cdrom
anzulegen, um dieses Gerät dort zu mounten.
/mnt
wird im allgemeinen benutzt, um dort z.B. Floppy-Dateisysteme
vorübergehend aufzusetzen.
Die Fehlermeldung
mount-point
busy ist schwer nachzuvollziehen. Grundsätzlich deutet sie auf irgendeine
Art von Aktivität unterhalb des
Mount-Point
hin, welche verhindert, daß Sie dort ein Dateisystem aufsetzen. Meistens
ist das eine offene Datei unterhalb dieses Verzeichnisses oder ein
Prozeß, der sein aktuelles Arbeitsverzeichnis unterhalb des
Aufsetzpunktes hat. Stellen Sie beim Aufruf von
mount
sicher, daß sich Ihre Root-Shell nicht innerhalb von
Mount-Point
befindet; gehen Sie mit
cd /
in die oberste Verzeichnisebene. Es könnte auch sein, daß bereits
ein anderes Dateisystem auf demselben
Mount-Point
aufsetzt; mit
mount
ohne Argumente können Sie dies feststellen.
Die Meldung other error ist natürlich nicht sehr hilfreich. Es gibt
verschiedene Fälle, in denen
mount
mißlingen könnte. Falls das betreffende Dateisystem irgendwelche
Daten- oder Datenträgerfehler enthält, wird
mount
eventuell melden, daß es den
Superblock
des Dateisystems nicht lesen kann. Unter UNIX-artigen Betriebssystemen
enthält der Superblock den Teil des Dateisystems, der Informationen zu
einzelnen Dateien und die Attribute des Dateisystems insgesamt enthält.
Wenn Sie versuchen, ein CD-ROM- oder Diskettenlaufwerk aufzusetzen, ohne
daß eine CD-ROM oder Floppy vorhanden ist, erhalten Sie eine Meldung wie
diese:
Disketten sind besonders anfällig für physikalische Schäden
(mehr als Sie vielleicht glauben); CD-ROMs leiden unter Staub, Kratzern,
Fingerabdrücken und werden auch nicht gerne verkehrt herum eingelegt.
(Wenn Sie versuchen, Ihre Stan-Rogers-CD als ISO-9660-Format zu mounten,
werden Sie wahrscheinlich ähnliche Probleme bekommen.)
Vergewissern Sie sich auch, daß der Aufsetzpunkt, den Sie benutzen
möchten (etwa
/mnt
), tatsächlich existiert. Falls das nicht der Fall ist, können Sie
ihn mit dem Befehl
mkdir
anlegen.
Falls beim Aufsetzen oder beim Zugriff auf ein Dateisystem Probleme
auftauchen, kann es sein, daß Daten beschädigt sind. Unter Linux
gibt es verschiedene Tools zum Reparieren bestimmter Dateisystemtypen; im
Abschnitt
»
Dateisysteme prüfen und reparieren
«
weiter unten finden Sie mehr zu diesem Thema.
Beim Booten setzt das System automatisch mehrere Dateisysteme auf. Dies wird
von der Datei
/etc/fstab
gesteuert, die einen Eintrag für jedes Dateisystem enthält, das beim
Booten aufgesetzt werden soll. Die Zeilen haben das Format:
Dabei haben
Gerät
,
Mount-Point
und
Typ
dieselbe Bedeutung wie im Befehl
mount
; die
Optionen
sind eine durch Kommata getrennte Liste der Optionen, die Sie bei
mount
mit dem Schalter
-o
angeben würden.
In
Beispiel 4--2.
sehen Sie, wie die Datei
/etc/fstab
aussehen könnte:
Beispiel 4-2.
Beispielhafte /etc/fstab-Datei
Die letzte Zeile in dieser Datei bezeichnet eine Swap-Partition. Im Abschnitt
»
Swap-Space benutzen
«
gehen wir genauer darauf ein.
Die Man-Page zu
mount
enthält auch die möglichen
Optionen
; wenn Sie mehr als eine Option angeben wollen, führen Sie sie durch
Kommata getrennt, aber ohne Leerstellen dazwischen auf:
Die Option user läßt auch andere Benutzer als root Dateisysteme
aufsetzen. Wenn diese Option eingetragen ist, kann ein Benutzer z.B. mit:
ein CD-ROM-Laufwerk aufsetzen. Beachten Sie, daß Sie immer nur ein
Gerät oder einen Mount-Point (aber nicht beide) an
mount
übergeben; der Befehl wird den Aufsetzpunkt oder das Gerät in
/etc/fstab
nachschlagen und das Gerät mit den dort eingetragenen Parametern
aufsetzen. Auf diese Weise lassen sich Geräte, die in
/etc/fstab
eingetragen sind, ganz einfach mounten.
Sie sollten für die meisten Dateisysteme die Option defaults
(Standardwerte) benutzen; damit schalten Sie eine Reihe weiterer Optionen ein
wie z.B. rw (Schreib- und Lesezugriff), async (asynchrones Leeren der
E/A-Puffer) usw. Solange Sie keinen besonderen Grund haben, diese Parameter zu
ändern, sollten Sie defaults für fast alle Dateisysteme und ro
ausschließlich für Geräte mit Lesezugriff (wie CD-ROMs)
benutzen.
Mit dem Befehl
mount -a
werden alle Dateisysteme aufgesetzt, die in
/etc/fstab
eingetragen sind. Der Befehl wird beim Booten von einem der Skripts in
/etc/rc.d
ausgeführt, in der Regel
rc.S
. Auf diese Weise werden alle in
/etc/fstab
aufgeführten Dateisysteme beim Systemstart aktiviert; alle Partitionen
Ihrer Festplatte, das CD-ROM-Laufwerk usw. werden aufgesetzt.
Hierzu gibt es eine Ausnahme: das Dateisystem
root
. Dieses Dateisystem, das in der Regel auf
/
aufgesetzt wird, enthält meistens sowohl die Datei
/etc/fstab
als auch die Skripts in
/etc/rc.d
. Damit der Kernel darauf zugreifen kann, muß er beim Booten das
Root-Dateisystem selbst aufsetzen. Das Gerät, das das Root-Dateisystem
enthält, ist direkt in den Kernel einkompiliert und kann mit dem Befehl
rdev
geändert werden (lesen Sie hierzu
»
Von einer Diskette booten
«
). Während des Bootens versucht der Kernel, dieses Gerät als
Root-Dateisystem aufzusetzen, und probiert dazu nacheinander verschiedene
Dateisystemtypen aus (zuerst Minix, dann Extended usw.). Wenn Sie beim Booten
eine Fehlermeldung wie:
erhalten, kann das eine der folgenden Ursachen haben:
Für jeden dieser Fälle gilt, daß der Kernel nicht
weiterarbeiten kann und in »Panik« ausbricht. Lesen Sie in
»
Die Rettung in der Not
«
nach, was Sie tun können. Falls ein beschädigtes Dateisystem
die Ursache ist, läßt sich das in der Regel beheben; lesen Sie dazu
»
Dateisysteme prüfen und reparieren
«
.
Ein Dateisystem muß nicht in
/etc/fstab
eingetragen sein, damit es aufgesetzt werden kann, aber für das
»automatische« Aufsetzen durch
mount -a
sowie die Benutzung der Option user ist dies eine Voraussetzung.
Mit dem Befehl
mkfs
erzeugen Sie ein Dateisystem. Das Anlegen eines Dateisystems entspricht dem
»Formatieren« einer Partition oder Diskette als Vorbereitung
für das Speichern von Daten.
Zu jedem Dateisystemtyp gehört ein eigener
mkfs
-Befehl -- für MS-DOS z.B. ist das
mkfs.msdos
, ein Second Extended-Dateisystem wird mit
mkfs.ext2
erzeugt usw. Das Programm
mkfs
selbst ist ein Front-End (Hilfsprogramm), das beliebige Dateisysteme erzeugen
kann, indem es die passende Version von
mkfs
aufruft.
(10)
Bei der Installation Ihres Linux-Systems haben Sie eventuell mit einem Befehl
wie
mke2fs
ein Dateisystem von Hand erzeugt. (Falls nicht, hat die Installationssoftware
das für Sie erledigt.) Tatsächlich ist
mke2fs
dasselbe wie
mkfs.ext2
. Die Programme sind identisch (und auf vielen Systemen ist das eine nur ein
Link auf das andere), aber man benutzt die Version
mkfs.dateisystemtyp
, damit es für
mkfs
einfacher wird, das entsprechende Programm für jedes Dateisystem
auszuführen. Wenn Sie das Front-End
mkfs
nicht auf Ihrem System haben, können Sie auch
mke2fs
oder
mkfs.ext2
direkt aufrufen.
Wir gehen davon aus, daß Sie das Front-End
mkfs
benutzen; dann erzeugen Sie mit folgendem Befehl ein Dateisystem:
Dabei ist der
Typ
der zu erzeugende Dateisystemtyp, wie er in Tabelle
4--1
erscheint, die
Gerätedatei
gibt an, wo das Dateisystem erzeugt werden soll (z.B.
/dev/fd0
für eine Diskette), und die
Blöcke
geben die Größe des Dateisystems in Blöcken zu 1024 Bytes an.
Wenn Sie z.B. ein
ext2
-Dateisystem auf einer Diskette anlegen möchten, geben Sie ein:
Hier werden 1440
Blöcke
angegeben, womit eine 3,5-Zoll-HD-Diskette mit 1,44-Megabytes bezeichnet wird.
Wenn Sie statt dessen
-t msdos
eingäben, könnten Sie eine DOS-formatierte Floppy erzeugen.
Anschließend können wir die Disketten mounten, wie wir das im
vorhergehenden Abschnitt beschrieben haben, und dann Dateien dorthin kopieren
usw. Vergessen Sie nicht, die Floppy wieder abzusetzen, bevor Sie sie aus dem
Laufwerk entfernen.
Mit dem Erzeugen eines Dateisystems werden
alle
Daten auf dem betreffenden physikalischen Datenträger (Diskette,
Festplattenpartition usw.) gelöscht.
mkfs
wird normalerweise vor dem Anlegen eines Dateisystems
keine
Warnung ausgeben -- überlegen Sie deshalb genau, was Sie tun wollen.
Auf dieselbe Weise erzeugen Sie auch ein Dateisystem auf einer
Festplattenpartition, nur geben Sie dabei den Namen der Partition (etwa
/dev/hda2
) als
Gerätedatei
an. Versuchen Sie niemals, auf einem Gerätenamen wie
/dev/hda
ein Dateisystem zu erzeugen. Dies bezieht sich auf die gesamte Festplatte,
nicht nur eine einzelne Partition. Mit dem Befehl
fdisk
können Sie Partitionen einrichten, wie wir das im Abschnitt
»
Linux-Partitionen anlegen
«
in
Kapitel 2
beschrieben haben.
Sie sollten beim Erzeugen von Dateisystemen auf Festplattenpartitionen ganz
besonders vorsichtig sein. Vergewissern Sie sich, daß die Werte für
Gerätedatei
und
Blöcke
korrekt sind. Wenn Sie eine falsche
Gerätedatei
angeben, kann es passieren, daß Sie Daten in bestehenden Dateisystemen
zerstören; wenn Sie einen falschen Wert für die
Blöcke
angeben, überschreiben Sie eventuell Daten in anderen Partitionen. Geben
Sie für die
Blöcke
genau den Wert ein, den das
fdisk
von Linux meldet.
Wenn Sie Dateisysteme auf Disketten erzeugen möchten, ist es meistens
eine gute Idee, zunächst eine Low-level-Formatierung vorzunehmen. Damit
werden die Sektor- und Spurinformationen auf die Floppy geschrieben, so
daß bei der Benutzung der Gerätenamen
/dev/fd0
und
/dev/fd1
die Diskettenkapazität automatisch erkannt wird. Der FORMAT-Befehl unter
DOS ist eine Möglichkeit der Low-level-Formatierung; eine andere
Möglichkeit ist das Programm
fdformat
unter Linux. Wenn Sie z.B. die Floppy im ersten Diskettenlaufwerk formatieren
möchten, geben Sie ein:
Mit der Option
-n
zu
fdformat
überspringen Sie die Verifizierung.
Alle Versionen von
mkfs
für die einzelnen Dateisystemtypen unterstützen verschiedene
nützliche Optionen. Fast alle Versionen kennen die Option
-c
, mit der beim Erzeugen des Dateisystems eine Überprüfung des
physikalischen Mediums auf beschädigte Blöcke eingeschaltet wird.
Wenn beschädigte Blöcke gefunden werden, werden diese markiert und
bei Schreibvorgängen in diesem Dateisystem ausgespart. Wenn Sie solche
spezifischen Optionen benutzen möchten, sollten Sie sie hinter der Option
-t
typ
von
mkfs
angeben, etwa so:
Schauen Sie in der Man-Page der betreffenden Version von
mkfs
nach, welche speziellen Optionen unterstützt werden. (Für das Second
Extended-Dateisystem lesen Sie also in der Man-Page zu
mke2fs
nach.) Die meisten Versionen kennen
-c
zum Testen auf beschädigte Blöcke und
-v
für ausführliche Meldungen.
Eventuell haben Sie nicht alle speziellen Versionen von
mkfs
installiert. Falls nicht, kann
mkfs
nicht ausgeführt werden, wenn Sie versuchen, ein Dateisystem eines Typs
zu erzeugen, für den Sie kein
mkfs.typ
installiert haben. Irgendwo gibt es für fast alle Dateisystemtypen, die
von Linux unterstützt werden, auch ein entsprechendes
mkfs.typ
.
Falls Sie beim Aufruf von
mkfs
auf Probleme stoßen, kann es sein, daß Linux physikalisch nicht
auf das Gerät zugreifen kann. Wenn es sich um eine Diskette handelt, ist
es vielleicht nur ein defektes Exemplar. Bei einer Festplatte könnte es
sich um einen ernsteren Fehler handeln -- eventuell kann der
Gerätetreiber für die Festplatte im Kernel nicht auf dieselbe
zugreifen. Dabei kann ein Hardwarefehler vorliegen, oder die Plattengeometrie
ist einfach falsch spezifiziert worden. Lesen Sie die Man-Pages der
verschiedenen Versionen von
mkfs
sowie die Abschnitte in
Kapitel 2
zum Thema: Probleme bei der Installation. Das dort Gesagte gilt auch hier.
Von Zeit zu Zeit werden Sie die Linux-Dateisysteme auf ihre Konsistenz
untersuchen und ggf. reparieren müssen, wenn dabei Fehler oder verlorene
Daten festgestellt werden. Solche Fehler entstehen in der Regel bei einem
Systemcrash oder durch Stromausfall, wenn der Kernel keine Gelegenheit mehr
hat, den Inhalt der Schreibpuffer auf die Festplatte zu bringen. Meist sind
solche Fehler relativ unbedeutend. Wenn das System allerdings beim Schreiben
einer großen Datei unterbrochen wird, könnte diese Datei
verlorengehen, wobei die Blöcke, die zu dieser Datei gehören, als
»belegt« (in use) markiert werden, obwohl es dafür keinen
Dateieintrag mehr gibt. Solche Fehler können auch entstehen, wenn
versehentlich Daten direkt auf die Festplatte (etwa
/dev/hda
) oder eine der Partitionen geschrieben werden.
Das Programm
fsck
dient der Untersuchung von Dateisystemen und ggf. der Reparatur von Fehlern.
Wie
mkfs
ist auch
fsck
ein Front-End für dateisystemspezifische Versionen von
fsck.typ
, etwa
fsck.ext2
für das Second Extended-Dateisystem. (Ähnlich wie bei
mkfs.ext2
ist auch
fsck.ext2
ein symbolischer Link auf
e2fsck
; Sie könnten eines der Programme auch direkt aufrufen, falls das
Front-End
fsck
nicht installiert ist.)
Die Benutzung von
fsck
ist recht einfach; der Befehl hat das Format:
wobei der
Typ
den Typ des zu reparierenden Dateisystems bezeichnet, wie er in Tabelle
4--1
erscheint, und die
Gerätedatei
das Gerät (Partition oder Floppy) bezeichnet, auf dem das Dateisystem
lebt.
Wenn wir z.B. das
ext2
-Dateisystem auf
/dev/hda2
überprüfen wollen, geben wir ein:
Beachten Sie zunächst, daß die Prüfung eines aufgesetzten
Dateisystems ausdrücklich bestätigt werden muß. Falls
während der Ausführung von
fsck
in einem aufgesetzten Dateisystem Fehler gefunden und korrigiert werden,
müssen Sie das System neu booten. Das liegt daran, daß die
Änderungen, die
fsck
durchführt, eventuell nicht an das System zurückgemeldet werden, um
dem System den aktuellen Aufbau des Dateisystems mitzuteilen. Im allgemeinen
ist es keine gute Idee, aufgesetzte Dateisysteme zu prüfen.
Wie Sie sehen, wurden mehrere Probleme entdeckt und korrigiert; weil dieses
Dateisystem aufgesetzt war, werden wir aufgefordert, den Rechner neu zu
booten.
Wie können Sie aber Dateisysteme prüfen, während sie abgesetzt
sind? Außer dem Root-Dateisystem können Sie alle Dateisysteme vor
dem Aufruf von
fsck
einfach absetzen (
umount
). Das Root-Dateisystem läßt sich allerdings nicht absetzen. Eine
Möglichkeit, dieses Dateisystem im abgesetzten Zustand zu prüfen,
besteht darin, eine Kombination aus Boot- und Root-Diskette einzusetzen --
z.B. die Installationsdisketten aus Ihrer Linux-Distribution. Auf diese Weise
ist ein Root-Dateisystem auf der Diskette enthalten, während das
Root-Dateisystem auf der Festplatte für die Überprüfung
abgesetzt bleibt. In
»
Die Rettung in der Not
«
finden Sie weitere Details hierzu.
Eine andere Möglichkeit besteht darin, das Root-Dateisystem im Zustand
read-only zu mounten. Dazu benutzen Sie am LILO-Boot-Prompt die Option ro
(siehe auch den Abschnitt
»
Die Boot-Optionen festlegen
«
). Allerdings kann es sein, daß andere Teile Ihrer
Systemkonfiguration (z.B. die Programme, die beim Booten von
/etc/init
aus aufgerufen werden) auch schreibenden Zugriff auf das Root-Dateisystem
haben müssen. Mit der Option ro könnten solche Programme nicht
ausgeführt werden. Damit Sie das System mit der ro-Option für das
Root-Dateisystem booten können, könnten Sie auch im
Single-User-Modus booten (mit der Option single). Damit verhindern Sie
jegliche weitere Konfiguration des Systems während des Bootens -- Sie
können dann das Root-Dateisystem überprüfen und
anschließend das System ganz normal booten.
Damit das Root-Dateisystem als read-only aufgesetzt wird, können Sie
entweder die Boot-Option ro benutzen oder mit dem Befehl
rdev
das Read-only-Flag direkt im Kernel setzen.
Viele Linux-Systeme prüfen die Dateisysteme selbständig beim Booten.
Dazu wird in der Regel
fsck
von
/etc/rc.d/rc.S
aus aufgerufen (wir beschreiben
fsck
in
»
Dateisysteme prüfen und reparieren
«
). Wenn dies geschieht, wird Linux das Root-Dateisystem zunächst
als read-only mounten, es mit
fsck
prüfen, und dann mit:
wieder aufsetzen. Die Option
-o remount
bewirkt, daß das betreffende Dateisystem mit den neuen Parametern erneut
aufgesetzt wird (remount); in diesem Fall wird durch die Option
-w
(entspricht
-o rw
) das Dateisystem als read-write aufgesetzt. Das Ergebnis dieser Operation ist
ein Root-Dateisystem mit Lese- und Schreibzugriff.
Wenn
fsck
während des Bootens aufgerufen wird, prüft es alle Dateisysteme
außer Root, bevor diese aufgesetzt werden. Sobald
fsck
beendet ist, werden mit
mount
die anderen Dateisysteme aufgesetzt. In den Dateien unter
/etc/rc.d
, insbesondere
rc.S
(sofern vorhanden) können Sie nachvollziehen, wie das geschieht. Wenn Sie
diesen Schritt auf Ihrem System unterbinden wollen, sollten Sie in den
entsprechenden Dateien in
/etc/rc.d
die Zeilen auskommentieren, in denen
fsck
aufgerufen wird.
Es gibt mehrere Optionen, die Sie mit dem dateisystemspezifischen
fsck
angeben können. Die meisten Typen kennen die Option
-a
, die automatisch alle Aufforderungen bestätigt, welche von
fsck.typ
eventuell ausgegeben werden; die Option
-c
, die die Suche nach defekten Blöcken einschaltet (wie bei
mkfs
); und die Option
-v
, die während der Überprüfung ausführliche Meldungen
ausgibt.
Sie sollten diese Optionen hinter dem Argument
-ttyp
angeben, etwa so:
um
fsck
mit ausführlichen Meldungen aufzurufen.
In den Man-Pages zu
fsck
und
e2fsck
finden Sie weitere Details.
Es gibt nicht für alle Dateisystemtypen, die von Linux unterstützt
werden, eine
fsck
-Version. Wenn Sie MS-DOS-Dateisysteme prüfen und reparieren wollen,
sollten Sie dazu eines der DOS-Programme wie z.B. die Norton Utilities
benutzen. Auf jeden Fall sollte Ihr System Versionen von
fsck
für die Dateisysteme Second Extended, Minix und Xia enthalten.
Weiter unten in diesem Kapitel, im Abschnitt
»
Die Rettung in der Not
«
, werden wir noch einmal auf die Themen »Prüfung eines
Dateisystems« und »Rettung aus der Not« eingehen.
fsck
kann auf keinen Fall alle Fehler in Ihren Dateisystemen finden und reparieren,
aber es sollte mit den häufigsten Problemen zurechtkommen. Es gibt zur
Zeit keine einfache Methode, eine wichtige Datei wiederherzustellen, die Sie
gelöscht haben --
fsck
ist dazu nicht geeignet. Es wird gerade an einem »undelete«-Utility
für das Second Extended-Dateisystem gearbeitet. Sichern Sie also Ihr
System, oder benutzen Sie
rm -i
, damit Linux vor dem Löschen noch einmal nachfragt.
sync
mount: wrong fs type, /dev/cdrom already mounted, /mnt busy, or other error
rutabaga# mount
/dev/hda2 on / type ext2 (rw)
/dev/hda3 on /msdos type msdos (rw)
/dev/cdrom on /cdrom type iso9660 (ro)
/proc on /proc type proc (rw,none)
mount: /dev/cdrom is not a valid block device
gerät mount-point typ optionen
# device directory type options
/dev/hda2 / ext2 defaults
/dev/hda3 /msdos msdos defaults
/dev/cdrom /cdrom iso9660 ro
/proc /proc proc none
/dev/hda1 none swap sw
/dev/cdrom /cdrom iso9660 ro,user
mount /cdrom
VFS: Unable to mount root fs
Dateisysteme erzeugen
mkfs -t typ gerätedatei blöcke
mkfs -t ext2 /dev/fd0 1440
rutabaga# fdformat /dev/fd0
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
mkfs -t typ -c gerätedatei blöcke
Dateisysteme prüfen und reparieren
fsck -t typ gerätedatei
rutabaga# fsck -t ext2 /dev/hda2
Parallelizing fsck version 0.5a (5-Apr-94)
e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
/dev/hda2 is mounted. Do you really want to continue (y/n)? yes
/dev/hda2 has reached maximal mount count, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Check reference counts.
Pass 5: Checking group summary information.
Free blocks count wrong for group 3 (3331, counted=3396). FIXED
Free blocks count wrong for group 4 (1983, counted=2597). FIXED
Free blocks count wrong (29643, counted=30341). FIXED
Inode bitmap differences: -8280. FIXED
Free inodes count wrong for group #4 (1405, counted=1406). FIXED
Free inodes count wrong (34522, counted=34523). FIXED
/dev/hda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/hda2: ***** REBOOT LINUX *****
/dev/hda2: 13285/47808 files, 160875/191216 blocks
mount -w -o remount /
fsck -t typ -v gerätedatei
Fußnoten
Vorherige
Abschnitt
Nächste Abschnitt