claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 09/2004   »   Ausgabe bestellen

Partitionierungs-Bug in aktuellen Distributionen umgehen

Starthilfe

von Andrea Müller


Aktuelle Linux-Distributionen haben einen Fehler, der dazu führen kann, dass nach der Partitionierung Windows nicht mehr startet. Auf die Linux-Installation muss dennoch niemand verzichten: Es gibt mehrere Wege, das Problem zu beheben oder sogar zu umgehen.

Es ist die Angstvorstellung jedes Linux-Neueinsteigers: Linux ist installiert, und Windows bootet nicht mehr. Das lauffähige Linux hilft dann meistens nicht weiter -- man kennt sich mit dem neuen System noch nicht so recht aus und benötigt dringend einige Windows-Programme. Dank der ausgefeilten Installationsroutinen der Distributionen traten solche Probleme in den letzten Jahren fast nie auf: Linux erkennt bei der Installation ein vorhandenes Windows und bindet es automatisch in den Bootmanager ein. Bei aktuellen Versionen sorgt jedoch ein Bug dafür, dass Windows unter bestimmten Umständen nicht mehr startet, wenn Linux die Partitionstabelle der Festplatte modifiziert hat.

Betroffen sind SuSE Linux 9.1 und Fedora Core 2, es gibt auch Berichte über das Problem von Mandrake-Linux-10-Nutzern. Dass niemand den Bug bemerkt hat, bevor die Distributionen erschienen sind, liegt daran, dass er nur sehr selten auftritt; neben bestimmter Hardware und Partitionierung verursacht eine Kombination von Kernel 2.6 und der Bibliothek libparted den Fehler. Diese Bibliothek (vergleichbar mit einer dll-Datei unter Windows) nutzen die Partitionierungs-Tools der Distributionen. Zusätzlich müssen Linux und das BIOS des Rechners von unterschiedlichen Plattengeometrien ausgehen, und die erste Partition (also das Windows-Startlaufwerk) muss größer als 8 GByte sein. Wie extrem selten der Fehler auftritt, mussten wir auch hier in der Redaktion feststellen: Weder bei unserem Notebook-Test der letzten Ausgabe noch auf einem unserer Test- oder Privatrechner konnten wir das Auftreten des Fehlers provozieren.

In manchen Fällen verlässt sich Windows beim Booten auf die Werte, die das BIOS liefert -- da der Partitionierer parted andere Werte über die Plattengeometrie in die Partitionstabelle geschrieben hat, verweigert Windows den Start. Dann hilft es auch nicht, den Linux-Bootmanager zu entfernen oder Windows neu auf die bestehende Partition aufzuspielen. Dabei wird nämlich nur der Master Boot Record (MBR) neu geschrieben, nicht aber eine neue, Windows genehme, Partitionstabelle angelegt. Die Distributoren haben darauf schnell reagiert und mehrere Wege gefunden, das Problem zu beseitigen. Die bestmögliche Variante ist zu verhindern, dass der Fehler überhaupt auftritt.

Sicher ist sicher

Da Windows nur dann nicht mehr startet, wenn Linux während der Installation die Partitionstabelle neu schreibt, müssen Sie diesen Schritt verhindern. Das geht leicht, wenn Sie vor der Linux-Installation schon die Zielpartitionen anlegen. Am einfachsten funktioniert das mit einem kommerziellen Partitionierungsprogramm wie Partition Magic, das sogar NTFS-Partitionen verkleinert. In dem so freigeschaufelten Platz erstellen Sie zwei Partitionen, eine vom Typ Linux (swap) und eine weitere Linux-Partition mit dem Dateisystem ext3.

Einer alten Faustregel folgend sollte die Swap-Partition etwa doppelt so groß wie der Arbeitsspeicher des Rechners sein, bei großzügiger RAM-Ausstattung reicht auch etwas weniger. Für die Linux-Partition selbst sollten Sie mindestens 5 GByte bereit stellen. So haben Sie neben den fast 2 GByte, die eine Standardinstallation belegt, noch Platz für weitere Programme und eigene Dateien.

An das Dateisystem sind Sie später nicht gebunden, da Sie Linux während der Installation anweisen können, die so angelegten Partitionen zu formatieren. Wichtig ist nur, dass Partition Magic die Partitionen mit der richtigen Nummer erstellt. Die Partitionen einer Festplatte können mit verschiedenen Dateisystemen formatiert sein. Zur Unterscheidung dieser verschiedenen Partitionen erhalten die einzelnen Typen "Kennnummern": Partitionen mit einem Linux-Dateisystem wie ext3 oder reiserfs haben immer die Nummer 83, Swap-Partitionen erhalten die Nummer 82 (Abbildung 1).

