Next: Softwaremanagement
Up: Systemverwaltung
Previous: Benutzer eintragen
Die Installation eine Linux-Systems geschieht in den seltensten Fällen zum Selbstzweck. Nach der Erstinstallation beginnt eine mehr oder weniger intensive Benutzung des Systems. Damit ist eine stetige Veränderung des Dateisystems verbunden: die Benutzer legen eigene Daten darin ab, die Anforderungen an das System erfordern die Installation zusätzlicher Programme, Mail und News drohen, den Rest des freien Festplattenplatzes aufzufüllen. In jedem Fall füllt sich jede noch so große Festplattenpartition nach und nach mit Daten. Früher oder später erfordern diese ``Abnutzungserscheinungen'' administrative Eingriffe in die bestehende Struktur des Dateisystems.
Wenn der Plattenplatz knapp wird, gibt es für die Systemverwalterin mehrere Möglichkeiten zu reagieren. Zuerst können überflüssige Daten gelöscht und selten benötigte Daten komprimiert werden. Wenn die Heimatverzeichnisse der Benutzer die gesamten Ressourcen verschlingen, kann das Problem durch Einrichtung von Disk-Quotas eingeschränkt werden. Schließlich kann das Dateisystem vergrößert werden, um den erweiterten Anforderungen gerecht zu werden.
Es gibt verschiedene Möglichkeiten, ein Dateisystem zu vergrößern:
Beim PC muß eine Festplatte immer in Partitionen eingeteilt werden. Wenn Sie für die Erstinstallation oder zur Erweiterung Ihres Systems eine leere Festplatte benutzen, ist die Partitionierung unproblematisch. Wenn Sie jedoch die Partitionen einer bereits teilweise belegten Festplatte ändern wollen, müssen Sie unbedingt alle Daten der existierenden Installation auf einem anderen Medium sichern. Bei jeder Veränderung der bestehenden Partitionierung gehen mit sehr hoher Wahrscheinlichkeit die bisher auf der Festplatte gespeicherten Daten verloren.
Eine Festplatte besteht aus mehreren speziell beschichteten Aluminiumscheiben. Die Beschichtung kann magnetisiert werden und dadurch Daten speichern, ganz ähnlich wie ein Tonband Musik speichert. Zum Schreiben und Lesen gibt es die Schreib/Leseköpfe (oder einfach Köpfe), für jede beschichtete Scheibenseite einen. Diese Köpfe sind alle zusammen an einem Arm befestigt, der alle gemeinsam (in radialer Richtung) auf den Scheiben bewegen kann. Die Bewegung erfolgt in sehr genau bestimmten Schritten. Bei jedem Schritt erreicht jeder Kopf eine Spur der Scheibe. Die Gesamtheit aller Spuren, die von den parallelen Köpfen überstrichen wird, heißt Zylinder.
Um einen möglichst schnellen und direkten Zugriff auf die Daten zu ermöglichen, werden die Spuren nicht kontinuierlich beschrieben. Der Festplattencontroller richtet beim Formatieren Sektoren ein, in denen jeweils 512 Bytes Platz haben. Diese Sektoren können einzeln ``adressiert'' werden, das bedeutet, daß jeder Sektor einzeln gelesen und beschrieben werden kann. Die Betriebssysteme verwalten aber in der Regel immer zwei Sektoren gemeinsam als einen Block von 1024 Bytes.
Die konkrete ``Plattengeometrie'' ist herstellerabhängig. Bei den meisten Festplatten werden die Daten im Setupmenü eingegeben und im CMOS gespeichert. Bei den SCSI-Festplatten übernimmt der Hostadapter die unteren Ebenen der Gerätesteuerung, deshalb müssen diese Platten nicht im CMOS des Rechners eingetragen werden.
Aus verschiedenen Gründen ist es sinnvoll, die gesamte Kapazität einer Festplatte in verschiedene Partitionen zu unterteilen:Die Einteilung der Festplatte in Partitionen ist nicht an irgendwelche physikalischen Gegebenheiten gebunden, sondern wird allein durch die Vereinbarung in der Partitionstabelle festgelegt. Wenn Sie sich an ein paar Regeln halten, wird die Partitionstabelle von allen PC-Betriebssystemen akzeptiert.
Der erste Sektor der Festplatte ist der primäre Bootsektor. In diesem Sektor kann eine Partitionstabelle für höchstens vier Partitionen angelegt werden. Diese Partitionen heißen primäre Partitionen. Anstelle einer primären Partition kann in dem primären Bootsektor auch (genau) eine erweiterte Partition definiert werden, die den gesamten Plattenplatz enthält, der keiner primären Partition zugeordnet ist. In der erweiterten Partition können weitere logische Partitionen eingerichtet werden, die im Prinzip genauso aufgebaut sind wie die primären Partitionen, mit dem Unterschied, daß nur von den primären Partitionen direkt gebootet werden kann. Mit einem Hilfsprogramm wie dem Linux Loader (LILO) kann das Betriebssystem von beliebigen Partitionen, auch auf anderen Festplatten, gebootet werden, allerdings muß LILO selbst immer auf einer primären Partition der ersten Festplatte installiert werden (möglicherweise auch auf der erweiterten Partition). Weitere Hinweise dazu finden sich in der Dokumentation, die mit dem LILO-Paket verteilt wird.
Um bei der geteilten Nutzung der Festplatte durch mehrere Betriebssysteme Fehlinterpretationen der Partitionstabelle zu vermeiden, sollten Sie die Partitionsgrenzen immer auf Zylindergrenzen legen. Wenn Sie die Standardeinstellung von unit bei fdisk nicht verändern, werden die Partitionsgrenzen automatisch auf Zylindergrenzen gelegt.
Wenn fdisk ohne Parameter aufgerufen wird, bearbeitet es die Partitionstabelle der ersten Festplatte, das ist /dev/hda. Um die zweite Festplatte, /dev/hdb, zu partitionieren, muß das Programm als `fdisk /dev/hdb' aufgerufen werden. Die erste SCSI Platte wird entsprechend als `/dev/sda' angesprochen.
Wenn es korrekt aufgerufen wurde, meldet sich fdisk mit dem Prompt:
Command (m for help): _
fdisk erwartet einen einzelnen Buchstaben gefolgt von einem RETURN als Kommando. Das Kommando `m' zeigt folgendes Menü:
Command action
a toggle a bootable flag
c toggle the dos compatiblity flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality
Das print-Kommando zeigt die aktuelle Partitionstabelle an. Eine
typische Anzeige sieht beispielsweise so aus:
Disk /dev/hda: 15 heads, 17 sectors, 1001 cylinders
Units = cylinders of 255 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 402 51246+ 6 DOS 16-bit >=32M
/dev/hda2 * 403 403 550 18870 81 Linux/MINIX
/dev/hda3 551 551 920 47175 83 Linux native
/dev/hda4 921 921 1001 10327+ 82 Linux swap
In diesem Beispiel werden 4 Partitionen angezeigt. Es sind vier
Primärpartitionen angelegt. Von den Partitionen hda2 kann gebootet
werden.
Die Anzeige in Sektoren soll trotzdem am gleichen Beispiel gezeigt werden:
Disk /dev/hda: 15 heads, 17 sectors, 1001 cylinders
Units = sectors of 1 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 17 102509 51246+ 6 DOS 16-bit >=32M
/dev/hda2 * 102510 102510 140249 18870 81 Linux/MINIX
/dev/hda3 140250 140250 234599 47175 83 Linux native
/dev/hda4 234600 234600 255254 10327+ 82 Linux swap
Der Beginn einer Partition muß nicht mit dem Start des Datenbereichs übereinstimmen, wie das Beispiel der MS-DOS Partition zeigt, bei der die ersten Sektoren für Verwaltungsdaten freigehalten werden. Das Linux-fdisk setzt den Start des Datenbereichs normalerweise auf den Partitionsbeginn.
Die auf die Partitionsgröße folgenden `+' Zeichen markieren Partitionen mit ungerader Sektorzahl. Weil Linux immer Blocks zu zwei Sektoren, also immer mindestens 1024 Bytes belegt, bleibt auf diesen Partitionen ein Sektor ungenutzt.
Das verify-Kommando überprüft die Partitionstabelle auf Fehler und gibt die Anzahl der nicht belegten Sektoren aus.
Das quit-Kommando beendet fdisk. Die Veränderungen an der Partitionstabelle werden nicht automatisch geschrieben. Eine Veränderung an der Partitionstabelle wird erst durch ein write-Kommando auf der Festplatte gesichert. Es ist möglich, fdisk zu jedem Zeitpunkt mit CTRL-C zu unterbrechen.
Das delete-Kommando löscht eine Partition aus der Partitionstabelle. Die von dieser Partition belegten Sektoren werden freigegeben. Alle auf diesen Sektoren gespeicherten Daten gehen dabei normalerweise verloren. Das delete-Kommando fragt nach der Partitionsnummer, die es löschen soll. Soll doch lieber keine Partition gelöscht werden, kann fdisk mit CONTROL-C beendet werden.
Wenn eine nicht existierende Partition angegeben wird, erscheint eine Fehlermeldung. Wenn die erweiterte Partition gelöscht wird, verschwinden automatisch alle logischen Partitionen auf der erweiterten Partition mit.
Wenn eine logische Partition gelöscht wird, werden alle darüberliegenden logischen Partitionen sofort neu numeriert, so daß alle logischen Partitionen immer fortlaufende Nummern haben.
Das new (add) Kommando erlaubt das Anlegen einer neuen Partition. Voraussetzung zum Anlegen einer neuen Partition ist natürlich, daß noch freie Sektoren existieren.
Nun muß der Beginn der neuen Partition angegeben werden. Dazu erscheint beispielsweise folgende Meldung:
First cylinder (403-1001): _Die Zahlen bezeichnen den ersten und den letzten freien Zylinder. Es müssen nicht alle Zylinder in dem angegebenen Bereich frei sein, weil innerhalb des Bereichs noch eine komplette andere Partition liegen kann. Die Angabe eines bereits belegten Zylinders wird einfach abgelehnt, und es wird erneut nach dem ersten Zylinder der neuen Partition gefragt.
Wenn ein gültiger Zylinder für den Beginn der Partition bestimmt ist, wird nach dem letzten Zylinder gefragt:
Last cylinder (403-1001): _Hierbei sind alle Zylinder in dem angegebenen Bereich erlaubt.
Wenn nicht alle freien Zylinder belegt worden sind, kann das Kommando erneut aufgerufen werden.
Bevor die veränderte Partitionstabelle gesichert wird, sollte auf jeden Fall das verify-Kommando aufgerufen werden.
Die veränderte Partitionstabelle wird in jedem Fall nur durch ein ausdrückliches write-Kommando auf die Festplatte geschrieben. In diesem Fall erscheint die Aufforderung, den Rechner neu zu starten:
The partition table has been altered. Please reboot before doing anything else.Es ist ohne Problem möglich, fdisk sofort wieder zu starten, um weitere Veränderungen an der Partitionierung vorzunehmen.
ACHTUNG! Es darf auf keinen Fall eines der Programme mkfs, mkswap, mount oder swapon aufgerufen werden, bevor der Rechner neu gestartet wurde!
Die meisten modernen Rechner haben ihr Betriebssystem nicht mehr in permanenten Speicherbausteinen auf der Hauptplatine, sondern laden erst nach dem Einschalten ein Betriebssystem in den Arbeitsspeicher. Und selbst dieser Ladevorgang findet nicht auf eine ganz bestimmte Art und Weise statt, sondern wird von einem Bootprogramm ausgeführt. Einzig der Aufruf dieses Bootprogramms ist durch das BIOS festgelegt:
Wenn es nicht ausdrücklich im BIOS-Setup anders bestimmt ist, wird im ersten Diskettenlaufwerk nach einer Diskette gesucht. Auf dieser Diskette wird aus dem ersten Sektor (in dem sich auch die Partitionstabelle befindet) das Bootprogramm geladen und ausgeführt.
Wenn keine Diskette im Laufwerk ist, wird das Bootprogramm aus dem Bootsektor (Master Boot Record) der ersten Festplatte ausgeführt. Es gibt verschiedene solcher Bootprogramme. Einige dieser Programme werten die Boot-Flags aus der Partitionstabelle aus, um zu bestimmen, von welcher Partition das Betriebssystem geladen werden soll.
Das Boot-Flag ist ein einzelnes Bit für jede Partition. Ist dieses Bit gesetzt, kann von dieser Partition ein Betriebssystem geladen werden.
Das MS-DOS Bootprogramm erwartet genau ein gesetztes Boot-Flag. LILO als primärer Bootloader ignoriert die Bootflags. Andere Bootmanager erlauben mehrere gesetzte Bootflags.
Um den verschiedenen Betriebssystemen die Möglichkeit zu geben, Partitionen anderer Formate zu erkennen, werden die Partitionen mit Kennzahlen (ID) versehen. Linux selbst kümmert sich nicht wirklich um die Partitionskennung, schließlich kann Linux mit einer Vielzahl fremder Dateisysteme gut umgehen. Der Kernel prüft beim Mounten eines Dateisystems immer die für das jeweilige Dateisystem typische magische Zahl und erkennt so, ob es sich um ein gültiges Dateisystem eines bestimmten Typs handelt.
Andere Betriebssysteme sind da viel weniger flexibel. In der Regel ordnet jeder Hersteller seinem Betriebssystem eine bestimmte Kennzahl für den Partitionstyp zu, mit der das Betriebssystem ``seine'' Partitionen markieren und erkennen kann. fdisk kann z.Zt. 30 Kennzahlen bestimmten Betriebssystemen zuordnen. Es ist aber auch - mit ein paar Ausnahmen - möglich, beliebige andere ID's zu setzen.
Es ist nicht möglich, eine Partition vom oder nach dem Typ ``extended'' (5) zu ändern. Es ist nicht möglich, einer leeren Partition (Typ 0) irgendeinen anderen Typ zu geben. Einer Partition den Typ 0 zuzuordnen, heißt sie zu löschen.
Die Typ-ID wird als hexadezimale Zahl angegeben. Die folgenden Typen werden erkannt:
0 Empty 9 AIX bootable 75 PC/IX b7 BSDI fs 1 DOS 12-bit FAT a OS/2 Boot Manag 80 Old MINIX b8 BSDI swap 2 XENIX root 40 Venix 80286 81 Linux/MINIX c7 Syrinx 3 XENIX usr 51 Novell? 82 Linux swap db CP/M 4 DOS 16-bit <32M 52 Microport 83 Linux native e1 DOS access 5 Extended 63 GNU HURD 93 Amoeba e3 DOS R/O 6 DOS 16-bit >=32 64 Novell Netware 94 Amoeba BBT f2 DOS secondary 7 OS/2 HPFS 65 Novell Netware a5 BSD/386 ff BBT 8 AIX
Voreinstellung für neue Linux-Partitionen ist `83' für das Linux-Dateisystem. Diese Kennzahl ermöglicht es den anderen aufgeführten Betriebssystemen, die Linux-Partitionen als ``fremd'' zu erkennen.
Die ID 83 führt beim DR-DOS zu Problemen. Wenn eine Festplatte von Linux und DR-DOS gemeinsam genutzt werden soll, ist es sinnvoll, anstelle der 81 bzw. 83 als Partitionskennziffer die 42 oder 43 als Linux-ID zu verwenden.
Das Dateisystem präsentiert sich dem Benutzer als ein Verzeichnisbaum mit einer Menge verschiedener Dateien. Um diese Daten in der gewohnten Form zu organisieren, benötigt das Betriebssystem eine Grundstruktur auf dem Datenträger, in der es die Dateien einordnen kann. Diese Grundstruktur wird ebenfalls als Dateisystem bezeichnet, wenngleich es unmittelbar nach seiner Erzeugung noch keine echten Dateien sondern nur das Potential zur Aufnahme derselben enthält.
Diese Doppelbelegung des Begriffes erfordert manchmal etwas Überlegung, um den Sinn aus dem Zusammenhang zu erkennen. In diesem Abschnitt geht es um die Grundstruktur, das ``kleine'' Dateisystem auf einer Partition. Der nächste Abschnitt behandelt dann die Zusammensetzung mehrerer keiner Dateisysteme zu dem großen Dateisystem.
Linux kann mit mehreren Dateisystemtypen umgehen, deren Grundstruktur jeweils unterschiedlich ist. In der Praxis hat sich für die Verwendung auf reinen Linux-Partitionen das sogenannte Zweite Erweiterte Dateisystem, Extended 2 (EXT2), durchgesetzt. Es zeichnet sich durch hohe Geschwindigkeit, Sicherheit und Freiraum für zukünftige Erweiterungen aus. Im Anhang dieses Buches finden Sie eine ausführliche Beschreibung der Arbeitsweise von Dateisystemen allgemein und einen Vergleich der für Linux-Partitionen relevanten Typen.Bei der Installation eines neuen Linux-Systems wird von den Installationsprozeduren immer das EXT2-Dateisystem erzeugt. Mit dem Systemprogramm mke2fs kann das EXT2-Dateisystem auch unabhängig von einem Installationsprogramm auf jeder Festplattenpartition eingerichtet werden. Die von mke2fs erzeugte Grundstruktur ist zu Beginn immer leer. Es gehen durch die Einrichtung eines neuen Dateisystems unbedingt alle bisher auf einer Parition gespeicherten Daten verloren.
Linux organisiert alle Dateien auf Festplatten, Disketten, CDs und verwandten Medien in einem einzigen hierarchischen Dateisystem. Egal ob die Verzeichnisse auf der Linux-Partition einer lokalen Festplatte, auf einer DOS-Partition oder auf einem NFS-Server beheimatet sind, aus der Sicht des Benutzers werden alle Dateien auf einheitliche Weise präsentiert.
Um dieses homogene Bild zu erhalten, muß die Systemverwalterin die auf unterschiedlichen Medien (Festplattenpartitionen, CDs, NFS-Server) befindlichen Daten in geeigneter Form zusammenführen. Dazu werden die einzelnen Verzeichnisbäume auf den Medien zu einem einzigen, großen Dateisystem zusammengesetzt. Das Werkzeug, mit dem das Dateisystem zusammengebaut werden kann, ist das Systemprogramm mount, um es wieder auseinanderzunehmen dient das Programm umount.
Ein typisches Beispiel für ein Kommando zum Einhängen einer Partition in das Dateisystem zeigt die Benutzung von mount:
[01] # mount -t ext2 -o grpquota /dev/hdb1 /usr/src [02] # _Durch das Kommando wird die erste Partition der zweiten Festplatte am ersten IDE Controller, /dev/hdb1, auf dem Verzeichnis /usr/src gemountet. Durch die Option -t wird der Typ des Dateisystems festgelegt, in diesem Fall ext2. Mit der Option -o wird dem Kerneltreiber beim Mounten des Dateisystems ein Schlüsselwort übergeben, in diesem Fall grpquota, das den Treiber veranlaßt, die Quotierung des Plattenplatzes auf der Basis von Gruppenzugehörigkeit abzurechnen.
Mit der Kernelversion 2.0 unterstützt Linux 16 verschiedene Dateisystemtypen.
Ähnlich wie die Gerätetreiber, die durch Bootoptionen beeinflußt werden können, sind auch bestimmte Eigenschaften der Dateisysteme durch zusätzliche Optionen beim Mounten einer Partition oder eines Gerätes veränderbar.
Wie in dem Beispiel oben gezeigt, werden diese Optionen als Argument mit dem Schalter -o auf der Kommandozeile von mount angegeben. Es können mehrere Optionen durch Kommata getrennt zu einer Liste zusammengefügt werden. Die meisten Optionen können auch als feste Vorgabe für ein Dateisystem in der Datei /etc/fstab eingetragen werden. Zur Vereinfachung der Darstellung werden in dieser Liste auch Optionen aufgeführt, die entweder nur bei der interaktiven Benutzung von mount oder nur als Vorgabe in der fstab sinnvoll sind.
Einige der optionalen Veränderungen der Dateisystemparameter betreffen allgemeine Eigenschaften, die bei jedem der unterstützten Typen zu finden sind. Diese Optionen können also beim Mounten jedes Dateisystems angegeben werden.
Einige Dateisysteme haben spezielle Features, die durch zusätzliche Optionen beeinflußt werden können. In diesem Abschnitt werden zunächst Optionen beschrieben, die von mehreren Dateisystemtypen unterstützt werden. In den darauffolgenden Abschnitten werden jeweils die speziellen Optionen für die einzelnen Typen behandelt.
Unter dem Sammelbegriff FAT-Dateisysteme werden die von DOS, Windows95 und Windows-NT benutzten Dateisysteme mit File Allocation Table zusammengefaßt. Linux unterstützt diese Filesysteme in verschiedenen Variationen mit den Typen msdos, umsdos und vfat.
Wegen der gemeinsamen Grundstruktur teilen sich diese drei Typen folgende Optionen:
Speziell für den Dateisystemtyp vfat gibt es noch drei zusätzliche Optionen:
Die mit den Linux-Distributionen zur Zeit ausgelieferte Version von mount unterstützt nur das NFS. Für Samba gibt es ein spezielles Programm, smbmount.
Beide Varianten verstehen eine Vielzahl von Argumenten, aus denen sie eine spezielle Datenstruktur generieren, die sie dem Treiber für das entsprechende Dateisystem übergeben. In der folgenden Liste werden die wichtigsten dieser Optionen aufgeführt, eine vollständige Erklärung aller Einstellungen finden Sie in den Manualpages zu nfs(5).
Die Einträge haben folgende Form:
Die sechs Felder werden durch Leerzeichen voneinander getrennt, Kommentare werden durch das Nummernzeichen # eingeleitet.
Wenn der Rechner unkontrolliert ausgeschaltet wurde, oder wenn es zu einem Systemabsturz gekommen ist, muß damit gerechnet werden, daß sich das Dateisystem in einem inkonsistenten Zustand befindet.
Fehler im Dateisystem können auftreten, weil die Schreiboperationen durch den Festplattencache im Arbeitsspeicher gepuffert werden und diese Daten beim Abschalten des Rechners verloren gehen. Andere Fehler entstehen, wenn das System mitten in einer ungepufferten Schreiboperation seinen Dienst aufgibt.
Anlegen, Erweitern und Löschen von Dateien sind keine einfachen Abläufe, die in einem ``atomaren'' Schritt durchgeführt werden können. Alloziierung einer I-Node, Eintrag des Dateinamens, Alloziierung der Datenblöcke und Beschreiben der Blöcke mit Daten sind einzelne Abschnitte des Prozesses, die mit mehr oder weniger langen Unterbrechungen nacheinander ausgeführt werden, um das Ziel zu erreichen.
Die meisten bei einem Systemabsturz entstehenden Fehler betreffen die Daten in den Dateien, die bis zum Abschalten des Rechners nicht ordentlich geschlossen wurden. Die Reparatur dieser Daten kann nur von den Programmen oder Usern vorgenommen werden, die diese Dateien angelegt haben.
Es können aber auch Fehler in der Struktur des Dateisystems entstehen, die durch geeignete Programme erkannt und repariert werden können. Bei dem am häufigsten benutzten Dateisystem für Linux, dem ext2fs, können beispielsweise folgende Fehler behoben werden:
Nicht alle Reparaturen können ganz ohne Datenverlust vorgenommen werden, das Dateisystem kann aber in der Regel wieder in einen konsistenten Zustand gebracht werden. Wenn beim File-System-Check eine Datei gefunden wird, die in keinem Verzeichnis eingetragen ist, wird sie automatisch in das Verzeichnis ./lost+found mit der Nummer der I-Node eingetragen.
Wenn das System nicht korrekt heruntergefahren wurde, erkennt das System das beim nächsten Booten am Status des Ext2-Dateisystems. Bei einem ordentlichen Systemabschluß werden die Dateisysteme abgebaut und dabei das Valid-Flag im Superblock gesetzt. Beim Booten kann diese Information aus dem Superblock genutzt werden, um die möglicherweise fehlerhaften Dateisysteme automatisch während der Systeminitialisierung testen und nötigenfalls reparieren zu lassen.
Bei allen Linux-Distributionen enthalten die Shellscripts zur Systeminitialisierung, die von dem Programm init nach dem Booten ausgeführt werden, die notwendigen Kommandos zur Durchführung eines File-System-Check.
Jedes der unter Linux verwendeten Dateisysteme benötigt sein spezielles Programm für den File-System-Check. Zu diesem Zweck existieren die Systemprogramme fsck.minix, fsck.ext2 und fsck.xiafs. Das Programm fsck arbeitet als Front-End für alle File-System-Checker und ermöglicht es, mit einem einzigen Aufruf alle Dateisysteme gemeinsam zu prüfen.
Wenn Sie die Konsistenz eines Dateisystems prüfen wollen, müssen Sie damit nicht bis zum nächsten Booten warten. Sie können die Programme zum File-System-Check zu jedem beliebigen Zeitpunkt aufrufen. Sollte ein Dateisystem allerdings Fehler enthalten, darf die Reparatur nur auf einem Dateisystem durchgeführt werden, auf das der Kernel keinen Schreibzugriff hat. Diese Einschränkung ist notwendig, damit sich Kernel und Reparaturprogramm bei der Veränderung des Dateisystems nicht in die Quere kommen. Auch aus diesem Grund bietet sich der automatische Test vor dem Zusammenbau des Dateisystems beim Booten an.Der Linux-Kernel kann das Rootfilesystem beim Booten im Read-Only mounten. Dazu muß ein entsprechendes Flag in der Kerneldatei gesetzt sein (rdev) oder es muß die entsprechende Option vom LILO-Bootloader übergeben werden.
Wenn Sie das System im Single-User-Mode starten, können Sie die Schreibberechtigung für das Rootfilesystem auch ``von Hand'' ändern. Das Systemprogramm mount ermöglicht dieses remount zum Ändern der Optionen.
Die Kommandos zum Wechseln des Schreib-Lese-Status sehen folgendermaßen aus:
# mount -n -o remount,ro / # touch /foo touch: foo: Permission denied # mount -n -o remount,rw / # _
Um das Kommando zum Löschen der Schreibberechtigung ausführen zu können, darf kein Prozeß eine Datei im Rootfilesystem zum Schreiben geöffnet haben. Sie müssen also, notfalls mit kill, alle Programme beenden, die noch offene Dateien haben. In der Regel sind das Dämonen wie syslogd, lpd oder crond. Beim kmem-ps gibt es das Programm fstat, das dabei helfen kann, die problematischen Prozesse zu identifizieren.
Auch wenn das Rootfilesystem Read-Only gemountet ist, bleibt ein Teufelskreis bei dessen Reparatur erhalten: die Programme zum Reparieren werden von dem eventuell defekten Dateisystem geladen.
Um dieses Problem zu umgehen, können Sie ein Minimalsystem von Diskette laden, wie es als ``Rescue-System'' von einigen Linux-Distributionen angeboten wird. Nachdem das System mit einer ,,bootable Rootdisk`` gestartet ist, kann dann das Rootfilesystem auf der Festplatte von außen repariert werden.
Das Linux Anwenderhandbuch