Wczoraj spędziłem na badaniach i wreszcie udało mi się uruchomić system Windows XP. Powinien być nieco podobny również w przypadku innych systemów operacyjnych. Ale operacja jest wszystkim, ale nie trywialna.
Ponieważ jest to niebezpieczna operacja, zalecamy wykonanie kopii zapasowej cennych danych.
Oto kroki:
Przygotowanie
W przypadku systemu Windows XP musisz zapomnieć o bieżącej literze dysku i ustawieniach partycji, dlatego przed migracją musisz usunąć wszystkie wartości z klucza HKEY_LOCAL_MACHINE / MountedDevices na maszynie wirtualnej. Jądro odbuduje go przy następnym restarcie. Na maszynach wirtualnych z systemem Linux oznacza to naprawienie fstab po migracji.
Montowanie obrazu VDI
Nie można po prostu skopiować całego VDI na partycję, ponieważ zawiera ona również MBR. Musisz skopiować tylko partycję wirtualną, więc najpierw musisz znaleźć sposób na zamontowanie VDI.
Potrzebujesz nbdsterownika i qemu-nbdpolecenia. Na Ubuntu jest w qemu-kvmpakiecie.
Najpierw załaduj sterownik NBD:
# modprobe nbd
To powinno sprawić, że niektóre nbdurządzenia /dev.
Następnie zamontuj VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Powinno to uczynić /dev/nbd0p1, /dev/nbd0p2, /dev/nbd0p3etc dla wszystkich partycji wirtualnych. Można je montować jak każde zwykłe urządzenie.
Migracja partycji
Użyj dddo tego, odmontuj obie partycje przed operacją:
# dd -if=<nbd_device> -of=<real_partition>
na przykład.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Operacja ddjest cicha, może to potrwać kilka minut, a nawet pół godziny. Podczas operacji możesz otworzyć terminal i użyć, fdisk -laby sprawdzić, czy wszystko idzie dobrze.
AKTUALIZACJA:
Najwyraźniej NBD nie jest niezawodnym rozwiązaniem. Może to spowodować błąd we / wy i spowodować awarię dd. Co więcej, następna próba kończy się niepowodzeniem natychmiast. Możesz także spróbować utworzyć dysk twardy VMDK za pomocą tego polecenia (w systemie Linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Musisz być w diskgrupie, aby to działało. Następnie dodaj ten vmdk do maszyny wirtualnej jako dodatkowy dysk twardy, a następnie użyj ISO Live Linux ddna partycji.
Naprawianie sektora rozruchowego partycji NTFS
To jest hackish część.
Jesteśmy prawie gotowi, ale Windows XP nie chce się uruchomić, ponieważ musimy ustawić liczbę ukrytych sektorów systemu plików z przesunięciem 0x1C. Jest to w zasadzie liczba sektorów przed partycją NTFS. Możemy uzyskać ten numer z fdisk -ulpolecenia. startDziedzina stanów wyjściowych, które sektor dana partycja rozpoczyna się, co jest w zasadzie liczba sektorów przed partycji. Pobierz więc stamtąd liczbę, przekonwertuj ją na szesnastkową, używając na przykład gcalctool.
Otwórz partycję za pomocą hexedit:
# hexedit /dev/sda4
Następnie napisz liczbę ukrytych sektorów w małej kolejności endianów z 1Cprzesunięciem. Mały endiean znaczy: 0xABCDEFGHbędzie GH EF CD AB. Jeśli liczba szesnastkowa jest krótsza niż 8 cyfr, poprzedź ją zerem.
Po zakończeniu zapisz go i wyjdź (Ctrl + X).
Konfigurowanie GRUB
Musisz powiedzieć GRUB, aby uruchomił się bezpośrednio z tej partycji, dla GRUB dodaj następującą pozycję menu:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Gdzie (hdX, Y)identyfikuje partycję. X oznacza 0 dla domyślnego twardego dysku, 1 dla /dev/sda, 2 dla /dev/sdbitd. Y jest numerem partycji. 0 dla /dev/sda1, 1 dla /dev/sda2itd.
Powinno to być podobne również dla GRUB2, ale używa nieco innej składni dla pozycji menu.
Ostatnie poprawki
Nowa partycja NTFS jest gotowa do uruchomienia. Ale nadal potrzebujesz hakowania, aby uzyskać dostęp do pulpitu systemu Windows XP. Inne systemy mogą wymagać różnych hacków. Najpierw należy naprawić boot.ini.
[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
Ustaw odpowiednio numer parycji. Zainstalowałem go na / dev / sda4. Więc numer partycji powinien wynosić 3.
Może być konieczne naprawienie wpisu MountedDevices w rejestrze, jeśli Windows zawiesza się tuż przed ekranem logowania.
Rejestr jest <path to windows>/system32/config/systemdostępny do przeglądania chntpw. Może to stanowić problem, jeśli litera dysku systemowego nie jest C. Ponieważ chntpwmożliwości zapisu w rejestrze są dość ograniczone, musisz cofnąć się i użyć heksitora, takiego jak ghex2, aby go naprawić. W moim przypadku musisz znaleźć \DosDevices\C:i zastąpić literę C inną literą dysku F.
Po tym powinieneś być w stanie dotrzeć do pulpitu, teraz musisz polować na wszystkie sterowniki, ale to nie wchodzi w zakres tego samouczka.
Źródła
Przeniesienie systemu Windows XP na inną partycję
Zamontuj VDI pod Linuksem