Neben der Größe der Partition trägt Partition Magic auch diese Nummer in die Partitionstabelle ein. Linux kann sich so bei der Installation "ins gemachte Nest setzen", ohne die Partitionstabelle zu modifizieren.

Abb. 1: Lassen Sie sich mit "fdisk -l" die Partitionstabelle anzeigen, sehen Sie Größe und Aufteilung der Festplatte und die Partitionsnummern.

Besitzen Sie kein kommerzielles Partitionierungsprogramm, gibt es auch eine Lösung für Sparfüchse: Legen Sie die Zielpartitionen für das neue Linux-System einfach mit dem Installer einer älteren Distribution an. In Frage kommen beispielsweise SuSE Linux 9.0 oder Mandrake Linux 9.1 und 9.2. Alle drei Versionen können NTFS-Partitionen verkleinern und bieten im Rahmen des Installationsprozesses eine grafische Oberfläche, die das Anlegen neuer Partitionen erlaubt. Ältere Distributionen erhalten Sie beispielsweise bei der nächstgelegenen Linux User Group (Seite 88), die in solchen Fällen gerne aushilft.

Starten Sie danach vom Installationsmedium der älteren Distribution und führen Sie die Installation so weit durch, bis der Installer die Festplatte partitioniert. Da beim Verkleinern und Neuanlegen von Partitionen immer Datenverlust droht, egal, ob Sie die Arbeit dem Installationsassistenten überlassen oder manuell partitionieren, sollten Sie vor einem solchen Eingriff Ihre wichtigen Daten sichern. Nach der Partitionierung brechen Sie die Installation einfach ab.

Sind die Partitionen angelegt, können Sie gefahrlos Fedora Core 2, SuSE Linux 9.1 oder Mandrake Linux 10 aufspielen. Damit die Systeme nicht doch Hand an die Partitionstabelle legen, greifen Sie beim Einrichten der Zielpartitionen manuell ein:

Fedora Core 2

  1. Unter Fedora Core 2 wählen Sie dazu statt Automatisches Partitionieren den Punkt Manuelles Partitionieren mit Disk Druid. Im folgenden Dialog sehen Sie alle Partitionen der Festplatte. Markieren Sie im Übersichtsfenster die eben angelegte. In der Spalte Typ sollte ext3 stehen, wenn Sie, wie oben vorgeschlagen, ext3 als Dateisystem gewählt haben. Zusätzliche Sicherheit, dass Sie die richtige markieren, erhalten Sie mit einem Blick in die Spalte Größe.

  1. Klicken Sie auf Bearbeiten. Setzen Sie dort ein Häkchen vor Partition formatieren als. Am Dateisystem ext3 ändern Sie nichts: Das ist Standard bei Fedora Core 2. Wählen Sie nun noch aus dem Dropdown-Feld Mountpunkt / aus. Damit weisen Sie Fedora Core 2 an, diese Partition als Wurzelverzeichnis zu verwenden.

  1. Klicken Sie auf OK und markieren Sie jetzt die eben angelegte Auslagerungspartition, die Sie in der Spalte Typ am Eintrag swap erkennen. Klicken Sie auf Bearbeiten und setzen Sie ein Häkchen vor Partition formatieren als. So weiß Linux, dass Sie diese Auslagerungspartition im späteren Betrieb verwenden möchten. Bestätigen Sie die Änderung mit Klick auf den OK-Button.
  1. Kontrollieren Sie jetzt ein letztes Mal, ob Sie wirklich die richtige Partition für die Installation ausgewählt haben. Der Installer setzt in die Spalte Formatieren ein Häkchen, sobald Sie die Partition dafür vorgemerkt haben. Zusätzlich steht hinter der künftigen Linux-Partition ein / in der Spalte Mountpunkt. Ist alles korrekt, klicken Sie auf Weiter. Der Installer zeigt noch einmal eine Liste der zu formatierenden Partitionen an. Mit Klick auf Formatieren bestätigen Sie die Auswahl. Danach geht die Installation weiter wie gewohnt.

Mandrake Linux 10

Noch einfacher bannen Sie Mandrake Linux 10 auf eine zuvor angelegte Partition: Während der Installation aktivieren Sie im Bildschirm Partitionierung die Option Verwende existierende Partition(en) (Abbildung 2). Klicken Sie auf Weiter, damit der Installer alle Linux-Partitionen einblendet, die er gefunden hat. Haben Sie nur eine passende Partition auf Ihrer Festplatte, hat Mandrake Linux diese schon als Wurzelverzeichnis (/) markiert. Klicken Sie dann einfach auf Weiter. Im nächsten Fenster zeigt der Installer diese Partition als Formatierungskandidat an. Nach einem letzten Klick auf Weiter formatiert Mandrake Linux die Zielpartition, und Sie gelangen zur Paketauswahl. Um die Swap-Partition müssen Sie sich nicht kümmern, Mandrake nutzt den bereitgestellten Auslagerungsspeicher später automatisch.

