(2006)

Linux :: Multi-Boot

Vorbemerkungen

Der Wunsch nach mehreren Betriebssystemen auf einer Platte entsteht schnell. Das eine System kann was, was das andere nicht kann, mit dem dritten wollte man sich eh nochmal auseinandersetzen usw. Genauso bei mir. XP sollte stabil für die tägliche Arbeit laufen. Win 98 brauch ich für alte und neue Spiele und für alte Hardware, die XP nicht unterstützt und Debian sollte auch noch mit drauf und das ganze soll über den von XP mitgebrachten Bootloader ausgewählt werden. (extra nen anderen wollte ich nicht holen und von den Linux-Bootmanagern sind mir von Freunden noch Szenarien in Erinnerung, wo man am Ende nur noch von Diskette gebootet hat.)

Planung ist alles

Der größte Fehler, den man begehen kann: wild drauf los installieren. Es wird zwar versprochen, »die Festplattenaufteilung machen wir bei der Installation gleich mit«, aber das funktioniert sicher in 99% der Fälle dann doch nicht so, wie man's gerne hätte. Also ganz am Anfang steht die Partitionierung. Jedes System braucht seine eigene Systempartition, Linux zusätzlich noch eine Swap, irgendwie sollen Daten ausgetauscht und gemeinsam benutzt werden usw. Ich hab mir also erstmal überlegt, wie ich es anstellen will und hab dann mit Partition Magic meine jungfräuliche Platte eingerichtet. Natürlich kann man auch ne Knoppix-CD nehmen oder irgendwas anderes, womit man gerne partitioniert. Bei mir sieht das dann auf ner 120GB-Platte so aus:

  • hda15 GB – Primärpartition: FAT 32 als Systemplatte für Windows 98
  • hda212 GB – Primärpartition: ext3 als Systemplatte für Linux
  • hda31 GB – Primärpartition: Linux-Swap
  • hda4Erweiterte Partition mit folgenden logischen Laufwerken:
    • hda512 GBFAT 32 für wichtige Daten (Bilder, Briefe, Tabellen etc.)
    • hda68 GBFAT 32 für nicht ganz so wichtige Daten (Software-Download, Treiber etc.)
    • hda762 GBFAT 32 als große gemeinsame Datenpartition für mp3, Video, filesharing
    • hda814 GBNTFS als Systemlaufwerk für Windows XP
    • hda92 GBext3 als /home für Linux

Eine seperate Partition für /home unter Linux hab ich bei mir nicht, hätte aber zwecks Backup und Trennung von Daten und Programmen Sinn gemacht, da hab ich aber leider bißchen getrieft. Die /home sollte dann als letztes Laufwerk in der erweiterten Partition angelegt werden.

Auf die Reihenfolge kommt es an!

Das wichtigste vorweg: Windows 98 kommt vor Windows XP rauf!!! sonst können wir nur noch mit Kopfständen und nicht so schön wie hier alle drei Systeme drauf bringen. Windows 98 landet dann auf C: und trägt sich schön im MBR ein. Danach kommt Windows XP. Der erkennt, daß auf C: bereits ein System sitzt, trägt es in seinen Bootloader ein und schreibt diesen in den MBR. Soweit so gut. Wann man Linux installiert, ist eigentlich egal, man muss nur folgendes beachten: Bei jeder Frage, wo Lilo hin soll, oder der Bootmanager oder irgendwas in der Art: Linux nichts in den MBR installieren lassen, also nicht nach hda!! Lilo (oder was ihr wollt) kommt auf die Systempartition von Linux, also nach hda2 und wird nachher im NT-Bootloader eingetragen.

Linux im NT-Bootloader eintragen

Wenn der Bootloader beim Booten nicht sichtbar ist, geht unter Windows XP zu Systemsteuerung → System → Erweitert → Starten und Wiederherstellen und aktiviert die Option »Anzeigerdauer der Betriebssystemliste«. Bei Windows NT findet Ihr die Option unter Systemsteuerung → System → Starten/Herunterfahren.

Um ein anderes System starten zu können, brauch der NT-Bootloader ein 512 Byte großes File im Wurzelverzeichnis der ersten primären Partition, das ihm sagt, wo er das System findet, das er starten soll. (Im Moment sollte z.B. eine Datei bootsect.dos unter C:\ stehen) Eine derartige Datei müssen wir für Linux jetzt erzeugen. Dazu gehen wir auf die Linux-Kommandozeile und benutzen den Befehl dd. Wir brauchen die ersten 512 Byte von hda2 und nur einen Block. Die Datei die wir erzeugen, können wir erstmal ins Home-Verzeichnis tun und dann nachher nach C:\ kopieren, oder wir mounten uns /dev/hda1 und schreiben sie gleich dahin, und zwar mit:

dd if=/dev/hda2 of=bootsect.lin bs=512 count=1

if heißt InputFile, da kommt die Partition hin, die wir eintragen wollen, of ist dann unsere gewünschte Datei. Die anderen Parameter sorgen für die korrekte Länge, wie oben erwähnt.

So jetzt geht's wieder in die Windows-Welt. In der Datei C:\boot.ini fügt Ihr einfach die Zeile C:\bootsect.lin="Debian Linux" ein und seid fertig. Was hier übrigens in den Gänsefüßchen steht, wird nachher im Bootmenü angezeigt, d.h. Eure Windows-Einträge könnt Ihr auch gleich mit anpassen. Windows XP setzt von sich aus nicht so sinnvolle Namen.

Noch ein Tip zum Schluß: Wenn Ihr jetzt Eure Lilo-Konfiguration ändert und wieder nach /dev/hda2 schreibt, müsst Ihr die Geschichte mit dd nochmal neu machen, sonst startet Linux nicht. Ein bisschen ausführlicher aber auf Englisch, hab ich diese Vorgehensweise im Web auf der Seite jaeger.morpheus.net gefunden.

