NTFS-Basteleien mit Linux

Willemers Informatik-Ecke

Windows-Installation portieren

Eine existierende Windows-Partition soll auf eine andere Festplatte übertragen werden. Sei es, weil eine neue Festplatte eingebaut werden soll oder um eine bestehende Installation auf einen neuen Rechner zu portieren. Die Übertragung mit Bordmitteln von Windows dürfte wohl kaum mögich sein. Mit einem Linux-USB-Stick ist eine Übernahme möglich. Ob diese Version dann lauffähig ist, hängt dann aber mehr von Windows als von Linux ab.

Im ersten Schritt wird auf der neuen Festplatte ein nacktes Windows installiert. Auf diese Weise ist der Bootsektor in Ordnung und die Festplatte für den Betrieb von Windows korrekt partitioniert und formatiert.

Nun wird die Original-Festplatte mit dem Rechner verbunden. Sei es über den Original-Controller, was den Vorteil einer schnelleren Datenübertragung hat, oder mihilfe eines USB-Gehäuses.

Im nächsten Schritt wird ein Linux von einer Live-CD oder einem USB-Stick gebootet. Nun wird geprüft, welche Festplatte unter welchem Device-Namen angeschlossen ist. Eine Übersicht schafft der Befehl fdisk.

# fdisk -l
Anhand der Festplattengrößen und der Partitionierung dürfte zu ermitteln sein, welche Festplatte unter welchem Device angeschlossen ist. In meiner Umgebung liegt die neue Platte auf /dev/sda, der Linux-USB-Stick auf /dev/sdb und die bisherige Platte auf /dev/sdc.

Mit dem Befehl ntfsclone wird nun der Inhalt der Partition /dev/sdc1 über den bestehenden Inhalt der Partition /dev/sda1 geschrieben.

# ntfsclone --overwrite /dev/sda1 /dev/sdc1
Diese Übertragung funktioniert natürlich nur, wenn die Zielpartition mindestens genaus groß ist, wie die Quellpartition. Es wird nur der belegte Teil der Partition übertragen.

Anschließend nutzt die Installation allerdings maximal den Platz der Platte, den die Partition ursprünglich hatte. Um auch den Rest der typischerweise größeren neuen Partition zu nutzen, wird das NTFS-Dateisystem in der Größe angepasst. Ist die neue Partitionsgröße beispielsweise 250 GB, so lautet der Befehl:

# ntfsresize --size 250G /dev/sda1
Nun kann der Rechner heruntergefahren werden. Der Linux-USB-Stick und die Original-Festplatte können entfernt werden. Nun wird die neue Festplatte neu gestartet. Das Windows dürfte hochfahren und melden, dass das Dateisystem geprüft werden muss. Das wird eine gewisse Zeit dauern. Anschließend wird automatisch ein Reboot durchgeführt.

Windows wird dann hoffentlich einwandfrei starten und dann ggf. neue Treiber anfordern.

Windows-Partition archivieren

Auf der externen Festplatte befindet sich eine Windows XP Partition auf /dev/sdb1. Sie soll archiviert werden, aber nicht so viel Platz wegnehmen
# umount /dev/sdb1
# ntfsresize --size 15G /dev/sdb1
ntfsresize v2.0.0 (libntfs 10:0:0)
ERROR: Volume is scheduled for check.
Run chkdsk /f and please try again, or see option -f.
# 
Nun kann die verkleinerte NTFS-Partition in eine Datei umkopiert werden.
ntfsclone --force --save-image --output WinXPBackup.img /dev/sdb1
Wieder rückzuholen sollte es auf die folgende Methode sein:
# ntfsclone --restore-image --overwrite /dev/sda1 WinXPBackup.img
Falls die Zielpartition 80 GB beträgt, wäre dazu ein Resize erforderlich:
ntfsresize --size 80G /dev/sda1
Damit vor dem Booten ein Windows CHECKDISK erzwungen wird und damit die Größe voll genutzt wird, wäre auch noch der Befehl erfoderlich:
# ntfsfix /dev/sda1

Homepage (C) Copyright 2011 Arnold Willemer