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 nbd
sterownika i qemu-nbd
polecenia. Na Ubuntu jest w qemu-kvm
pakiecie.
Najpierw załaduj sterownik NBD:
# modprobe nbd
To powinno sprawić, że niektóre nbd
urządzenia /dev
.
Następnie zamontuj VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Powinno to uczynić /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
etc dla wszystkich partycji wirtualnych. Można je montować jak każde zwykłe urządzenie.
Migracja partycji
Użyj dd
do tego, odmontuj obie partycje przed operacją:
# dd -if=<nbd_device> -of=<real_partition>
na przykład.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Operacja dd
jest cicha, może to potrwać kilka minut, a nawet pół godziny. Podczas operacji możesz otworzyć terminal i użyć, fdisk -l
aby 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 disk
grupie, 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 dd
na 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 -ul
polecenia. start
Dziedzina 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 1C
przesunięciem. Mały endiean znaczy: 0xABCDEFGH
bę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/sdb
itd. Y jest numerem partycji. 0 dla /dev/sda1
, 1 dla /dev/sda2
itd.
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/system
dostępny do przeglądania chntpw
. Może to stanowić problem, jeśli litera dysku systemowego nie jest C. Ponieważ chntpw
moż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