Grub als Bootmanager für mehrere Windows-Installationen

Winfried Mueller, Start: 22.11.2007, Stand 25.09.09

Wie organisiert man einen Rechner, auf dem mehrere Windows-Versionen parallel installiert werden sollen? Grundsätzlich geht es auch ohne Bootmanager, weil Windows ein Bootmenü zur Verfügung stellt. Jedoch ist das von Windows angebotene Verfahren nicht sonderlich glücklich, weil die Windows-Versionen nicht völlig unabhängig voneinander sind. Das Bootmenü ist nämlich Bestandteil einer Windows-Version und fehlt diese, sind auch alle anderen nicht mehr lauffähig. Diese Abhängigkeit untereinander ist keine gute Lösung.

Ein Bootmanager muss her, der die unterschiedlichen Windows-Versionen völlig unabhängig voneinander starten kann.

Es gibt viele gute Bootmanager, manche sind kostenlos, andere müssen bezahlt werden. Warum sollte man nun gerade Grub dafür verwenden? Grub ist kostenlos und es ist Opensource. Wer zudem sowieso Linux benutzt, kennt diesen Bootmanager und weiß, wie er konfiguriert werden muss. Er funktioniert stabil und wird weiter gepflegt. Auch ist er gut dokumentiert und vielseitig konfigurierbar. Und wenn Linux zusätzlich auf den Rechner kommt, kann dieses problemlos eingebunden werden.

Grundsätzlich sollte das vorgestellte Verfahren mit allen Windows-Betriebssystemen auf gleiche Art und Weise funktionieren: Windows 98, Windows 2000, Windows XP und Windows Vista. Alle wurden von mir getestet.

Wer von Linux keine Ahnung hat und einen einfach zu installierenden Bootmanager sucht, den man mit ein paar Mausklicks auf seinen Rechner schubst, der sollte sich lieber nach was anderem umsehen. Ein wenig Tipparbeit und Wissen auf der Linux-Kommandozeile braucht es für das hier vorgestellte Konzept. Auch sollte man sich grunsätzlich mit grub auskennen. Grundlagen hierzu findet man in meinem Artikel: GrubEinfuehrung

Konzept

Ich gehe davon aus, dass bereits ein Windows auf dem Rechner ist und ein zweites eingerichtet werden soll. Ein Linux gibt es auf dem Rechner nicht.

Zuerst einmal prüft man, ob man das Windows über die Grub-Kommandozeile gestartet bekommt. Hierzu nutzt man am besten die Ultimate-Boot-CD, auf der Grub enthalten ist (Unter Filesystem-Tools sollte es zu finden sein). Wenn das Grub-Menü dort angezeigt wird, gibt man "c" für Kommandozeile ein. Klar, dass man jetzt die englische Tastaturbelegung kennen muss, weil das die Standard-Einstellung ist. Nun kann man z.B. folgendes eingeben:

 
root (hd0,0)
chainloader +1
boot

Liegt das erste Windows auf der ersten Partition der ersten Festplatte, so sollte nun dieses damit gestartet werden. Wenn dieser Test gelingt, kann es weiter gehen.

Das Konzept sieht folgendes vor: Wir legen eine kleine ext2 Linuxpartition an, auf der nur die grub-Dateien liegen inkl. der menu.lst, in der die Menübeschreibung enthalten ist. Bevor wir das zweite Windows installieren, muss zuerst die Partition des ersten Windows versteckt werden. Dies können wir mit grub bewerkstelligen. Später, wenn beide Systeme drauf sind, wird grub beim Start immer dafür sorgen, dass die aktuelle Windows-Partition wieder sichtbar gemacht und als Aktiv markiert wird. Die Partition der jeweils nicht zu ladenden Windows-Installation muss versteckt werden. Dann bootet Grub hoch. Weiterhin ist es vermutlich erforderlich, dass beide Windows-Installationen auf einer primären Partition liegen, zumindest habe ich es noch nicht ausprobiert, ob auch eine erweiterte Partition funktioniert Dabei sollte man aber bedenken, dass man maximal 4 primäre Partitionen auf einer Festplatte haben kann, bzw. 3 + eine erweiterte.

Partitionieren

Wir brauchen zumindest 3 Partitionen. Eine für Windows1, eine für Windows2 und eine für Grub. Die Grub-Partition kann sehr klein sein, wir brauchen nur ein paar KB. Es braucht auch keine primäre Partition zu sein.

Zum partitionieren nimmt man ein Werkzeug wie Acronis Disc-Director oder Partition-Magic. Eine Beispiel-Partitionierung könnte so aussehen:

 
Linux-Name  Grub-Name  Verwendung
hda1        hd0,0      Windows1
hda2        hd0,1      Windows2
hda3        hd0,2      Erweiterte Partition zur Aufnahme von hda5..x
hda5        hd0,4      Grub Partition, z.B. 100MB groß und ext2

Grub installieren

Eine einfache Möglichkeit ist die Verwendung einer Knoppix-CD. Damit startet man den Rechner und mountet dort dann die Grub-Partition. Darauf legt man das Grub-Verzeichnis an und kopiert alle notwendigen Dateien für Grub hinein. Hierzu öffnet man eine Shell und gibt dann folgendes ein:

 
sudo bash
cd /mnt
mount hda5
cd hda5
mkdir boot
cd boot
mkdir grub
cd grub
cp /KNOPPIX/lib/grub/i386-pc/* .
dd if=/dev/hda of=bootsector.bin bs=512 count=1

Je nach Knoppix-Version kann /mnt auch /media heißen. Letzter Befehl sichert den aktuellen Bootsektor, falls was schief geht, kann man den dann wieder mit "dd if=bootsector.bin of=/dev/hda" zurückspielen. Bei solchen Aktionen gilt jedoch absolute Vorsicht, man kann sich damit die ganze Platte zerschießen!

Im gleichen Verzeichnis legt man nun noch eine menu.lst Datei an. Dort kommt erstmal gemäß obigem Beispiel folgendes hinein:

 
default 0
timeout 30
color cyan/blue white/blue

title Windows1
hide (hd0,1)
unhide (hd0,0)
root (hd0,0)
makeactive
chainloader +1

title Windows2
hide (hd0,0)
unhide (hd0,1)
root (hd0,1)
makeactive
chainloader +1

Damit grub nun den Bootsektor umbiegt, müssen wir das neu erzeugte Grub-Verzeichnis mit einem Softlink nach /boot/grub hinlegen. Sonst kann das Grub von Knoppix nicht korrekt arbeiten, weil es dort nach seinen Dateien sucht.

 
ln -s /mnt/hda5/boot/grub /boot/grub

Nun können wir grub starten und das setup ausführen, was den Bootsektor neu schreibt und dort auch die Info einträgt, auf welcher Partition die Grub-Dateien liegen, damit beim Boot darauf zugegriffen werden kann.

 
grub
grub> root (hd0,4)
grub> setup (hd0)

Die erste Zeile startet grub, darunter ist dann "grub>" der Grub-Prompt, was man natürlich nicht mit eintippt. Nun sollte der Bootsektor neu geschrieben sein und Knoppix brauchen wir erstmal nicht mehr. Also ist des Zeit für einen Neustart. Dabei sollte dann das Grub-Menü auftauchen, welches 2 Einträge hat, wobei der erste dann auch korrekterweise das bisherige Windows startet. Wenn das alles funktioniert, kann es zum nächsten Schritt gehen.

Windows2 installieren

Bevor wir Windows2 auf hda2 installieren, müssen wir zuerst hda1 verstecken und hda2 aktiv machen. Das sollte mit dem zweiten Menüeintrag funktionieren, den wir bereits angelegt haben. Zwar bootet dieser dann nicht korrekt, weil noch kein System vorhanden ist, er verändert aber zumindest schon die Partitionseigenschaften.

Nun kann Windows2 wie gewohnt installiert werden. Cd einlegen und los gehts. Wichtig ist natürlich, auf die richtige Partition zu installieren. Wenn die Installation fertig ist und man die CD entfernt, muss beim nächsten Booten natürlich der zweite Menüeintrag des Grub-Menüs gewählt werden.

Fertig

Das sollte eigentlich alles gewesen sein, beide Windows-Versionen sollten sich so starten lassen. Natürlich kann man die menu.lst noch erweitern, um weitere Betriebssysteme oder Spezialfunktionen aufzunehmen. Für mehr Infos siehe auch mein Artikel: GrubEinfuehrung

Weblinks

Nachtrag

Anscheinend gibt es Probleme mit Windows XP. Das Setup der zweiten Installation erkennt die versteckte erste Partition und gibt ihr einen Laufwerksbuchstaben (typisch C:), weshalb dann das zweite Windows auf einem Laufwerk > C: installiert werden soll. Das ist unschön. Abhilfe könnte folgendes schaffen: Der Partitionstyp 12 scheint von Windows nicht als Partition mit Laufwerksbuchstaben genommen zu werden. Zumindest ist die Recovery-Partition auf einem Lenovo-Notebook von diesem Typ und diese Partition wird unter Windows nicht erkannt.

Man kann also nach der Installation des ersten Windows eine Knoppix-CD einlegen, dort eine Shell öffnen und mit "sudo bash" sich erstmal Adminrechte geben. Dann mit fdisk /l erstmal schauen, welche Platte man bearbeiten möchte. Und dann z.B. mit fdisk /dev/sda oder fdisk /dev/hda in fdisk gehen. Dort dann erstmal "p" aufrufen, um sich die Partitionstabelle zu listen. Und dann mit "t" der Partition, auf dem das erste Windows ist, temporär den Partitionstyp 12 geben (vorher notieren, was der bisherige Typ ist). Zum Schluß "w" nicht vergessen, um die Änderungen wegzuschreiben. Verlassen dann mit "q".

Nun sollte sich das zweite Windows XP korrekt installieren lassen. Es sollte also die zweite primäre Partition als C: erkannt werden. Nach Installation kann man dann die Änderung des Partitionstypes wieder rückgängig machen.

Bei Windows-XP sollte man auch drauf achten, keine Recovery-Version zu verwenden. Diese sind oft so ausgelegt, dass man ins Setup nicht mehr eingreifen kann und eine Windows-Installation einfach irgendwo hininstalliert wird.

Ausprobiert hab ich das ganze Verfahren noch nicht, nur ein paar Dinge angetestet.