/usr/home

just some random thoughts

Windows-Boot Camp Partition umziehen bzw. clonen

So eine Boot Camp Partition kann ungeheuer praktisch sein. Natürlich werden die meisten Mac Benutzer nicht zugeben wollen, dass sie eine Windows Installation auf Ihrem Mac haben! Ich oute mich hier mal, als jemand mit Windows auf dem Mac. Zugegeben: oft verwende ich es nicht, aber für die Steuererklärung (jaja, dafür würde eine VM auch ausreichen) oder den gelegentlichen Spieleabend und die ist Boot Camp die einfachste Möglichkeit. Neulich habe ich mir eine neue SSD zugelegt, die alte war mir zu klein und außerdem sind die neuen Modelle noch mal ein Stückchen schneller. Mein OS X konnte ich sehr einfach via TimeMachine Backup auf die neue SSD bringen und gleich loslegen. Die Windowsinstallation aber wird vom TimeMachine Backup nicht eingeschlossen - schon gar nicht so, dass sie wiederherstellbar wäre.

Nun gibt es da das Programm Winclone der der Firma TwoCanoes, welches sich dem Umzug der Windowspartition auf einen anderen Mac annimmt. Ich selbst habe dieses Programm nicht versucht, man hört aber wenig schlechtes und viel gutes über das Programm und würde es daher empfehlen! Für zur Zeit 20 (Basic-Edition) bzw. 50 (Standard-Edition) Dollar kann der unbedarfte Anwender wenig falsch machen. Im folgenden zeige ich, wie der Umzug auch ohne Winclone klappen kann.

Aber Achtung: Wenn du noch nie auf der Unix-Kommandozeile gearbeitet hast und zumindest Grundlegend verstehst, was du tun sollst, wirst du sehr wahrscheinlich irgendwann nicht mehr weiter kommen. Oder schlimmt noch: dein System unbrauchbar machen. Ich gebe aus diesem Grund auch nur Stichpunkte, wie so ein Umzug bewerkstelligt werden kann und keine Schritt-für-Schritt Anleitung.

Bevor du beginnst, erstelle Unbedingt ein Backup deiner Daten!

Die benötigten Werkzeuge installieren

Du benötigst zwei Werkzeuge: die ntfsprogs als Bestandteil von ntfs-3g und das Tool gptsync. Anstatt der NTFS-Tools kannst du auch das im System bereits installierte dd verwenden, die neue Partition muss dann aber gleich groß oder größer als die alte Partition (siehe unten) sein. Auch dauert das kopieren via dd länger als mit ntfsclone. gptsync ist nicht zwingend notwendig, du kannst dir die benötigten Informationen auch via gpt show /dev/diskOLD ermitteln und via fdisk einen MBR analog zur GPT erstellen, jedoch ist gptsync um Welten einfacher und schneller. Zu guter letzt sei Angemerkt, dass auch der Boot Camp Assistent einen MBR analog zur GPT erstellt, jedoch später (etwa bei Änderungen am Partitionslayout) nicht aktualisiert.

ntfsprogs

Die Sammlung der ntfsprogs ist Bestandteil von ntfs-3g. Ich habe ntfs-3g einfach via macports.org installiert, es gibt aber auch einen Installer aus 2010, der die Tools enthält.

gptsync

Ich habe mir den Source Code von GitHub geholt und das Tool via XCode selbst gebaut. Letztlich ist schon alles vorbereitet, man muss nur den Play-Button drücken und dann das binary links via Show in Finder anzeigen lassen und wegkopieren. Es gibt auch fertige binaries für OS X im Internet. Weg mag, kann sicherlich auch die nutzen.

NTFS Partition kopieren

Wenn alle Tools bereit sind, kann das kopieren beginnen. Wichtig: ich gehe im folgenden davon aus, dass Windows auf Slice 4 installiert ist. Bitte unbedingt vorher mit diskutil list prüfen!

Zunächst bietet es sich an, das NTFS-Dateisystem soweit zu verkleinern wie möglich. Dadurch muss später weniger Übertragen werden. Die minimalgröße kann mit ntfsresize --info /dev/diskNs4 ermittelt werden, das verkleinern geschieht via ntfsresize --size xG|xM /dev/diskNs4. Anschließend wird mit ntfsclone --force --overwrite /dev/diskOLDs4 /dev/diskNEWs4 das NTFS übertragen. So kann die neue Partition auch eine andere größe haben, als die ursprüngliche. Da Windows in einer Boot Camp Umgebung mit einem simuliertem BIOS ausgeführt wird und daher auf der Bootfestplatte nur das MBR-Partitionsschema akzeptiert, muss mit gptsync /dev/diskNEW das bestehende GPT Partitionsschema als MBR Pendant angelegt werden. Werden später Partitionen verändert, sollte gptsync erneut aufgerufen werden. Nun müssen wir noch den Bootblock der alten auf die Neue Festplatte kopieren dd if=/dev/diskOLD of=/dev/diskNEW bs=1 count=512 und die neue Windowspartition noch als active markieren:

fdisk -y -e /dev/diskNEW
flag 4
write
quit

Nun kann das Dateisystem auf die volle größe der neuen Partiton ausgeweitet werden ntfsresize -f /dev/diskNEW und die Partition als legacy Bootpartition markiert werden: bless --device /dev/diskNEWs4 --setBoot --nextonly

Theoretisch sollte sich Windows jetzt schon booten lassen, bei mir hat es aber noch nicht geklappt. Ich habe nun die Windows-Installations-DVD gestartet und alle per Kommandozeile Reparaturmaßnahmen ausgeführt (siehe Bootprobleme lösen).

Bootprobleme lösen

Microsoft stellt zum Glück ein paar Werkzeuge bereit, mit denen ein System wieder bootfähig gemacht werden kann. Es gibt auch einen machs-einfach-richtig-Knopf aber der scheitert z.B. daran, die Partition als aktiv zu markieren. Der Installer auf der Windows DVD lässt aber auch eine Kommandozeile öffnen, mit der die Reparatur manuell erfolgen kann.

Operating System not found

MBR fehlt/fehlerhaft. Neu schreiben mit Bootrec /fixMbr

ein blinkender Cursor erscheint

MBR wurde korrekt geschrieben, kann aber keine aktive Partition finden, um davon Stage2 zu laden.

1. Partition als aktiv markieren:

diskpart
list disk
select disk n
list partition
select partition n
active
exit

2. Bootblock der Partition aktualisieren:

Bootrec /fixBoot

Windows Bootloader erscheint, kein Windows wird geladen

BCD beschädigt oder nicht zum aktuellen Partitionslayout passend:
Bootrec /RebuildBcd

Hilft auch dies nicht, BCD löschen und komplett neu anlegen:

    bcdedit /export C:\BCD_Backup
    attrib c:\boot\bcd -s -h -r
    ren c:\boot\bcd bcd.old
    bootrec /RebuildBcd

Hinweis:

DeployStudio aktualisiert auch noch die NTFS Disk Geometrie. Ich glaube, das ist unnötig. Falls nicht mal einen Blick in deren Skript ntfsrestore.sh werfen. Dort kann man nachvollziehen, wie das geht.

Link zu ntfsclone/ntfsresize

Author: oliver