NTFS wo ganz anders
Eine neue Episode aus der Reihe: "Heute habe ich mal wieder mehr gelernt, als ich je wissen wollte über..." Dieses mal: NTFS.
Die prämisse war eigentlich ganz einfach: Der alte Laptop — ein gut gedienter Compaq EVO N150 der mehr Quirks als Funktionen hat — sollte eine größere Platte abbekommen. Eine solche fand sich auch noch im Fundus, wie gut dass ich so selten was wegwerfe. Und dann ging es auch schon los.
Das übliche Procedere
Die anfänglichen schritte waren soweit ganz OK: Platte ausgebaut, mit dem nächstbesten Unix ein image gezogen, dd_rescue ist unser freund. (Der Laptop hat nur USB1.1, was die max. Transferrate auf 1MB/s drückt. Also mit dem Generischen HDD-Adaper des Todes an einen etwas potenteren Rechner angeklemmt, siehe da, 4MB/s. Immerhin...)
Auf der alten platte ist noch jede menge gerümpel an Linuxpartitionen die eigentlich niemand mehr braucht (der den Laptop noch nutzt), also weg damit. Neue Platte partitioniert, etwas mehr platz reserviert (die neue Platte war etwas größer), Partitionsimage kopiert.
Platte wieder einbauen, und... NICHTS. Blinkender Cursor auf schwarzen Bildschirm.
Neues Zuhause
Nach langem und verzweifeltem hantieren in der Widerherstellungskonsole (FIXBOOT und FIXMBR waren die Stichworte)... keine Besserung. Kopfkratzen. Neuinstallation angesetzt, die bootet auch. Also: Platte OK, es liegt am Image. Noch mal kopiert, selbes ergebnis. Mehr Kopfkratzen. Tante Google fragen.
Siehe da, bei NTFS gibt es etwas, das nennt sich BPB — "Bios Parameter Block". Der wird vom Bootloader benutzt, um scheinbar wichtige Dinge auf der Platte zu finden. Und es gibt auch für Linux ein kleines Tool, welches diesen korrigiert. NTFSRELOC.
Was man also machen muss ist, nachdem man die Daten der Partition auf der Platte verschoben hat, den BPB anpassen, dass der Bootloader NTLDR anfahren kann. Der Ablauf ist in etwa wie folgt:
Das BIOS startet den MBR (code in Sektor 0 der Platte, erste 400-paar zerquetschte Bytes)
Der MBR-code sucht die erste als Aktiv markierte Partition, startet den Bootcode dort (ab Beginn der Partition)
Der Partitionsbootloader liest den BPB, lädt anhand dessen NTLDR und übergibt dahin
NTLDR liest die boot.ini und startet das passende Betriebssystem
Mein Problem lag also in Schritt 3, denn der BPB hat nicht mehr zum neuen Layout der platte gepasst, daher kein NTLDR und nur blinkender Cursor.
Kurz zusammengefasst
Was man also wirklich machen will um eine Windows Installation in einer NTFS-Partition auf eine neue Platte zu migrieren ist folgendes:
Neue Platte partitionieren
Partition kopieren
ntfsreloc
ntfsresize
boot.ini anpassen
fröhlich sein.