Bemerkungen

Wichtig: Das NTFS-Laufwerk sollte dann ebenso hinter den FAT-Laufwerken angelegt werden, sonst hat man unter Windows 98 und XP nicht die gleichen Laufwerksbuchstaben. Man kann zwar unter XP die Dinger beliebig verändern, aber eben nur fast beliebig, die Systemplatte behält Ihren Buchstaben. (So wie oben ist es wie gesagt nicht bei mir, bei mir ist es durcheinander und ich muss jedesmal umdenken.) Das ganze erfordert vor dem Partitionieren ein bißchen Rechnen, damit die Dinger nachher auch alle die Größe haben, die sie haben sollen. Ich persönlich hab die Erfahrung gemacht, daß 4 GB für Win98 bei viel Software knapp werden können, lieber etwas mehr nehmen. Für Win XP braucht man etwa 2 GB mehr, also unter 7 GB würd ich da nicht mehr anfangen. Linux kann unter 2 GB kaum mit KDE und allem drum und dran installiert werden, da würd ich auch etwa die Maßstäbe wie für XP ansetzen. Wie groß die Swap sein soll, sagt jeder anders. Zu groß macht keinen Sinn. π mal Daumen doppelte Größe vom RAM, hieß es bei fli4l, ich hab hier ca. 1 GB genommen, ist bestimmt schon zuviel. Die Größe der Datenpartitionen muss jeder selbst wissen, für Videobearbeitung empfiehlt sich aber ein richtig große. Die ist bei mir jetzt ca. 60 GB groß bei ner 120 GB-Platte. Einen Pferdefuss hat das aber leider noch. bei FAT32 ist die maximale Dateigrösse auf 4 GB begrenzt.

Ergänzung: Nach positivem E-Mail-Feedback noch folgender Hinweis. Win98 sollte wirklich auf die primäre erste Partition. Linux und WinXP sehen das nicht so eng. Speziell XP kann sonstwo landen und muss nicht unbedingt ne primäre Partition haben. Bei Linux kann es unter gewissen Umständen Probleme beim booten geben, wenn die Partition zu weit hinten liegt. Wenn man Linux auf der zweiten primären installiert, sollte man auf der sicheren Seite sein.
Win98 sieht nachher von Haus aus nur FAT-Partitionen, deswegen auch FAT32 für die große Partition zum Datenaustausch. WinXP liest zusätzlich auch NTFS. Beide können ohne Kopfstände nix mit den Linux-Dateisystemen anfangen. Linux liest alles. NTFS schreiben ist unter anderen System als Windows NT/2000/XP gefährlich, weil Winzigweich NTFS nicht dokumentiert hat. Will man unter Linux NTFS schreiben, sollte man also sehr vorsichtig sein. Mehr dazu findet Ihr sicher im großen Weltnetz.

wichtiger Hinweis: Eine Neuinstallation von Windows 98 ist nach der ganzen Prozedur nicht sinnvoll. Win 98 überschreibt nämlich den MBR bei der Installation. Man soll wohl den MBR von der Wiederherstellungskonsole von Win XP mit fixmbr wieder herstellen können. Mir wurde allerdings berichtet, daß dies nicht 100% sicher funktioniert. Wer darauf Wert legt, regelmäßig sein System platt zu machen und neu zu installieren, sollte einen anderen Bootmanager wie z.B. den aus der Linuxwelt bekannten grub verwenden!
Alternativ müsste auch das Sichern des aktuellen MBR mit dd unter Linux möglich sein. Also erst sichern, dann Win98 neu drauf und dann MBR wieder zurück schreiben. Hab ich aber nicht ausprobiert bis jetzt.
Allerdings hab ich mich nochmal schlau gemacht im Netz. Der MBR liegt direkt in den ersten 512 Bytes der Platte und enthält ausserdem noch die Partitionstabelle. Das Sichern auf Diskette könnte unter Knoppix so aussehen:

sudo dd if=/dev/hda of=/mnt/floppy/hda.mbr bs=512 count=1

Wer nur den MBR also ohne Partitionstabelle sichern will, nimmt nur die ersten 446 Bytes:

sudo dd if=/dev/hda of=/mnt/floppy/hda.mbronly bs=446 count=1

Das Rückschreiben funktioniert analog mit vertauschtem if und of, aber Vorsicht, wer hier nicht weiß, was er tut, riskiert Datenverlust!
Das allein reicht allerdings noch nicht, um das System später wieder starten zu können. Auf jeden Fall sollte man von Laufwerk C: (bzw. der ersten primären Partition) die Dateien ntldr, ntdetect.com und boot.ini sichern. Wenn vorhanden muss auch die bootsect.dos gesichert werden. Da scheint WinXP den Original Bootsektor von Win98 drin zu speichern. Also alle die Dateien auf Diskette und dann könnte einem Neuinstallieren von Windows nichts im Weg stehen. Aber wie gesagt, getestet hab ich das noch nicht! :-)

Zum Schluss

Ich hab die Seite hier am 07.07.2003 nach bestem Wissen und Gewissen geschrieben, doch wie sang Westernhagen so schön:

Nur Garantien, die gibt uns keiner, der liebe Gott, auch der nicht, leider…

Das heißt, Ihr seid selbst verantwortlich, wenn Ihr irgendwas kaputt macht, im Zweifelsfall empfiehlt sich für wichtige Daten immer ein Backup!!

P.S.:

Mittlerweile verwende ich übrigens auf 2 von 3 Rechnern GRUB ;-)