Czy można konwertować maszyny wirtualne do środowisk fizycznych?

78

Można przekonwertować plik .vdi na plik .iso, który można nagrać na płytę CD lub DVD i ustawić go jak instalator. Lub Czy można konwertować maszyny wirtualne do środowisk fizycznych?

Wern Ancheta
źródło
1
To odpowiedź na AskUbuntu.com prawdopodobnie odnosi się do wielu środowisk działających na maszynach gospodarza Linux: askubuntu.com/a/32506/31592
blong

Odpowiedzi:

64

Tak i nie.

Za pomocą narzędzia VBoxManage możesz przekonwertować VDI na obraz dysku . To polecenie klonuje zarejestrowany obraz dysku wirtualnego do innego pliku obrazu. Jeśli chcesz przekonwertować dysk wirtualny na inny format, jest to oficjalne narzędzie VirtualBox do użycia [*].

VBoxManage clonehd file.vdi output.img --format RAW
  • Jeśli używasz dynamicznego VDI i masz starszą wersję VirtualBox, clonehd może nie działać poprawnie. Narzędzie wewnętrznych poleceń VBoxManage zawiera program konwertujący , który może konwertować dynamiczny VDI na surowy obraz dysku ( źródło ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img

Ale ... ten wyjściowy plik IMG nie jest obrazem ISO, a zainstalowany system operacyjny nie zostanie skonfigurowany do uruchamiania z rozruchowego dysku CD / DVD. Możesz „wypalić” (zapisać) IMG na dysk twardy i może on zostać uruchomiony na nagim sprzęcie (np. Nie na maszynie wirtualnej). Ale może nie, ponieważ system operacyjny zainstalowany na tym IMG spodziewa się zobaczyć wirtualny sprzęt, który zapewnia VirtualBox, i uruchamiasz go na prawdziwym sprzęcie, którego się nie spodziewa.

Niektóre wersje systemu Windows nie radzą sobie dobrze z tą sytuacją; niektóre dystrybucje Linuksa tak robią. Czasami możliwe jest skonfigurowanie systemu operacyjnego (wcześniej lub później) w celu migracji go z jednego środowiska do drugiego w ten sposób, ale określone kroki całkowicie zależą od migrowanego systemu operacyjnego.


W systemie Windows może być konieczne podanie pełnej ścieżki do programu:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]

Dodaj C: \ Program Files \ Sun \ VirtualBox do ŚCIEŻKI, aby użyć krótkiej wersji.


[*] Zakładam, że opcja „--format RAW” zostanie przekonwertowana na standardowy obraz dysku, tak jakbyś używał polecenia dd na fizycznym dysku twardym. Ale szczerze mówiąc, nie znalazłem żadnej dokumentacji, która to potwierdza, więc pamiętaj, że może to nie być poprawne.

[+] Właśnie przetestowałem oba polecenia w VirtualBox 3.1.2. Oba pliki wyjściowe są identyczne zgodnie z md5sum , ale nie w pełni przetestowałem pliki wyjściowe.

Zobacz także samouczek „Wszystko o VDI” na forach VirtualBox.

quack quixote
źródło
3
Co z wielkością VDI? Czy to ma znaczenie? Powiedzmy, że rozmiar VDI wynosi 20 GB, a rzeczywisty rozmiar dysku twardego to 200 GB ... Co by się stało?
Pwnna,
Ta pierwsza metoda „clonehd” wydaje się strasznie powolna. Ale drugi zadziałał.
Matt H
1
Pamiętaj też, że jeśli uda ci się uruchomić system operacyjny Windows w celu uruchomienia, w większości przypadków musisz go ponownie aktywować.
Kimmax,
Co jeśli sysprep /generalizebyłbyś najpierw w instalacji wirtualnej? To z pewnością przygotowałoby instalację do zainstalowania na nowym sprzęcie (lub fizycznym w tym przypadku)
Robula,
1
@Pwnna Kopiujesz obraz dysku twardego (nie tylko partycję, ale całą mapę partycji z partycjami). Zrobiłem to w przeszłości i pamiętam, aby zobaczyć, co opisuje ta odpowiedź, niewykorzystane / niepodzielone miejsce na końcu: serverfault.com/questions/268889
sudo
21

Jeśli plik vdi zawiera partycje i chcesz wyodrębnić tylko jedną z nich, użyj następujących poleceń:

Po pierwsze, jak powiedział wcześniej quixote, przekonwertuj plik VDI na plik RAW:

# VBoxManage clonehd file.vdi file.raw --format RAW

Następnie skonfiguruj urządzenie pętlowe dla obrazu:

# loopdev=$(losetup --show -r -f file.raw)

Użyj kpartx, aby utworzyć urządzenia dla każdej partycji w surowym pliku:

