Windows 7 – Multiboot

Der Wunsch Windows 7 parallel bzw. auf selber Festplatte zu installieren stellte sich bei meinen ersten Anläufen als “:-@%$#” dar. Ich wollte erreichen das sich beide Windows Installationen untereinander NICHT sehen. Somit wollte ich auch kein Windows Bootmanager oder EasyBCD verwenden. Da auch Linux (Debian) in der Betriebssystem Wunschliste steht, liegt es nahe Grub als Bootmanager für diese Aufgabe zu verwenden.

Mein Partitionsaufbau: (128GB SSD)

  • Partition-1, Primary, NTFS, 50GB, Windows 7 – Office
  • Partition-2, Primary, NTFS, 50GB, Windows 7 – Gaming
  • Partition-3, Logical, ext4, 18GB, Debian Wheezy

Das postive an der Sache ist das die Windows Partitionen gut unter Linux verwaltet werden können. Die Sicherung einer Windows Partition in eine komprimierte Datei ist einfach. Die Idee einfach die 2. Partition von Partition 1 zu kopieren, war wohl keine gute, es funktionierte nicht. Es funktioniert jedoch wenn man folgende Reihenfolge einhält..

Die Installationsreihenfolge, Installationsschritte:
1. Installation Windows 7, Partition 1

Die erste Windows Partition wird auf fabriksneuer Festplatte installiert.

Meine gewünschte Partitionsgrösse ist 50GB (51300 MB, um genau 50GB später in Windows zu sehen). Windows legt dabei auch eine 100MB Startpartition an.

Diese 100MB Startpartition muss/möchte ich wieder los werden, das funktioniert folgendermassen:

Die 50GB Partition löschen (ja richtig gelesen), dann die 100MB Partition selektieren, auf Erweitern klicken und diese nun auf die gewünschten 50GB anpassen (51300 MB).

Windows Installation bis zu Ende durchführen.

Im frisch installierten Windows konfiguriere ich noch gar nichts ein, starte den PC neu und weiter mit…

2. Installation Linux (Debian Wheezy)

Im Debian Setup Partitionsmanager lege ich nun auch gleich die 2. Windows Partition an (51300 MB), Details:

  • Benutzen als: FAT32
  • Einbindungspunkt: Keiner

Nun die logische ext4 Partiton für Debian Linux selbst. Restgrösse der Platte, bzw ich wähle 18 GB. ( 18532 MB). Ich verwende keine Swap Partition. Debian Installation nun bis zu Ende durchführen, Grub installieren=Ja !

Nach der (Grub) Installation startet Debian das System neu.

Nun erscheint auch schon der Grub Bootmanager, als 3. Punkt im Bootmenü erscheint die erste Windows Installation/Partition (sda1). Nun also bitte Debian Wheezy booten. (1. Eintrag)

Die nun folgenden Schritte werden in per Debian Root Console ausgeführt:

Zur Kontrolle die Partitionsausgabe mit Hilfe des Befehls “fdisk -l”:

Disk /dev/sda: 128.0 GB, 128035676160 bytes
16 heads, 63 sectors/track, 248085 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001b869
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   105062399    52530176    7  HPFS/NTFS/exFAT
/dev/sda2       105062400   210122751    52530176   17  W95 FAT32
/dev/sda3       210122752   250068991    19973120    5  Extended
/dev/sda5       210124800   248078335    18976768   83  Linux

Sieht gut aus, nun wird es etwas Tricky..

3. Grub: Bootsektor sichern, Partition löschen (Vor Windows Setup verstecken)

a: Bootsektor sichern.

Starte den Root Terminal und sichere den MBR (Masterbootrecord).

dd if=/dev/sda of=mbr.bin bs=512 count=1

b: (Optional) Image von Partition-1 erstellen. (Siehe am Ende der Seite unter: Weitere Tips)dd if=/dev/sda1 | gzip > ~/win7-sda1.img.gz

c: fdisk starten

fdisk /dev/sda

d: Partition-1 löschen (Wird nicht wirklich gelöscht, sondern die MBR Zuordnung entfernt)

[d] die erste Partition

Partition-2 Typ7 einstellen (NTFS..)

[t] die zweite Partition

Partition-2 Aktiv setzen

[a] die zweite Partition

e: Änderungen speichern

[w]

PC neustarten und..

 

4. Windows installieren auf Partition 2. (Wichtig, Partition-1 nicht anfassen/löschen !)

Bei der Partitionierung einfach die 2. Partition mit Menüpunkt “Erweitert” zuerst formatieren und dann in die 2. Partition installieren. Wenn die Installation abgeschlossen ist, ev. Hintergrundfarbe anpassen um so die Windows Vesionen unterscheiden zu können, sonst nichts.

Da nun der MBR von Windows überschrieben wurde muss man sich mit einer Linux-Live CD (Knoppix) oder Supergrub behelfen, ich verwende in diesem Fall Supergrub, einfach Detect OS wählen und schon kann Debian Wheezy gebootet werden.

Und wieder ein paar Befehle für die Root Console:

Bootsektor wiederherstellen:

dd if=mbr.bin of=/dev/sda

Partition-2 Typ7 einstellen (NTFS..)

fdisk /dev/sda

[t] die zweite Partition

[w] speichern, (sync)

Kontrolle der Partitionen mit “fdisk -l “: (Windows Partition-1 also nun wieder sichtbar)

Disk /dev/sda: 128.0 GB, 128035676160 bytes
16 heads, 63 sectors/track, 248085 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001b869
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   105062399    52530176    7  HPFS/NTFS/exFAT
/dev/sda2       105062400   210122751    52530176   17  Hidden HPFS/NTFS
/dev/sda3       210122752   250068991    19973120    5  Extended
/dev/sda5       210124800   248078335    18976768   83  Linux

 

