Wie man CentOS 7 und Windows Server 2012 R2 zur Kooperation bewegt.

Grub 2: Linux- und Windows-Parallelboot

| Autor / Redakteur: Thomas Drilling / Thomas Drilling

Drillings Open-Source-Eck
Drillings Open-Source-Eck (Bild: Thomas Drilling)

Wer CentOS 7 und Windows Server parallel installieren und abwechselnd nutzen möchte, muss die Grub2-Konfiguration manuell erweitern.

Die Kombination CentOS und Windows Server im Parallelbetrieb ist zumindest für ein Evaluierungs-Setup nicht ungewöhnlich. Normalerweise sind hierbei auch keine Probleme zu erwarten. Wer über Jahrzehnte Erfahrung mit Linux und Windows im Parallelbetrieb verfügt, denkt sich auch nichts dabei und installiert zunächst Windows Server -  das bekanntlich andere Systeme neben sich nicht „duldet“, bzw. per se ignoriert -, anschliessend Linux und verlässt sich darauf, dass Grub 2 die vorhandene Linux-Partiton erkennt und ein passendes Boot-Menü einrichtet. Soweit so gut.

Grub 2 zickt

Auch ich sah mich neulich mit genau jener Situation konfrontiert und musste feststellen, dass der beschriebene Mechanismus bei CentOS 7 und Windows Server 2012R2 leider nicht funktioniert. Ich hatte noch keine Zeit, die Ursache zu ermitteln, habe aber zunächst das Symptom durch manuelles Erweitern der Gub-2-Konfiguration wie folgt beseitigt.

Anmerkung: Grundsätzlich wurde Grub 2 so konzeptioniert, dass es beim Ausführen des Kommandos update-grub, bzw.  grub-mkconfig automatisch alle auf einem Computer installierten Betriebssysteme findet und auch automatisch in das Bootmenü aufnimmt. Daher ist eine manuelle Konfiguration von Grub 2 für so etwas eigentlich nicht erforderlich und in der Regel NICHT empfehlenswert.

Im beschriebenen Szenario ist es aber trotzdem notwendig, das Boot-Menü wie folgt manuell zu erweitert. Bei CentOS kommt erschwerend dazu, dass Red Hat, Fedora und CentOS beim Identifizieren der zu bootenden Linux-Systeme nicht mit Geräte-Dateien, sondern mit UUIDs arbeiten. Zur Lösung des Problems geht man wie folgt vor:

1. Man bootet CentOS und ermittelt mit

fdisk -l

das momentane Partitionslayout.

2. Da anschliessende Kommando

blkid

liefert die zugehörigen UUIDs. Hier notiert man sich die zur Windows-Partition Gehörige für die folgende Grub-Konfiguration:

3. Dann erweitert man unter CentOS 7 die Datei /etc/grub.d

/40_custom um folgenden Eintrag
menuentry "Windows 2012 R2" --class windows --class os {
insmod ntfs
set root='(hd0, 1)'
search --no-floppy --fs-uuid --set=root (UUID von blkid) chainloader +1 }

Hierbei muss man auf die Nomenklatur von Grub 2 achten, d. h. (hd0, 0) entspricht der ersten Partition auf Disk 1 ist, z.B. /dev/sda1 bei einer SCSI-Disk.

Bei CentOs 7 muss es zwingend die Datei /etc/grub.d/40_custom sein, weil CentOS die sonst reguläre Grub2-Konfiguration /boot/grub2/grub.cfg  in einzelne individualisierte Dateien aufteilt. Ist das geschehen, gibt man

grub2-mkconfig

ein, bootet das System neu und alles ist gut.