Abb. 2: Mandrake Linux installieren Sie mit wenigen Mausklicks auf eine zuvor angelegte Partition.

SuSE Linux 9.1

Am wenigsten Arbeit mit vorbereiteten Partitionen haben Sie unter SuSE Linux 9.1. Das System erkennt die Linux- und die Swap-Partition (Abbildung 3). Die Systempartition merkt die Installationsroutine automatisch für eine Formatierung mit dem Dateisystem reiserfs vor.

Abb. 3: SuSE Linux hat die vorbereitete Ziel- und Swap-Partition automatisch erkannt.

Nur wenn Sie sich nicht sicher sind, ob SuSE Linux die richtige erwischt hat (etwa weil Sie noch eine weitere Linux-Installation auf dem Rechner haben) klicken Sie auf Partitionierung, um den Vorschlag zu kontrollieren. Haben Sie nur die eine vorbereitete Zielpartition, klicken Sie auf Übernehmen. Danach installiert YaST SuSE Linux, ohne in die Partitionstabelle zu schreiben.

Fehler verhindern trotz Partitionierung

Haben Sie kein anderes Partitionierungsprogramm, mit dem Sie die Partitionen vorab anlegen können, gibt es auch für die normale Installation Wege zu verhindern, dass der Fehler auftritt.

Am einfachsten funktioniert es unter SuSE Linux 9.1: Der Distributor stellt eine Treiberdiskette/-CD bereit, die eine fehlerbereinigte Version der libparted mitbringt. Unter [1] ist ab der Überschrift Wenn Linux noch nicht installiert ist Schritt für Schritt erklärt, wie Sie ein Treibermedium unter Windows erstellen und in die SuSE-Linux-Installation einbinden.

Dazu drücken Sie im Auswahlbildschirm, wo Sie die Wahl zwischen den Installationsvarianten haben, die Taste [F6]. YaST bittet Sie daraufhin, das Treibermedium bereitzuhalten. Wählen Sie danach Installation. Kurz darauf erscheint der Bildschirm Please choose the Driver Update medium. Legen Sie nun die Treiber-CD oder -Diskette ein. Danach erscheint eine Dialogbox, in der Sie auswählen, wo das Update liegt. Haben Sie eine Diskette erstellt, ist floppy die richtige Wahl, ansonsten entscheiden Sie sich für cdrom. Danach spielt YaST das Update ein. Haben Sie eine CD benutzt, fordert der Installer danach das Installationsmedium an; verwenden Sie eine Diskette, geht es direkt weiter. YaST arbeitet nun mit einer libparted, die den Fehler nicht enthält, so dass Sie während der Installation gefahrlos Partitionen verkleinern, löschen und neu anlegen können.

Für Mandrake Linux gibt es kein spezielles Update. Um jedes Risiko auszuschließen, verwenden Sie den ebenfalls mitgelieferten Kernel 2.4 zur Installation.

  1. Drücken Sie, sobald der blaue Begrüßungsbildschirm erscheint, [F1]. Sie landen auf einem schwarzen Textbildschirm. Unten links, wo der Cursor blinkt, können Sie Boot-Optionen eingeben und den zu startenden Kernel wählen. Mit Eingabe von alt1 und Druck auf [Eingabe] bootet Mandrake Linux mit Kernel 2.4.25.
  1. Mandrake Linux beginnt daraufhin eine normale Installation. Da Kernel 2.6 vor allem Notebooks besser unterstützt als ein 2.4er Kernel, sollten Sie auch den neuen Kernel zur Installation vormerken. Standardmäßig installiert Mandrake Linux nur Kernel 2.4.25, wenn Sie das System mit dieser Version installieren. Setzen Sie dazu bei der Auswahl der Paketgruppen ein Häkchen vor Individuelle Paketauswahl.
  1. Im nächsten Bildschirm klicken Sie auf das dritte Icon von links mit dem Tooltip Umschalten zwischen unsortiert und gruppiert. Danach blendet Mandrake Linux alle Pakete in einer alphabetisch sortierten Liste ein. Scrollen Sie bis zu dem Paket kernel-2.6.3.4mdk und markieren Sie es zur Installation. Die Meldung über die zusätzlich einzuspielenden Pakete quittieren Sie mit einem Klick auf OK.

  1. Nach einem Klick auf Installation kopiert der Installer das System auf die Festplatte.