# apt-get install kpartx
# kpartx -a $loopdev

Sprawdź, jakie urządzenia mamy teraz. W tym przykładzie jest tylko jedno urządzenie, ponieważ w surowym obrazie jest tylko jedna partycja:

# ls /dev/mapper/loop*
/dev/mapper/loop0p1

Teraz zamontuj go, aby sprawdzić, czy wszystko działa poprawnie:

# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1

Użyj dd, aby skopiować zawartość partycji na inną partycję docelową:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M

Po zakończeniu ponownie usuń mapowania urządzeń:

# kpartx -d file.raw
dmoebius
źródło
Czy to możliwe w systemie Windows?
Ehsan
13

Odpowiedź jest jednoznaczna: tak, jeśli twoim hostem i systemem-gościem jest Linux. To się dzieje z pakietami qemui TKLPatch. Możesz używać zarówno plików VDI, jak i VMDK.

Czytaj więcej:

Alon Swartz
źródło
3
+1 „określony” z zastrzeżeniem „.. tak długo, jak gość jest linux” . a ich (twoje?) rozwiązanie opiera się na niektórych narzędziach TurnKey Linux. ale procedura wygląda na solidną. (witamy w Super User!)
quix quixote
5

Próbowałem VBoxManage clonehd file.vdi output.img --format RAWz zaakceptowanej odpowiedzi, ale bez większego powodzenia.

W przypadku maszyny wirtualnej z systemem Windows 8.1 na hoście z systemem Windows 7 zadziałało:

  1. Utwórz maszynę Windows 8.1 w VirtualBox, zainstaluj i używaj tak, jak normalnie robisz z maszyną wirtualną.
  2. Konwertuj dysk twardy Virtual Box .vdi na Windows VHD za pomocąVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Zamontuj dysk VHD na hoście na komputerze z systemem Windows jako dysk (możesz zamontować dysk VHD w menedżerze dysków w programie Zarządzanie komputerem.
  4. Sklonuj dysk VHD (zamontowany jako dysk) na inny nowy dysk twardy (w moim przypadku jest to laptop HD podłączony do USB) DriveImage XML lub podobne narzędzie do klonowania dysku. Teraz w zasadzie sklonowałeś wirtualny dysk twardy .vdi na goły metal.
  5. Zainstaluj nowy dysk twardy w komputerze. (w moim przypadku zamień dysk twardy laptopa)
  6. Włóż instalacyjną płytę USB / CD systemu Windows 8.1, uruchom ją, wybierz Opcje zaawansowane i Automatyczna naprawa. Automatyczna naprawa sprawi, że nowy dysk twardy będzie rozruchowy.
  7. Uruchom z nowego dysku twardego ze sklonowanym Windows 8.1 i uruchom Windows Update. Spowoduje to pobranie sterowników sprzętu komputera, które nie były znane podczas uruchamiania systemu Windows w VirtualBox. Konieczne będzie ręczne zainstalowanie brakujących sterowników.
  8. Odinstaluj dodatki gości VirtualBox. Opcjonalnie zainstaluj VirtualBox, aby Windows 8.1 systemu Windows mógł być hostem VirtualBox.
Jan H.
źródło
1
From @sum: Możesz spróbować BootICE zastąpić 6. krok i upewnić się, że zainstalowałeś właściwy MBR.
fixer1234,
Dzięki. Czy BootICE jest bardziej niezawodny w niektórych systemach Windows niż instalacja Windows 8.1? Czy krok 6, który opisałem, może zepsuć MBR?
Jan H
1
Zostało to opublikowane jako odpowiedź przez nowego użytkownika (uważam, że superuser.com/users/523958/sum ). Miał zostać usunięty, ponieważ nie kwalifikował się jako odpowiedź, więc skopiowałem post i zapisałem jako komentarz, aby nie został utracony. Nie znam tego osobiście.
fixer1234,
3

Robię ten proces bardzo szybko, używając tylko dwóch linii poleceń w Linuksie:

#VBoxManage internalcommands converttoraw your_disk_virtual.vmdk your_disk_virtual.img

LUB

#VBoxManage internalcommands converttoraw your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Mój pełny artykuł: http://www.previsioni.com.br/jailsonjan/?p=389

JailsonJan
źródło
Czy .img w tym przypadku będzie bootowalny?
Pumphouse
Myśle że nie. Widziałem podobną odpowiedź od użytkownika 0 powtórzeń, co wydawało się łatwe, jednak okazało się bezużyteczne.
T.Todua
0

Aby przekonwertować, użyj następującego polecenia:

VBoxManage clonehd CactiEZ-disk1.vmdk output.iso --format VMDK

Oto wynik:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c
Anupam
źródło