Ich habe alles gestern mit Nachforschungen verbracht und konnte endlich Windows XP booten lassen. Dies sollte auch für andere Betriebssysteme ähnlich sein. Aber die Operation ist alles andere als trivial.
Da dies eine gefährliche Operation ist, empfehle ich, Ihre wertvollen Daten zu sichern.
Hier sind die Schritte:
Vorbereitung
In Windows XP müssen Sie den aktuellen Laufwerksbuchstaben und die Partitionseinstellungen löschen, sodass Sie vor der Migration alle Werte aus dem Schlüssel HKEY_LOCAL_MACHINE / MountedDevices auf der virtuellen Maschine löschen müssen. Der Kernel erstellt ihn beim nächsten Neustart neu. Auf virtuellen Linux-Maschinen bedeutet dies, dass die fstab nach der Migration repariert wird.
Mounten des VDI-Images
Sie können nicht einfach die gesamte VDI auf eine Partition kopieren, da diese auch einen MBR enthält. Sie müssen nur die virtuelle Partition kopieren, also müssen Sie zuerst einen Weg finden, um das VDI zu mounten.
Sie benötigen den nbd
Treiber und den qemu-nbd
Befehl. Unter Ubuntu ist es im qemu-kvm
Paket enthalten.
Laden Sie zuerst den nbd-Treiber:
# modprobe nbd
Dies sollte einige nbd
Geräte in machen /dev
.
Dann mounten Sie die VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Dies sollte machen /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
etc für alle virtuellen Partitionen. Diese können wie gewöhnliche Geräte montiert werden.
Partition migrieren
Verwenden Sie dd
für das, aushängen beide Partitionen vor der Operation:
# dd -if=<nbd_device> -of=<real_partition>
z.B.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Der Betrieb der dd
ist geräuschlos, dies kann einige Minuten dauern, sogar eine halbe Stunde. Während des Vorgangs können Sie ein Terminal öffnen und fdisk -l
damit sehen, ob alles gut läuft.
AKTUALISIEREN:
Anscheinend ist nbd keine narrensichere Lösung. Dies kann einen E / A-Fehler verursachen und dazu führen, dass dd ausfällt. Außerdem schlägt der nächste Versuch sofort fehl. Sie können auch versuchen, ein Raw-Disk-VMDK mit diesem Befehl (unter Linux) zu erstellen:
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Sie müssen in der disk
Gruppe sein, damit es funktioniert. Fügen Sie dann dieses VMDK der virtuellen Maschine als sekundäre Festplatte hinzu und verwenden Sie dann ein Live Linux ISO für dd
die Partition.
Beheben des Bootsektors der NTFS-Partition
Das ist der hackige Teil.
Wir sind fast fertig, aber Windows XP bootet nicht, da wir die Anzahl der verborgenen Sektoren des Dateisystems auf den Offset einstellen müssen 0x1C
. Dies ist im Grunde eine Reihe von Sektoren vor der NTFS-Partition. Wir können diese Nummer aus dem fdisk -ul
Befehl erhalten. Das start
Feld der Ausgabe gibt an, bei welchem Sektor die gegebene Partition beginnt, was im Grunde die Anzahl der Sektoren vor der Partition ist. Holen Sie sich die Zahl von dort und konvertieren Sie sie beispielsweise mit gcalctool in hexadezimal.
Öffne die Partition mit hexedit
:
# hexedit /dev/sda4
Schreiben Sie dann die Anzahl der ausgeblendeten Sektoren in Little-Endian-Reihenfolge am 1C
Offset. Little Endiean bedeutet: 0xABCDEFGH
wird sein GH EF CD AB
. Wenn die Hexa-Zahl kürzer als 8 Stellen ist, stellen Sie Null voran.
Wenn Sie fertig sind, speichern Sie es und beenden Sie es (Strg + X).
GRUB einrichten
Sie müssen GRUB anweisen, diese Partition direkt zu booten. Fügen Sie für GRUB den folgenden Menüeintrag hinzu:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Wo (hdX, Y)
identifiziert die Partition. X ist 0 für die Standardfestplatte, 1 für /dev/sda
, 2 für /dev/sdb
usw. Y ist die Partitionsnummer. 0 für /dev/sda1
, 1 für /dev/sda2
usw.
Dies sollte auch für GRUB2 ähnlich sein, verwendet jedoch eine etwas andere Syntax für Menüeinträge.
Letzter Schliff
Die neue NTFS-Partition ist startbereit. Sie müssen jedoch noch gehackt werden, um auf den Windows XP-Desktop zuzugreifen. Andere Systeme benötigen möglicherweise andere Hacks. Zuerst muss die boot.ini repariert werden.
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
Stellen Sie die Paritionsnummer entsprechend ein. Ich habe es auf der / dev / sda4 installiert. Die Partitionsnummer sollte also 3 sein.
Möglicherweise müssen Sie den MountedDevices-Eintrag in der Registrierung korrigieren, wenn Windows unmittelbar vor dem Anmeldebildschirm abstürzt.
Die Registrierung <path to windows>/system32/config/system
finden Sie unter chntpw
. Dies kann ein Problem sein, wenn Ihr Systemlaufwerksbuchstabe nicht C lautet. Da chntpw
die Registrierungsschreibfähigkeiten sehr begrenzt sind, müssen Sie auf einen Hexeditor wie ghex2 zurückgreifen und diesen reparieren. In meinem Fall müssen Sie \DosDevices\C:
das C suchen und durch einen anderen Laufwerksbuchstaben ersetzen F
.
Danach sollten Sie in der Lage sein, auf den Desktop zuzugreifen. Jetzt müssen Sie nach allen Treibern suchen. Dies liegt jedoch außerhalb des Bereichs dieses Lernprogramms.
Quellen
Verschieben von Windows XP auf eine andere Partition
Mounten Sie ein VDI unter Linux