Im Bootmanager haben Sie später die Wahl zwischen linux, wohinter sich Kernel 2.6.3 verbirgt, und 2425-2. Der letzte Eintrag startet Kernel 2.4.25. Da Kernel 2.6 noch nicht überall rund läuft, können Sie ruhig beider Kernel installiert lassen.

Komplizierte Lösung für Fedora Core 2

Um zu verhindern, dass die Installation eine andere Festplattengeometrie in die Partitionstabelle schreibt, geht der Weg bei der Fedora-Core-2-Installation über die Rettungs-CD [2]. Laden Sie das fast 80 MByte große Image herunter und brennen Sie daraus eine CD. Von dieser CD booten Sie den Computer. Sie landen auf einer Textkonsole, auf der Sie Administratorrechte haben. Die Fragen, ob Sie das Netzwerk starten und Partitionen mounten wollen, verneinen Sie. Geben Sie den Befehl

fdisk -l /dev/hda

ein. Er ändert nichts an der Festplatte, sondern zeigt nur die Partitionierung der ersten Festplatte am ersten IDE-Controller an. Wollen Sie Linux auf eine Platte installieren, die als Slave am ersten Controller hängt, lautet der entsprechende Befehl:

fdisk -l /dev/hdb

Sie erhalten eine Ausgabe wie in Abbildung 4. Wichtig ist die zweite Zeile, die Informationen über die Plattengeometrie enthält. Notieren Sie sich als Erstes die Anzahl der Zylinder (7473 cylinders in Abbildung 4), danach die Anzahl der Köpfe (255 heads) und der Sektoren (63 sectors/track). Drücken Sie [Strg-Alt-Entf], um das System neu zu booten und entnehmen Sie die Rettungs-CD.

Jetzt kann die Installation von Fedora Core beginnen. Statt wie normal von der DVD zu booten, übergeben Sie dem Kernel diesmal die Plattengeometrie als Boot-Option. Er versucht dann nicht selbst festzustellen, wie viele Zylinder, Köpfe und Sektoren die Platte hat, sondern arbeitet mit den von Ihnen übergebenen Werten. Und so gehen Sie vor:

Starten Sie von der DVD. Sobald der Begrüßungsbildschirm mit dem Fedora-Core-2-Logo erscheint, geben Sie

linux hda=zylinderzahl,kopfzahl,sektorzahl

ein. Ihre Eingaben erscheinen links unten auf dem Bildschirm hinter boot:. Für unser Beispielsystem lautet die richtige Zeile

linux hda=7473,255,63

Sie verwenden anstelle von 7473,255,63 die Werte, die Sie zuvor bei dem fdisk-Aufruf notiert haben. Soll Linux auf der Slave-Platte landen, ersetzen Sie hda durch den Gerätenamen der Zielplatte, also hdb. Da Linux zu diesem Zeitpunkt noch mit amerikanischer Tastaturbelegung arbeitet, müssen Sie ' eingeben, um das = zu erhalten. Die richtige Taste liegt gewöhnlich links neben [Rückschritt]. Vergleichen Sie die eingegebenen Werte nochmal mit Ihren Notizen. Stimmen sie überein, starten Sie die Installation mit einem Druck auf [Eingabe]. Der Installations-Kernel arbeitet dann mit der von Ihnen vorgegebenen Festplattengeometrie und schreibt keine anderen Werte in die Partitionstabelle.

Abb. 4: Von dieser Ausgabe müssen Sie sich die Werte in der zweiten Zeile notieren.

Wenn Windows nicht mehr bootet

Ist es für Vorsichtsmaßnahmen schon zu spät und Windows startet nicht mehr, hilft es manchmal, im BIOS den LBA-Modus der Festplatte zu aktivieren. Wo Sie diese Option finden, steht im Handbuch des Mainboards. Haben Sie das nicht zur Hand, werden Sie vielleicht auf den Web-Seiten des Herstellers fündig. Bei einem Award-Bios verbirgt sich die passende Option beispielsweise unter Main / Primary Master / Translation Method. Ebenfalls nützlich bei Fragen rund ums BIOS ist die Web-Seite unter [3].

