zurück zum Artikel

FAQ: Multiboot mit Linux

| Thorsten Leemhuis

Bei der Neuinstallation von Windows hat dieses den im MBR installierten Boot-Loader von Linux überschrieben. Wie stelle ich Grub wieder her, um Linux starten zu können?

Die Installationsmedien einiger Distributionen bieten Mechanismen, um den Boot-Loader neu zu installierten. Grub lässt sich aber auch mit Linux-Live-Medium wiederherstellen, indem man per „Change Root“ in das installierte Linux hineinwechselt. Bei einem auf /dev/sda5 liegenden Linux sind dazu die folgenden Schritte nötig:

mount /dev/sda5 /mnt
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt

Wer eine separate Boot-Partition angelegt hat, muss zusätzlich noch ein mount /boot/ ausführen. Der Befehl

grub-install /dev/sda 

installiert anschließend den Boot-Code von Grub in den MBR (Master Boot Record) des ersten von den SCSI- und ATA-Treibern des Kernels gefundenen Datenträger (/dev/sda).

Nach Linux-Versuchen mit einer Grub-Installation im MBR habe ich Linux wieder gelöscht. Dazu habe ich dessen Partition in der Datenträgerverwaltung entfernt und den freien Platz einer Windows-Partition zugewiesen. Jetzt startet Windows nicht mehr, da der Grub mit einer Fehlermeldung den Startvorgang unterbricht. Wie stelle ich den Boot-Manager von Windows 7 wieder her?

Das Einspielen von neuem MBR-Boot-Code sollte diesen Fall korrigieren, da Grub nur diesen verändert hat. Starten Sie dazu ihr Windows-Installationsmedium und rufen die Computerreparaturoptionen auf. Öffnen Sie eine Eingabeaufforderung und geben den folgenden Befehl ein:

bootrec /fixmbr 

Wenn Sie kein Installationsmedium des eingesetzten Windows zur Hand haben oder dieses keine Reparaturoptionen bietet, können Sie auch mit anderen Windows-Versionen oder sogar mit Linux neuen Boot-Code in den MBR schreiben. Bei der Live-CD von Ubuntu 10.10 platziert etwa der als Root auszuführende Befehl

cat /usr/lib/syslinux/mbr.bin > /dev/sda

neuen Boot-Code im MBR des Datenträgers /dev/sda.

Bei jeder Windows-Installation wird der über den MBR installierte Grub meines Linux überschrieben. Kann ich das System auch so einrichten, dass der Boot-Manager von Windows 7 mein Linux-System startet?

Dazu müssen Sie die Linux-Distribution bei der Installation anweisen, den Grub nicht in den MBR, sondern in den Boot-Sektor der Linux-Partition zu installieren – die dazu nötigen Optionen finden sich in den Installern der großen Distributionen bei der Datenträger- und Boot-Konfiguration. Da das BIOS den Boot-Loader dort nicht erreicht, startet das gerade installierte Linux allerdings nicht. Sie müssen daher den Rettungsmodus der eingesetzten Distribution oder ein Live-Linux bemühen, um als Root den Boot-Code von Grub auszulesen und in eine Datei zu überführen:

dd if=/dev/sda5 of=grub.img bs=512 count=1 

Das „/dev/sda5“ gilt es dabei durch den Namen des Geräts zu ersetzen, in dessen Boot-Sektor Grub installiert wurde. Kopieren Sie nun die Datei „grub.img“ in das Hauptverzeichnis der Windows-Systempartition (C:\) und starten das Microsoft-System. Rufen Sie dort als Administrator eine Eingabeaufforderung auf und geben den folgenden Befehl ein:

bcdedit /create /d "Linux" /application BOOTSECTOR 

Er liefert eine kryptische GUID zurück, die wie diese aussehen könnte: {78c69b17-9953-11df-9267-cf4991724634}. Kopieren Sie diese GUID in die Zwischenablage und verwenden Sie sie bei den folgenden Befehlen anstelle des „{GUID}“:

bcdedit /set {GUID} device partition=C:
bcdedit /set {GUID} PATH \grub.img
bcdedit /displayorder {GUID} /addlast

Die ersten beiden Kommandos teilen dem Boot-Manager von Windows mit, auf welcher Partition und in welcher Datei es den Boot-Code von Grub findet; erst der letzte Befehl legt den Menü-Eintrag an, über den Sie Grub beim nächsten Start auswählen können, um das installierte Linux zu starten. Die Datei grub.img sollten Sie zur Sicherheit an einem anderen Ort ablegen, um sich einen Teil der Prozedur bei einer neuen Windows-Installation zu sparen.

Mit Hilfe von Bcdedit können Sie später die Einträge auflisten und einzelne löschen:

bcdedit /enum all
bcdedit /delete {GUID}

Bevorzugen Sie grafische Lösungen, können Sie auf die Freeware EasyBCD zurückgreifen, auf die der Link zum Artikel verweist.

Ich spiele unter Ubuntu regelmäßig Updates ein. Mit jedem aktualisierten Kernel wächst das Boot-Menü um zwei Einträge. Ich habe einige durch Löschen aus der Datei /boot/grub/grub.cfg entfernt – nach dem nächsten Kernel-Update tauchten sie wieder auf. Wie werde ich sie dauerhaft los?

Ihre Änderungen sind nicht von Bestand, weil beim Installieren neuer Kernel oder beim Aktualisieren der Grub-Konfiguration ein Skript läuft, das für jeden der installierten Ubuntu-Kernel zwei Boot-Einträge anlegt. Durch Deinstallieren der alten Kernel können Sie das unterbinden.

Vor dem Runterschmeißen sollten Sie den neuesten, in der Boot-Reihenfolge typischerweise ganz oben stehenden Kernel einige Tage einsetzen, um sicherzugehen, dass er korrekt arbeitet. Außerdem gilt es, seine exakte Bezeichnung herauszufinden – etwa über die Angabe auf dem ersten Reiter der Systemüberwachung von Gnome oder den Kommandozeilenbefehl uname -r. Spuckt der etwa 2.6.35-22-generic aus, sollten Sie das Paket linux-image-2.6.35-22-generic nicht antasten. Die anderen mit „linux-image-2.6“ beginnenden Pakete können Sie jedoch mit Hilfe des Paket-Managers Synaptic deinstallieren. Wer fürchtet, dabei versehentlich den laufenden Kernel zu verbannen, delegiert das Entfernen an Programme wie „Ubuntu Tweak“, dessen „Package Clearer“ entsprechende Funktionen bietet. Sie finden das Programm über den Link am Ende des Artikels; er verweist auch auf einige Skripte, die ältere Kernel von der Platte vertreiben.

www.ct.de/1104168 [1] (thl [2])


URL dieses Artikels:
https://www.heise.de/-1172808

Links in diesem Artikel:
[1] http://www.ct.de/1104168
[2] mailto:thl@ct.de