next up previous contents index
Next: Das Dateisystem einrichten Up: Durchführung Previous: Booten

Die Festplatte partitionieren

 

Die erste große Aufgabe bei jeder Linux-Installation ist die Partitionierung der Festplatte und die Einrichtung eines Linux-Dateisystems auf den dafür vorgesehenen Partitionen. Weil dieser Schritt einen tiefen Eingriff in ein bestehendes System bedeutet, ist er im folgenden Abschnitt sehr ausführlich beschrieben.

GANZ WICHTIG!!

Jede Veränderung an einer Festplatte, die schon Daten enthält (z. B. eine MS-DOS Installation), kann zum Verlust der Daten führen!! Deshalb sollte vor jeder Veränderung an den Partitionstabellen ein Backup aller Daten gemacht werden.

Hintergrundinformation

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 ädressiert'' 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ïst 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:

  1. können manche Betriebssysteme nur relativ kleine Festplatten in einem Stück verwalten,
  2. können sich verschiedene Betriebssysteme eine Festplatte teilen, indem jedes eine eigene Partition erhält,
  3. läßt sich der Datenbestand auf der Festplatte besser strukturieren,
  4. erhöht sich die Datensicherheit, weil von einem Plattenfehler oft nur eine Partition betroffen wird.

Die Partitionstabelle

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.

Benutzung von fdisk

Das fdisk-Programm von Linux dient zur Erstellung von Linux-Partitionen auf Festplatten. Um DOS Partitionen einzurichten, sollte das gleichnamige Programm für DOS verwendet werden.

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.

Das unit-Kommando ändert die Einheiten, in denen die Partitionstabelle angezeigt und bearbeitet wird. Das Kommando schaltet zwischen Sektoren und Zylindern als Einheit um. Weil MS-DOS die Partitionen auf kompletten Zylindern erwartet, ist es sinnvoll, mit der (voreingestellten) Zylindereinheit zu arbeiten.

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.

Wenn mehr als eine Möglichkeit zum Anlegen einer neuen Partition existiert, wird gefragt, ob eine primäre, erweiterte oder logische Partition angelegt werden soll. Wenn eine primäre oder die erweiterte Partition angelegt werden soll, muß eine freie Partitionsnummer im Bereich 1-4 gewählt werden.

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 Bedeutung des Boot-Flags

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.

Die Bedeutung des Partitionstyps

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 ßeine'' 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 ëxtended'' (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            40  Venix           94  Amoeba BBT
       1  DOS 12-bit FAT   51  Novell?         b7  BSDI fs
       2  XENIX root       52  Microport       b8  BSDI swap
       3  XENIX user       63  GNU HURD        c7  Syrinx
       4  DOS 16-bit <32M  64  Novell          db  CP/M
       5  Extended         75  PC/IX           e1  DOS access
       6  DOS 16-bit >=32  80  Old MINIX       e3  DOS R/O
       7  OS/2 HPFS        81  Linux/MINIX     f2  DOS secondary
       8  AIX              82  Linux swap      ff  BBT
       9  AIX bootable     83  Linux native
       a  OPUS             93  Amoeba

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ßu 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.



next up previous contents index
Next: Das Dateisystem einrichten Up: Durchführung Previous: Booten



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller