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
- http://www.ultimatebootcd.com/
- http://www.knoppix.net/ - Knoppix
- http://www.boot-us.de - boot-us - Einfacher Bootmanager als Alternative zu Grub.
- http://www.acronis.de/ - Hier findet man die wirklich guten Werkzeuge von Acronis, z.B. Acronis Disc Director.
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.