Wie in den Schwerpunktartikeln dieser Ausgabe schon ausführlich besprochen, verwenden neue Rechner (vor allem solche, die mit Windows 8 ausgeliefert werden) eine neue Firmware namens UEFI [1]; damit verbunden gibt es auch eine neue Methode, Festplatten zu partitionieren. GPT (GUID Partition Table) ist auf Apples Macs schon länger im Einsatz, für PCs ist es aber Neuland [2].
Wenn Sie auf einem Rechner mit GPT fdisk
nutzen wollen, um einen Blick auf die Partitionierung zu werfen, erhalten Sie wenig brauchbare Information: Statt der erhofften Tabelle erscheint (nach einer GPT-Warnung) nur eine einzige Partition vom Typ GPT, welche die ganze Platte zu füllen scheint (Listing 1).
Listing 1
"fdisk"-Ausgabe
susepc:/home/esser # fdisk -l WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sda: 750.2 GB, 750156374016 bytes [...] Device Boot Start End Blocks Id System /dev/sda1 1 1465149167 732574583+ ee GPT Partition 1 does not start on physical sector boundary.
Was Sie dort sehen, ist der Inhalt des so genannten Protective MBR – dieser liegt als Schutzmechanismus an der Stelle, wo MBR-basierte Partitionierungstools die Partitionstabelle erwarten. Der stets einzige vorhandene Eintrag gibt vor, dass die gesamte Platte durch eine Partition von Typ GPT belegt wäre. Das stimmt zwar nicht, hält aber ältere Partitionierungstools (die GPT nicht kennen) erfolgreich davon ab, neue Partitionen nach dem MBR-Schema zu erzeugen und damit Daten auf der Platte zu löschen.
GPT (GUID Partition Table) verwendet einen ganz anderen Aufbau als die bisher üblichen MBR-Tabellen: Was Sie über primäre, erweiterte und logische Partitionen wissen, können Sie in der GPT-Welt vergessen – es gibt nur noch Partitionen, und davon (theoretisch) bis zu 128 Stück auf einer Platte. Das Partitionierungsprogramm von Windows 8 beharrt zwar auf der Bezeichnung primäre Partition (Abbildung 1), dieser Begriff hat für GPT-Platten aber keine Bedeutung.
Die Bezeichnungen der einzelnen Partitionen einer Platte /dev/sda sind jetzt einfach durchnummeriert: Sie sprechen diese über /dev/sda1, /dev/sda2 usw. an. Dabei darf es durchaus Lücken zwischen den Nummern geben, es ist aber üblich, einfach fortlaufend Nummern zu vergeben.
Am leichtesten gelingt der Einstieg in die GPT-Partitionierung mit gdisk
, dessen Name eine Abkürzung für GPT-fdisk ist: Das Tool lehnt sich von der Bedienung stark an fdisk
an und weicht nur dort von dem Klassiker ab, wo es unvermeidbar ist. Sie brauchen in jedem Fall Root-Rechte für die Benutzung von gdisk
, auch dann, wenn Sie nur einen Blick auf die vorhandenen Partitionen werfen wollen. Um als normaler Anwender wenigstens die Partitionsliste abzurufen, können Sie den Befehl
cat /proc/partitions
verwenden, finden in der Ausgabe aber nur Hinweise auf Größe und Gerätedatei der jeweiligen Partition.
Für einen ersten Blick auf die Partitionierung steht die Option -l
(list) bereit, die allerdings zwingend die Angabe einer Gerätedatei (/dev/sda, /dev/sdb etc.) erwartet (Abbildung 2). Bei fdisk
ist es genauso möglich, die Platte anzugeben, aber dort kann man das Argument auch weglassen, und fdisk
zeigt dann Informationen über sämtliche Platten an.
Um die Partitionierung einer Platte zu bearbeiten, rufen Sie gdisk
mit dem Gerätenamen der Platte als einzigem Argument auf, also z. B.
gdisk /dev/sda
Das Programm sucht dann nach Partitionstabellen in verschiedenen Formaten und berichtet über das Resultat der Suche: Auf einem GPT-System sollten Sie die Einträge MBR: protective und GPT: present (sowie Hinweise auf nicht vorhandene BSD- und APM-Tabellen) finden.
Dass Sie nun in gdisk
arbeiten, erkennen Sie am Prompt, der sich zu Command (? for help): ändert. Sie können sich jederzeit mit p
(print) die aktuellen Partitionierungsdaten anzeigen lassen. Wie bei fdisk
spiegelt die Anzeige alle bisher geplanten (aber noch nicht ausgeführten) Änderungen wider – Sie verlassen das Programm mit q
(quit), dann gehen alle Änderungen verloren. Erst wenn Sie w
(write) eingeben, schreibt gdisk
die neuen Daten in die Partitionstabelle.
Mit gdisk
können Sie bestehende Partitionen nicht in der Größe verändern; dafür benötigen Sie parted
(siehe unten). Aber Sie können nicht länger benötigte Partitionen löschen und im frei gewordenen Bereich neue erzeugen. Bei neu gekauften Platten, die in der Regel MBR-partitioniert sind, können Sie auch eine neue Partitionstabelle erzeugen:
o
löschen Sie die bestehende Partitionierung vollständig und legen eine neue GPT-Tabelle (sowie einen Protective MBR) an. gdisk
fragt dann nach, ob Sie das wirklich tun wollen; antworten Sie darauf mit Y
– auch dieser Schritt wird erst ausgeführt, wenn Sie die Änderungen später mit w
sichern.n
erstellen Sie eine neue Partition. Interaktiv sind nun ein paar Fragen zu beantworten, zunächst geht es um die Nummer der anzulegenden Partition (zwischen 1 und 128); gdisk
schlägt selbständig die nächste freie Nummer vor, so dass Sie hier einfach [Eingabe] drücken. Eine Abfrage zu primären, erweiterten oder logischen Partitionen (wie bei fdisk
) gibt es hier nicht, weil GPT diese Konzepte ja nicht kennt. Weiter geht es mit Anfang und Ende der neuen Partition. Den Vorschlag für den Anfang sollten Sie in der Regel übernehmen; dadurch bleiben später keine Lücken. Das Ende der Partition können Sie gdisk
selbst berechnen lassen, indem Sie eine Größe in der Form +100M
(für 100 MByte) oder +20G
(für 20 GByte) angeben. Es fehlt noch die Angabe des Partitionstyps; die Vorgabe ist hier 8300 (Linux filesystem) – mit L
lassen Sie sich an dieser Stelle alle bekannten Typen ausgeben. Bauen Sie eine komplett neue Platte auf, die auch bootfähig sein soll, ist z. B. der Typ ef00 (EFI System) wichtig, denn UEFI-Systeme benötigen zum Booten immer eine separate EFI-Partition, die 100 bis 300 MByte groß sein sollte.d
werden Sie Partitionen wieder los. Wenn Sie Partitionen "in der Mitte" löschen, bleiben Lücken – Sie können später über das Kommando s
(sort) dafür sorgen, dass diese Lücken verschwinden. Dadurch ändern sich aber die Gerätedateinamen von Partitionen, die nun weiter nach vorne rücken (z. B. von /dev/sda7 auf /dev/sda6).
Nach jedem Änderungsschritt sollten Sie mit p
überprüfen, ob das Programm so gearbeitet hat, wie Sie es sich vorgestellt haben. Schritte rückgängig zu machen, ist zwar nicht möglich, aber bei unpassenden Ergebnissen können Sie jederzeit mit q
die Bearbeitung abbrechen und neu starten. Wollen Sie die Änderungen auf die Platte schreiben, geben Sie w
ein. Damit beenden Sie gdisk
auch im Anschluss.
Tabelle 1 zeigt die wichtigsten Kommandos, die gdisk
und fdisk
anbieten, im Vergleich – für gleiche Aufgaben nutzen Sie meist das gleiche Kommando.
Tabelle 1: Befehle in "fdisk" und "gdisk"
Funktion | fdisk | gdisk |
---|---|---|
Partitionsnamen ändern | – | c |
Partition löschen | d | – |
Detailinformationen zu Partition | – | i |
Partitionstypen anzeigen | l | l |
Hilfe | m | ? |
Neue Parition erzeugen | n | n |
Neue Partitionstabelle erzeugen | o | o |
Aktuelle Tabelle anzeigen | p | p |
Abbruch (ohne Änderungen) | q | q |
Partitiontyp ändern | t | t |
Geänderte Tabelle schreiben | w | w |
Experten-Optionen | x | x |
Das Standardtool für die Bearbeitung von GPT-Partitionstabellen ist parted
, das neben GPT- auch klassische MBR-Partitionstabellen kennt. Bevor Sie sich in erste Tests mit dem Programm stürzen, ist eine Warnung angebracht: Anders als fdisk
führt parted
Kommandos, die Änderungen an der Platte bewirken, sofort aus. In fdisk
kann man problemlos mit den diversen Kommandos herumspielen und sich immer wieder mit p
den aktuellen Stand ausgeben lassen; erst ein w
schreibt dort die geänderten Daten in die Partitionstabelle. Bei parted
ist das nicht der Fall. Darum sollten Sie das Tool nur vorsichtig nutzen.
Es empfiehlt sich, zum Experimentieren eine leere externe Platte anzuschließen oder ein leeres Image zu erzeugen: Wenn Sie genug Platz auf der Platte haben, können Sie z. B. über
dd if=/dev/zero of=/tmp/testdisk.img bs=1G count=5
eine 5 GByte große leere Datei erzeugen und diese dann mit
parted /tmp/testdisk.img
öffnen. (Für diese Tests sind nicht mal Root-Rechte nötig; als normaler Anwender starten Sie parted
durch Angabe des vollen Pfads /usr/sbin/parted
.) In einem ersten Schritt bereiten Sie das Image dann vor:
(parted) mklabel gpt
Danach können Sie loslegen und z. B. neue Partitionen in dieser Imagedatei erzeugen. parted
kann diverse weitere Tools verwenden, um neue Partitionen auch gleich geeignet zu formatieren, z. B. als Ext3- oder Ext4-Datenträger.
Wenn Sie mit parted
neue Partitionen erzeugen, gibt sich das Programm etwas unkomfortabel, weil es nach exakten Anfangs- und Endadressen fragt und keine Vorschläge unterbreitet. Die meisten Anwender setzen darum auf das Tool gparted
, das ein Frontend für parted
mit grafischer Oberfläche ist.
Interessant ist die Arbeit mit parted
aber z. B., wenn Sie detaillierte Informationen zur Partitionierung erhalten möchten, denn es gibt nicht nur alle vorhandenen Einträge in der Tabelle aus, sondern schaut auch in jede Partition hinein und versucht, das Dateisystem zu ermitteln, mit dem diese formatiert wurde. Abbildung 3 zeigt die Beispielausgabe für eine GPT-Festplatte, die im Dual-Boot-Betrieb mit Windows 8 und Linux eingerichtet wurde.
Komfortabel lässt sich parted
nur über gparted
nutzen, das viele aktuelle Linux-Distributionen als Partitionierungsprogramm einsetzen. Abbildung 4 zeigt, wie das Programm die obige Beispielplatte nach dem Start anzeigt. Anders als parted
merkt sich die GUI-Variante alle Änderungen nur vor und führt sie zum Schluss gemeinsam aus, so dass sich hier wieder ein Verhalten wie bei fdisk
ergibt. Es ist also wichtig, immer darauf zu achten, mit welchem der Programme Sie arbeiten und welchen Modus es für Änderungen nutzt.
Bei unseren Experimenten mit Dual-Boot-Systemen ergab sich oft eine Situation, in der Linux noch bootete, Windows aber nicht – darum finden Sie im Kasten Windows wieder booten lassen noch einen Tipp zur Wiederherstellung der Windows-Boot-Daten; passend zur Rubrik müssen Sie auch dort Shell-Tools nutzen. Aber keine Sorge: Beiträge zu Windows werden nicht die Regel, sie sind in dieser Ausgabe dem Titelthema geschuldet. (hge)
Windows wieder booten lassen
Da Sie GPT-Platten in der Regel nur auf Rechnern mit vorinstalliertem Windows 8 begegnen, hier ein kleiner Tipp für die Windows-Kommandozeile: Er ist interessant, wenn Windows nicht mehr startet und stattdessen einen Bluescreen mit obskuren Fehlermeldungen (error 0xc0000225) anzeigt.
Booten Sie dann von einer Windows-Installations-DVD, starten Sie aber nicht die Installation, sondern wechseln Sie zu den Wiederherstellungsoptionen. In einem der Untermenüs können Sie eine Shell öffnen. Wenn Ihre EFI-Partition die erste auf der Platte ist, können Sie mit folgenden Befehlen die Boot-Informationen von Windows reparieren:
C:\> diskpart DISKPART> sel disk 0 DISKPART> sel part 1 DISKPART> assign letter=z DISKPART> exit
Danach ist die EFI-Partition als Windows-Laufwerk Z:
ansprechbar, und mit
C:\> bcdboot c:\Windows /s z: /f UEFI
können Sie das Programm bcdboot
neue Boot-Informationen auf die EFI-Partition schreiben lassen. Diesen Trick mussten wir bei unseren Installationsexperimenten für die Schwerpunktartikel dieser Ausgabe mehrfach anwenden; er stammt aus einem Blog-Beitrag [3].
Infos
[1] UEFI: http://de.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
[2] GPT: http://de.wikipedia.org/wiki/GUID_Partition_Table
[3] Blog-Beitrag zur Windows-Boot-Reparatur: http://qliktips.blogspot.se/2012/11/fix-windows-8-boot-issue.html