Nun kann getestet werden ob Grub beide Windows Installationen/Partitionen erkennt/einbindet.

update-grub

Die Ausgabe sollte so aussehen:

Generating grub.cfg …
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
Found Windows 7 (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sda2
done

5. Grub anpassen, Windows Partitionen verstecken

Damit sich die beiden Windows Installationen gegenseitig nicht sehen bzw beeinflussen können, werden nun die Partitionen voneinander beim starten versteckt. Vorteil bei dieser folgenden Variante ist auch das nach einem Kernel-, Grub-Update nichts nachträglich geändert werden muss.

Wir lassen und nun den Inhalt der grub.cfg anzeigen (cat /boot/grub/grub.cfg), dabei interessiert uns nur der Inhalt zwischen 30_os-prober

### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Windows 7 (loader) (on /dev/sda1)” –class windows –class os {
insmod part_msdos
insmod ntfs
parttool (hd0,1) hidden-
parttool (hd0,2) hidden+
parttool (hd0,1) boot+
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set=root F2CA31D8CA3199B5
chainloader +1
}
menuentry “Windows 7 (loader) (on /dev/sda2)” –class windows –class os {
insmod part_msdos
insmod ntfs
parttool (hd0,2) hidden-
parttool (hd0,1) hidden+
parttool (hd0,2) boot+
set root='(hd0,msdos2)’
search –no-floppy –fs-uuid –set=root 2EA6C446A6C40FEF
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
 

Diesen Zeilen fügen wir nun in die Datei /etc/grub.d/40_custom am Ende ein, sieht dann so aus:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the ‘exec tail’ line above.
### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Windows 7 (loader) (on /dev/sda1)” –class windows –class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set=root F2CA31D8CA3199B5
chainloader +1
}
menuentry “Windows 7 (loader) (on /dev/sda2)” –class windows –class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)’
search –no-floppy –fs-uuid –set=root 2EA6C446A6C40FEF
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
 

Nun fügen wir noch die wichtigen parttool Zeilen ein (Partitionen verstecken bzw. aktiv setzen). Ich passe ausserdem noch die Beschreibung an, sieht nach der Bearbeitung so aus:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the ‘exec tail’ line above.
### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Windows 7 (Office) (on /dev/sda1)” –class windows –class os {
insmod part_msdos
insmod ntfs
parttool (hd0,1) hidden-
parttool (hd0,2) hidden+
parttool (hd0,1) boot+
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set=root F2CA31D8CA3199B5
chainloader +1
}
menuentry “Windows 7 (Gaming) (on /dev/sda2)” –class windows –class os {
insmod part_msdos
insmod ntfs
parttool (hd0,2) hidden-
parttool (hd0,1) hidden+
parttool (hd0,2) boot+
set root='(hd0,msdos2)’
search –no-floppy –fs-uuid –set=root 2EA6C446A6C40FEF
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
 

Zu guter letzt wird die automatische OS Erkennung deaktiviert. (da wir nun die Konfiguration manuell erstellt haben). Dazu öffnen wir die Datei /etc/default/grub, und fügen die Zeile GRUB_DISABLE_OS_PROBER=true ein. In der Zeile GRUB_DEFAULT= können wir auch gleich einstellen welches System standardmässig gestartet werden soll.
Auszug nach Bearbeitung von /etc/default/grub:

# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n ‘Simple configuration’
GRUB_DEFAULT=”Windows 7 (Office) (on /dev/sda1)”
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet”
GRUB_CMDLINE_LINUX=””
GRUB_DISABLE_OS_PROBER=true
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD …)
#GRUB_BADRAM=”0x01234567,0xfefefefe,0x89abcdef,0xefefefef”
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480
# Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY=”true”
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE=”480 440 1″

Abschliessend noch ein update-grub ausführen, FERTIG

Viel Spass beim Multi booten..

 


Weitere Tips:

Falls zu einem späteren Zeitpunkt die /etc/grub.d/40_custom bearbeitet wird, muss danach ein update-grub ausgeführt werden !

Falls eines der Windows Systeme Startprobleme haben sollte was den Einsatz von den Windows Reparaturfunktionen notwendig macht, muss zuvor wieder die andere Windows Partition mit fdisk entfernt werden, und nach der Reparatur der zuvor gesicherte MBR wieder zurückgesichert werden. Andernfalls wird Windows auf der 1. Partition den Windows eigenen Bootmanager installieren.

 

Sichern einer Windows Partition unter Linux:

Die einfachste Möglichkeit ist das sichern per “dd”. (jedoch langsam, da auch leere Sektoren gesichert werden)

dd if=/dev/sda1 | gzip > ~/win7-sda1.img.gz

Effektiver und schneller geht es zb. mit partclone.

Kann unter Debian einfach mit folgendem Befehl installiert werden:

apt-get install partclone

Sichern der NTFS Partition 1:

partclone.ntfs -c -d -s /dev/sda1 -o win7-sda1.img

Rücksichern der NTFS Partition 1:

partclone.ntfs -r -d -s win7-sda1.img -o /dev/sda1

 

Default Eintrag in Grub ändern:

Möchte man anstatt Linux standardmässig Windows starten so muss diese Änderung in /etc/default/grub eintragen werden. Der Eintrag für meine 1. Windows Partition würde wie folgt aussehen:

GRUB_DEFAULT=2

Anstatt mit Zahl kann man jedoch auch den Namen reinschreiben (Hochkomma verwenden !)

GRUB_DEFAULT=”Windows 7 (Office) (on /dev/sda1)”

Wichtig, nach der Änderung ein update-grub ausführen:

update-grub

Schreibe einen Kommentar



error: