Das Partitionieren von Festplatten gilt unter Linux immer noch als schwierige Aufgabe für Anfänger und lästige für fortgeschrittene Anwender. Grund genug, sich einmal mit dem relativ neuen Partitionseditor Parted auseinander zu setzen.
Wenn wir von Partitionen reden, geht es (meist) um einzeln verwaltete Teile einer Festplatte. Jede Partition ist für sich unabhängig von anderen Teilen der Festplatte. Das ist besonders dann interessant, wenn Sie mehrere Betriebssysteme verwenden wollen – jedes System ruht dann auf seiner eigenen Partition und stört sich in aller Regel nicht an den anderen, als hätten Sie mehrere Festplatten eingebaut.
Es gibt für die Zahl der Partitionen und ihre Anordnung jedoch Beschränkungen. So darf jede Festplatte maximal vier Partitionen besitzen. Benötigen Sie mehr, müssen Sie eine der vier Partitionen als erweiterte (extended) Partition anlegen und können diese in logische Partitionen aufteilen. Die vier eigentlichen Partitionen werden auch als “primäre Partitionen” bezeichnet und unterscheiden sich von den logischen darin, dass man von ihnen booten kann. Auch können logische Partitionen nur innerhalb einer erweiterten Partition vorkommen.
Insgesamt dürfen Sie nur eine einzige erweiterte Partition pro Festplatte anlegen, diese kann maximal 59 logische Partitionen enthalten – das macht mit den vier primären zusammen 63 Partitionen pro Festplatte. Linux numeriert die Partitionen einfach durch, indem die sogenannte “Minor Device Number” an den Festplattennamen angehängt wird. Die vier primären Partitionen auf der ersten Festplatte am ersten IDE-Controller (also /dev/hda) werden mit /dev/hda1 bis /dev/hda4 fest benannt. Ab /dev/hda5 handelt es sich um logische Partitionen, wobei diese stets aufgerückt werden. Als Beispiel: Haben Sie die logischen Partitionen /dev/hda5, hda6 und hda7 belegt und löschen nun hda5, so werden hda6 und hda7 um eins aufgerückt, es gibt also keine Lücke. Haben Sie hingegen die primären Partitionen hda1 bis hda3 belegt und löschen nun hda2, bleibt die Numerierung der übrigen Partitionen unverändert. Weil in der Praxis selten 63 Partitionen gebraucht werden, stehen im Standard-System nur die Minor Device Numbers 1 bis 15 zur Verfügung, weitere können Sie aber bei Bedarf anlegen.
Große und kleine Zahlen
Ein großes Mysterium insbesondere für Einsteiger sind die Major und Minor Device Numbers, die einem zum Beispiel im Verzeichnis /dev aber auch in der Datei /etc/conf.modules begegnen.
Unter Linux sind viele Namen wie Schall und Rauch, insbesondere die der Gerätedateien wie /dev/hda oder auch /dev/audio. Wenn Sie einmal ls -l /dev/audio eingeben, erhalten Sie folgende Zeile:
crw-rw-rw- 1 root root 14, 4 Jul 26 1998 /dev/audio
Ungewöhnlich an dieser Darstellung ist, dass ls im Feld Dateigröße “14, 4” angibt. Die “14” steht hierbei für die Major Device Number, die “4” ist die Minor Device Number der Gerätedatei /dev/audio. Auch der erste Buchstabe links, der Dateityp, unterscheidet sich von denen anderer Einträge – wie in der Tabelle “Dateitypen” abzulesen, handelt es sich bei /dev/audio um ein “Character Special File”.
Die Major Device Number sagt dem Kernel, welcher Gerätetreiber bei einem Zugriff auf eine Character-Datei mit dieser Nummer zuständig ist. An dieser Stelle kommen der automatische Modul-Lader des Kernels und die Datei /etc/conf.modules ins Spiel: Suchen Sie doch einmal mit dem Befehl grep "char-major-14" /etc/conf.modules alle Definitionen für die Character Major Device Number 14 heraus. Hier vier Beispiele:
alias char-major-14 off alias char-major-14 soundcore alias char-major-14 es1371 alias char-major-14 sb
Die Zeilen bedeuten, dass bei einem Zugriff auf eine Gerätedatei mit char-major-14 das dahinter stehende Kernel-Modul automatisch geladen werden muss, so es sich nicht bereits im Speicher befindet. Die Angabe “off” aus dem ersten Beispiel bedeutet, dass kein Modul geladen wird – der Treiber ist entweder im Kernel enthalten oder wird von Hand nachgeladen.
Achtung, der Typ einer Gerätedatei ist entscheidend, welcher Treiber Verwendung findet – ein “Block Special File” hat eine Block Major Device Number und wird von einem anderen Treiber bedient als ein “Character Special File” mit der gleichen Character Major Device Number.
Gibt die Major Device Number den zu verwendenden Treiber an, so kann der Treiber anhand der Minor Device Number erkennen, um welches Gerät es sich handeln soll oder ob eine besondere Behandlungsart gewünscht wird. So wird die Block Major Device Number 3 für /dev/hda und /dev/hdb verwendet. Anhand der Minor Device Number erkennt der zugehörige IDE-Treiber, dass mit 0 /dev/hda gemeint ist, und 1 bis 15 für die Partitionen hda1 bis hda15 steht. Die Nummer 64 spricht /dev/hdb an, und 65 bis 79 stehen für hdb1 bis hdb15.
Ein anderes Beispiel ist /dev/st0 mit “9, 0” und /dev/nst0 mit “9, 128”. Hinter beidem steckt der erste SCSI-Streamer, mit dem Unterschied, dass bei minor-128 das Band nicht nach jedem Zugriff zurückgespult wird.
Dass die Gerätenamen selbst für Linux keine Bewandnis haben, zeigt folgendes Beispiel, das Sie problemlos einmal ausprobieren können. Legen Sie als Benutzer root im Verzeichnis /tmp ein zweites Audio-Device an:
mknod /tmp/myaudio c 14 4
Nun können Sie mit cat /etc/conf.modules > /tmp/myaudio etwas Krach produzieren, wenn Sie zufällig eine au-Datei zur Hand haben, können Sie sich diese anhören. Mit rm /tmp/myaudio löschen Sie die neu angelegte Gerätedatei wieder.
Dateitypen
| Kürzel | Bezeichnung | Verwendung | Beispiel |
|---|---|---|---|
| – | regular | Normale Datei | track1.wav, /etc/passwd, /bin/bash |
| d | directory | Verzeichnis | /etc, /usr, /tmp |
| l | symbolic link | Symbolischer Link | /dev/cdrom, /usr/X11R6/bin/X |
| s | socket | Kommunikationstunnel, wird oft von Programmen zur Verständigung untereinander verwendet | /dev/log |
| c | character special | Gerätedatei, die zeichenweise gelesen oder beschrieben werden kann | /dev/ttyS0, /dev/nst0, /dev/audio |
| b | block special | Gerätedatei, die in Blöcken mit einer bestimmten Länge gelesen oder beschrieben werden kann | /dev/hda, /dev/fd0, /dev/sda |
| p | pipe special | Gerätedatei, aus der Daten in genau der Reihenfolge gelesen werden können, wie sie hineingeschrieben wurden | /dev/initctl |
Normalerweise formatieren Sie nicht Ihre Festplatte (was aber prinzipiell geht), sondern nur einzelne Partitionen, die ihrerseits natürlich die ganze Festplatte umfassen können. Dabei wird ein Dateisystem auf die Partition geschrieben, um überhaupt eine Verwaltung der Daten zu ermöglichen. Alle aktuellen Distributionen bieten während der Installation an, die Festplatte nach Gutdünken des Herstellers oder von Hand aufzuteilen (“partitionieren”) und anschließend das gewünschte Dateisystem aufzubringen – bei Linux meist ext2 (“Second Extended File System”) für die Daten und swap als Auslagerungs-Partition.
Unpraktisch ist dabei, dass Sie nach jeder Veränderung der Festplatten-Aufteilung die betroffenen Partitionen neu formatieren müssen und somit alle enthaltenen Daten verloren gehen. Es galt bisher, die Festplattenaufteilung so zu wählen, dass man sie für immer beibehalten kann. Doch gerade Einsteiger können schwer abschätzen, was die optimale Partitionierung für den heimischen PC ist, und auch Fortgeschrittene haben immer mal wieder mit der bei der Erstinstallation getroffenen Entscheidung zu ringen.
Hier setzt nun der Partitionseditor Parted von Andrew Clausen an. Er bietet umfangreiche Möglichkeiten, die drei gebräuchlichsten Partitionstypen Linux-native, Linux-swap und FAT/VFAT neu einzurichten, sie zu testen, zu löschen, Dateisysteme zwischen verschiedenen Partitionen umzukopieren und einiges mehr.
Tabelle 1: Features von Parted im Überblick
| Linux-native | Linux-swap | FAT/VFAT | |
| Partitionen anlegen | ja | ja | ja |
| Partitionen löschen | ja | ja | ja |
| Partitionen prüfen | ja, aber besser e2fsck verwenden |
ja | ja |
| Partitionen kopieren | nur in gleich große oder größere Partitionen | ja | ja |
| Partitionsgrenzen verschieben | nur obere Grenze | ja | beliebig verkleinerbar, begrenzt vergrößerbar |
| Partition verstecken/sichtbar machen | nein | nein | ja |
Aktuell hat Parted keine grafische Oberfläche. Aber keine Angst, umständliche Parameter brauchen Sie sich nicht zu merken, die Entwickler haben eine interaktive Textoberfläche à la fdisk eingebaut.
Installation von Parted
Die meisten Distributionen kommen leider ohne Parted, deshalb müssen Sie den Partitions-Editor selbst nachinstallieren. Dazu können Sie entweder das auf der CD enthaltene RPM-Paket verwenden, oder die Quellen von der CD selbst kompilieren. Hinweise zur Installation finden Sie im Kasten. Die jeweils aktuelle Version von Parted finden Sie im Internet unter http://www.gnu.org/software/parted/ und ftp://ftp.gnu.org/gnu/parted.
Installation
Das RPM-Archiv parted-1.2.9-0.i386.rpm wird mit
rpm -i parted-1.2.9-0.i386.rpm
installiert. Das sollte mit allen RPM-basierenden Distributionen funktionieren, getestet haben wir SuSE 6.4, SuSE 7.0, RedHat 6.2 sowie Mandrake 7.1.
Für den Fall, dass Sie zur Installation von Linux Ihre Windows-Partition verkleinern wollen, Ihre Distribution dies aber nicht anbietet, haben wir einen Abzug einer Boot-Diskette mit Parted beigelegt. Leider handelt es sich hierbei um eine komplett englische Version, es gibt nicht einmal eine deutsche Tastaturbelegung. Die Abzugsdatei können Sie unter Linux mit
dd if=partboot.img of=/dev/fd0
auf eine Diskette im ersten Laufwerk schreiben. Wenn Sie nur Windows oder DOS zur Verfügung haben, verwenden Sie das im Unterverzeichnis beigelegte Programm rawrite, indem Sie es einfach aufrufen und die Abzugs-Datei und das zu verwendende Diskettenlaufwerk angeben.
Sollten Sie die Quellen übersetzen wollen, entpacken Sie zunächst die Datei parted-1.2.9.tar.gz von der CD und wechseln in das Verzeichnis:
tar xvzf parted-1.2.9.tar.gz cd parted-1.2.9
Zusätzlich benötigen Sie die Bibliotheken libreadline.so und libuuid.so, diese befinden sich meist im Verzeichnis /lib. Die nächsten Schritte sind Vorbereitung der Übersetzung, Kompilliation und anschließende Installation.
./configure --prefix=/usr make make all-recursive make install
Der Parameter --prefix=/usr sorgt dafür, dass Parted wie ein normales Systemprogramm eingestuft wird und nicht in /usr/local landet wie von den Programmierern vorgesehen. Für Installation sollten Sie als root angemeldet sein. Fehlermeldungen während configure sind problematisch und weisen auf fehlende Pakete oder eine von Parted unerwartete Verzeichnisstruktur hin. Der häufigste Fehler ist, dass die Bibliothek libuuid, zuständig für die Dateisystem-Zugriffe, fehlt. Die Datei befindet sich im Entwicklungspaket für ext2fs, oft mit ext2fs_d oder ext2fs-devel bezeichnet. Nach erfolgreicher Installation können Sie das Verzeichnis von Parted löschen.
Rufen Sie parted ohne weitere Parameter auf, versucht das Programm, die Standard-Festplatte zu finden, und vermeldet dies zum Beispiel mit Benutze /dev/hda. Sollte Sie Parted in Englisch begrüßen, müssen Sie die Sprach-Variable explizit setzen:
export LANG="de" export LANGUAGE="de"
Beim Aufruf von Parted sollten Sie besser die zu bearbeitende Festplatte mit anzugeben, zu leicht übersieht man, was Parted als Standard verwendet und bearbeitet womöglich das falsche Laufwerk. Folgendes Beispiel verwendet die zweite Festplatte am ersten IDE-Controller:
parted /dev/hdb
Vorsicht, geben Sie auf keinen Fall den Namen einer Partition wie /dev/hdb1 an. Dann geht Parted nämlich davon aus, dass es sich bei /dev/hdb1 um eine ganze Festplatte handelt und wird versuchen, die Partition noch einmal mit Partitionen zu versehen – ein sinnloses Unterfangen.
Bei jedem Programmstart werden Sie gebeten, die Festplatten-Geometrie im BIOS zu überprüfen. Der Hintergund ist, dass Parted auf die vom Kernel erkannten Daten zurückgreift, und alle Veränderungen auf Basis dieser Zahlen macht. Ein anderes System, das die BIOS-Daten verwendet, aber auch Bootloader wie LiLo oder GRUB können auf eine solche falsche Geometrie hereinfallen und später ihren Dienst versagen. Es lohnt sich also, beim ersten mal die Festplatten-Daten zum Beispiel vom BIOS-Startbildschirm abzuschreiben oder direkt im BIOS nachzusehen.
Die Nummern innerhalb von Parted entsprechen den Minor Device Numbers der jeweiligen Festplatte, also “1” für hda1 oder hdb1. Achten Sie unbedingt darauf, dass die zu bearbeitenden Partitionen keinesfalls im Gebrauch sind (also nicht gemountet), eine Liste der gerade verwendeten Partitionen bekommen Sie mit mount. Im Unterschied zu fdisk führt Parted alle Aktionen sofort und nicht erst beim Verlassen aus – es gibt also (fast) keinen Weg zurück, wenn Sie eine Partition erst einmal gelöscht haben.
Partitionen anzeigen und prüfen
Werfen Sie zunächst mit p einen Blick auf Ihre aktuelle Partitionierung. Start und Ende der einzelnen Partitionen werden Ihnen nicht in Zylindern angegeben, wie fdisk das tut, sondern in Megabytes. Intern rundet Parted auf ganze Zylinder, wie die Partitionstabelle der Festplatte dies verlangt. Das führt dazu, dass sich die eingegebenen Größen oft von den eingegebenen Zahlen unterscheiden.
Parted verfügt über eine Prüffunktion für ext2, swap und FAT/VFAT. Bei ext2 empfiehlt sich jedoch das deutlich leistungsfähigere e2fsck, das bei jeder Distribution beiliegt. Parted macht auch keinen Hehl daraus; werden beispielsweise bei Überprüfung der zweiten Partition mit check 2 Fehler gefunden, verweist Parted direkt auf e2fsck als Hilfsmittel. Auch bei fehlerlosem Durchlauf wird darauf aufmerksam gemacht, dass es sich nur um einen oberflächlichen Test handelt und e2fsck die bessere Alternative ist.
Haben Sie eine fehlerbehaftete ext2-Partition gefunden, empfiehlt sich in jedem Fall eine Reparatur mittels e2fsck. Dazu müssen Sie zunächst Parted beenden oder auf eine andere Konsole wechseln. Im einfachsten Fall überlassen Sie e2fsck alle Schritte, hier am Beispiel der ersten logischen Partition:
e2fsck -c -p -v -y /dev/hda5
Der Beispielaufruf sorgt für eine automatische Korrektur eventuell gefundener Fehler. Falls die Partition noch gemountet ist, wird e2fsck zurückfragen, ob Sie wirklich die Überprüfung starten wollen – in diesem Fall antworten Sie bitte stets mit “Nein”. Andernfalls droht im schlimmsten Fall ein Systemabsturz und/oder Datenverlust.
Für FAT- und VFAT-Partitionen können Sie alternativ zum Parted-Check auch das Programm dosfsck verwenden. Folgender Aufruf – ebenfalls im System und nicht von Parted aus – testet und korrigiert automatisch eine FAT oder VFAT-Partition:
dosfsck -a -t -v /dev/hdb3
Je nach Distribution gehört dosfsck unter Umständen nicht zur Standardinstallation und muss nachinstalliert werden.
Partitionen anlegen
Für das Anlegen von Partitionen hat Parted drei Befehle. Mit mkpart legen Sie eine neue Partition an. Die folgenden Zeilen legen erst eine erweiterte Partition und dann eine logische ext2-Partition an:
mkpart extended 130 1128 mkpart logical ext2 130 1000
Die erweiterte Partition beginnt bei 130 MB und geht bis 1128 MB, die Angaben beziehen sich dabei auf die Gesamtgröße der Festplatte. Die logische Partition wird innerhalb der erweiterten angelegt und geht von 130 bis 1000 MB. Da die logischen Partitionen automatisch durchnumeriert werden, braucht keine Partitionsnummer angegeben werden – es wird die nächste freie verwendet. Gundsätzlich müssen die logischen Partitionen innerhalb der erweiterten liegen – insgesamt steht Ihnen damit so viel Platz für alle logischen zur verfügung, wie Sie für die erweiterte Partition reserviert haben. Mögliche Partitionstypen für mkpart sind primary, extended und logical, als Dateisystem kann ext2, linux-swap oder fat angegeben werden.
Ein Blick auf die neue Partitionstabelle in Abbildung 1 zeigt, dass Parted hier gerundet hat:
Oft fragt Parted, ob der Boot-Loader GRUB installiert werden soll. Da sich GRUB noch in einer frühen Entwicklungsphase befindet, sollten Sie besser Lilo verwenden. GRUB wird in Zukunft eine große Rolle spielen, da er zum Beispiel Auswahlmenüs zulässt. Näheres dazu erfahren Sie unter http://www.gnu.org/software/grub. Auf der neu angelegten Partition richten Sie anschließend das gewünschte Dateisystem ein:
mkfs 5 ext2
Der Befehl mkpartfs wird genau wie mkpart aufgerufen und fasst beide Schritte zusammen:
mkpartfs logical ext2 60 90
Löschen und Kopieren
Zum Löschen einer Partition müssen Sie nur ihre Partitionsnummer kennen:
rm 5
Damit entledigen Sie sich der ersten logischen Partition. Doch Vorsicht! Wie oben beschrieben setzt Parted Änderungen sofort um, es gibt also keinen Weg zurück. Zudem werden die dahinter stehenden logischen Partitionen aufgerückt – das kann Probleme beim Neustart des Systems geben, wenn Sie nicht die Datei /etc/fstab anpassen und auch dort von Hand die Partitionsnummern aufrücken.
Eine Besonderheit von Parted ist die Möglichkeit, den Inhalt ganzer Partitionen in eine andere Partition oder auf eine andere Festplatte zu kopieren. Im folgenden Beispiel wird erst der Inhalt der ersten logischen Partition in die zweite logische kopiert, und dann der Inhalt der zweiten logischen auf in die erste logische Partition /dev/hdb:
cp 5 6 cp 6 /dev/hdb 5
Achtung, die Zielpartitionen müssen bereits angelegt sein, cp legt von sich aus keine neuen an. Auch müssen sie ausreichend groß sein, damit der Inhalt komplett darin unterkommt. ext2-Partitionen können Sie zudem nur in gleich große oder größere ext2-Partitionen kopieren, egal, wie viel von der Ursprungs-Partition genutzt wird.
Aus klein macht groß – und umgekehrt
Die wohl meistverwandte Funktion in Parted ist das Vergrößern und Verkleinern von Partitionen – damit lässt sich auf einer mit Windows voll belegten Festplatte Platz für Linux schaffen. resize erlaubt es, die Grenzen einer Partition zu ändern. Dazu legen wir zunächst eine große Windows-Partition an:
mkpartfs primary vfat 1 1200
Soll nun Platz für eine Linux-Partition geschaffen werden, können wir das Ende der Windows-Partition (hier: erste primäre Partition) weiter nach vorne verlegen – oder wie im Beispiel den Anfang weiter nach hinten, so dass Linux vor Windows steht:
resize 1 600 1200
Es ist übrigens nicht nötig, eine benutzte Windows-Partition vor der Verkleinerung zu defragmentieren. Wunder bewirken kann Parted indes nicht, Sie können die Windows-Partition nur so weit verkleinern, wie Platz vorhanden ist, Parted warnt Sie gegebenenfalls. Nach erfolgreicher Verkleinerung haben Sie nun Platz für die Linux-Partition:
mkpartfs primary ext2 1 599
Aktuell hat Parted noch Probleme mit der Bearbeitung von ext2-Partitionen, bei diesen können Sie momentan nur die obere Grenze verändern, aber nicht die untere.
Bootbare Partitionen
Um überhaupt von einer Partition booten zu können, muss diese als bootbar gekennzeichnet werden. Sie benötigen auf der Festplatte, von der Sie normal starten, also eine solche Partition. Unter Parted können sie mit boot und er entsprechenden Partitionsnummer diese als bootbar kennzeichnen. Dies kann – wie eingangs beschrieben – nur eine der vier primären Partitionen sein. Mit folgendem Befehl machen Sie die erste primäre Partition startbar, in unserem Fall ist das Windows:
boot 1
Frische Festplatten
Sollten Sie eine neue Festplatte besitzen oder tatsächlich Ihre Festplatte formatiert haben, können Sie mit mklabel eine neue, völlig leere Partitionstabelle aufbringen. Aber Vorsicht, dieser Befehl auf eine gefüllte Festplatte angewandt überschreibt unwiderbringlich die alte Partitionstabelle – und Sie kommen an Ihre Daten nicht mehr heran. Für den Fall der Fälle ist es ratsam, Ihre Partitionsdaten auszudrucken und gut aufzuheben – dann können Sie hoffen, dass Ihnen ein Experte noch helfen kann. Folgendes Beispiel gibt die Partitionsdaten der ersten Festplatte auf dem Standard-Drucker aus:
fdisk -l /dev/hda | lpr
Versteckspiel
Zum Schluss bleiben noch zwei bisher unerwähnt gebliebene Features aufzuzeigen. (V)FAT-Partitionen können unter Windows versteckt werden, damit ihnen beim Start keine Laufwerksbuchstaben zugeordnet werden. Parted unterstützt dieses Feature durch die Befehle hide und unhide. Für Linux hat dieses Versteckspiel aber keine Bewandtnis.
Fazit
Insbesondere für Umsteiger von Windows auf Linux ist Parted interessant, um – zumindest vorerst – Windows beibehalten zu können. Schade, dass die meisten Distributionen noch ihre eigenen Programme oder das althergebrachte fdisk benutzen, mit denen Windows-Partitionen meist nur gelöscht, aber nicht verkleinert werden können. Dennoch, Parted ist kein Allheilmittel, gerade im Zusammenhang mit Partition-Magic berichtet SuSE von Problemen – ein Grund mehr, dass Sie Ihre Daten sichern, bevor Sie mit Parted zu Werke schreiten.
Bleibt zu hoffen, dass Parted in zukünfigen Versionen noch stabiler und flexibler wird und eine leichter zu bedienende Oberfläche bekommt – vielleicht setzt es sich dann ja als Standard-Werkzeug für fast alle Distributionen durch.
Infos
[1] GNU-Parted Homepage: http://www.gnu.org/software/parted/
[2] FTP-Download: ftp://ftp.gnu.org/gnu/parted/


