Jak skopiować zawartość VirtualDox VDI na partycję i uruchomić z niej system operacyjny podwójnie?

12

Jestem użytkownikiem Linuksa, ale trzymam ze sobą skompresowany plik ISO systemu Windows XP na pendrivie, ponieważ absolutnie potrzebuję systemu Windows, aby coś zrobić. Przez większość czasu działa to w VirtualBox.

Ale teraz chcę zagrać w niektóre gry, więc chciałbym uruchomić obraz systemu Windows natywnie. Mój komputer nie ma napędu CD, więc nie można po prostu nagrać obrazu ISO i przeprowadzić instalacji normalnie.

To, co próbuję zrobić, to przenieść zainstalowany obraz systemu Windows na fizyczną partycję NTFS na moim dysku twardym i skonfigurować GRUB, aby umożliwić mi podwójne uruchomienie.

Znalazłem wiele samouczków dotyczących tworzenia VDI na dysk fizyczny. Zakładają jednak, że chcę zastąpić cały dysk. Przeniesienie surowego obrazu dysku ddna partycję spowodowało uszkodzenie partycji.

Próbowałem także sztuczki VMDK, aby użyć tej pustej partycji i zainstalować na niej Windows. Chociaż faza instalacji w trybie tekstowym kończy się bez problemów, maszyna wirtualna nie będzie działać, albo zawiesza się i ciągle uruchamia się ponownie, albo po prostu natychmiast się zawiesza (w zależności od tego, jak utworzyłem VMDK, za pomocą -rawdisk /dev/sda3lub -rawdisk /dev/sda -partition 3).

Calmarius
źródło

Odpowiedzi:

4

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

Calmarius
źródło
0

możesz spróbować użyć partimage i gdisk do zrobienia tego. Weź gdisk lub inny program do partycji i zmień rozmiar bieżącego dysku / skonfiguruj partycję na dysku gdzieś. idealnie będzie to partycja podstawowa. Zwykle trzymam partycję 1 dla Windows i 2+ dla danych Linux.

po skonfigurowaniu partycji możesz użyć gdisk lub innego klona-ducha, aby utworzyć kopię zapasową plików lub prosty obraz na innym dysku. możliwe jest skonfigurowanie połączenia sieciowego z hostem, jeśli chcesz upuścić plik w ten sposób lub możesz utworzyć pliki img, a następnie skopiować z pliku vmdk do systemu hosta ... a następnie użyć oprogramowania do przywracania partycji do lokalizacji utworzonej w systemie hosta

skonfiguruj grub zgodnie z potrzebami, aby dodać bootowanie do tej partycji NTFS.

Kendrick
źródło
prawdopodobnie prawdopodobnie możesz także ustawić vmdk w mannterze, który pozwoliłby oprogramowaniu obrazkowemu bezpośrednio odczytać go z hosta jsut zależy od tego, jak to jest oprogramowanie obrazkowe.
Kendrick
Wczoraj spędziłem na badaniach i wreszcie mogłem uruchomić system Windows XP. Spiszę to szczegółowo. To nie jest banalne.
Calmarius
jest dość ironiczny, ale wkrótce będę musiał to zrobić. Mam komputer, który z jakiegoś powodu nie lubi instalować solaris, więc muszę pobrać dane z maszyny wirtualnej, którą mam, na nową maszynę.
Kendrick