Startet Windows trotz dieser Maßnahme nicht, verwenden Sie unter SuSE Linux 9.1 das Treiber-Update [1], um das Problem zu beheben. Im Abschnitt Lösung auf dieser Web-Seite bietet der Distributor eine ausführliche Anleitung, wie Sie die Partitionstabelle reparieren. Dafür müssen Sie nur von der Installations-CD booten. Im Installationsbildschirm drücken Sie [F6], wählen Installation und geben den Bootparameter fixpart=1 ein. An dieser Stelle lauert eine Stolperfalle in der Anleitung des Distributors: Zu diesem Zeitpunkt arbeiten Sie noch mit der amerikanischen Tastaturbelegung. Das Gleichheitszeichen (=) erhalten Sie, indem Sie auf ['] drücken, das auf deutschen Tastaturen links neben [Rückschritt] liegt.

Danach folgen Sie der SuSE-Anleitung und den Anweisungen von YaST. Sobald Sie den Rechner neu starten, sollte Windows bei Auswahl des entsprechenden Menüpunkts im Bootmanager wieder starten.

Reparatur-Werkstatt

Anders als bei der automatischen Lösung, die SuSE Linux 9.1 anbietet, ist unter Fedora Core 2 und Mandrake Linux Handarbeit nötig. Damit Windows wieder normal bootet, reicht es aus, mit dem Kommando fdisk die Kopfzahl in der Partitionstabelle auf 255 zu setzen. Red Hat empfiehlt entgegen unserer Anleitung für diese Änderung das Programm sfdisk [4]. Die dort beschriebene Vorgehensweise führte auf einem Testsystem der Redaktion jedoch zu Fehlermeldungen. Außerdem haben Sie damit nicht die Möglichkeit, es sich im letzten Moment noch anders zu überlegen und die Aktion abzubrechen.

fdisk ist bei Fedora Core 2 und Mandrake Linux standardmäßig mit an Bord. Da Sie damit direkt in die Partitionstabelle schreiben, müssen Sie sehr vorsichtig zu Werke gehen. Ein Tippfehler kann dazu führen, dass gar kein System mehr bootet . Überprüfen Sie daher jeden Befehl peinlich genau, bevor Sie ihn mit [Eingabe] abschicken. Abbildung 5 zeigt alle Schritte der folgenden Anleitung.

Abb. 5: Mit diesen Schritten ändern Sie im Programm "fdisk" die Kopfzahl in der Partitionstabelle.
  1. Geben Sie in ein Schnellstartfenster ([Alt-F2]) konsole ein, um ein Kommandozeilenfenster zu öffnen.
  1. Werden Sie mit dem Kommando su und dem Root-Passwort in der nächsten Zeile zum Administrator.
  1. Mit dem Befehl /sbin/fdisk /dev/hda gelangen Sie in den Kommandomodus des Partitionierers fdisk. Sie bearbeiten die erste Festplatte am ersten IDE-Controller, die unter Linux den Namen /dev/hda hat. Haben Sie Linux dagegen auf die so genannte Slave-Platte des ersten Controllers installiert, lautet der richtige Befehl /sbin/fdisk /dev/hdb.
  1. Geben Sie x ein und drücken Sie die Eingabe-Taste. Damit schalten Sie den Expertenmodus von fdisk frei.
  1. Mit dem Buchstaben h und [Eingabe] teilen Sie fdisk mit, dass Sie die Anzahl der Köpfe in der Partitionstabelle ändern wollen. Das Programm blendet den Text Anzahl der Köpfe ein. Geben Sie nun 255 ein.
  1. Bislang hat fdisk noch nichts an der Partitionstabelle geändert. Sind Sie sich nicht sicher, ob Sie alles richtig eingetippt haben, können Sie das Programm zu diesem Zeitpunkt noch mit Eingabe von q beenden. Wollen Sie die Änderungen dagegen übernehmen, speichern Sie die neue Partitionstabelle und beenden fdisk mit w und einem Druck auf [Eingabe].
  1. fdisk meldet danach, dass Sie das System neu starten müssen, damit der Kernel die geänderte Partitionstabelle nutzt. Geben Sie exit ein, um wieder als normaler Nutzer zu arbeiten.
    Wenn Sie den Rechner neu booten, sollte Windows wieder klaglos starten. (amü)
Infos
[1] Bugfix für SuSE Linux 9.1: http://portal.suse.com/sdb/de/2004/05/fhassel_windows_not_booting91.html
[2] Fedora Core 2 Rettungs-CD: ftp://mirrors.kernel.org/fedora/core/2/i386/iso/FC2-i386-rescuecd.iso
[3] BIOS Kompendium: http://www.bios-info.de/bios/compend.htm
[4] sfdisk-Anleitung von Red Hat: http://www.redhat.com/archives/fedora-devel-list/2004-May/msg00908.html

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2021 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 17:20

[Linux-Magazin] [LinuxUser] [Linux-Community]