Jak korzystać z prawdziwej partycji z zainstalowanym systemem Windows 7 w VirtualBox VM?

37

Moje Ubuntu 12.04 jest zainstalowane, /dev/sda5 a system Windows 7 włączony /dev/sda1. Kiedy uruchamiam Ubuntu, chciałbym użyć Virtualbox do uruchomienia Windows 7 na maszynie wirtualnej. Partycja systemu Windows 7 ma pojemność 1 TB i jest w połowie pełna, tzn. Duża, więc nie chcę kopiować jej na wirtualny dysk twardy.

Przeczytałem, że można użyć prawdziwego dysku twardego dla maszyny wirtualnej Virtualbox, ale różne instrukcje, które znalazłem, różnią się od siebie i wydaje mi się, że nie mogę go uruchomić. Czy ktoś zna sposób na to, aby działał w Ubuntu 12.04 i Virtualbox 2.1.12_Ubuntu r77245 (najnowsza wersja Ubuntu zainstalowała repozytorium)?

Proszę opublikować, jak to działa, ponieważ chcę ponowić próbę dowolnej metody, która może działać.

Jazz
źródło
Dlaczego twoja partycja MSWIN 1TiB? Chociaż nie jest to kompletne rozwiązanie: jeśli to możliwe, przenieś wszystko, co nie musi tam być (dane ... pliki multimedialne?), A następnie zmień rozmiar partycji, co ułatwi dowolne podejście. Jeśli chcesz przejść ścieżkę obrazu, wyczyszczenie, a następnie zmniejszenie tej partycji pozostawi ci wystarczająco dużo miejsca, aby zrobić pełny obraz mniejszej, nowej partycji. :-)
Alastair

Odpowiedzi:

27

Polecenie, które chcesz, to

VBoxManage internalcommands createrawvmdk -filename Win7.vmdk -rawdisk /dev/sda -partitions 1

Spowoduje to utworzenie specjalnego pliku dysku wirtualnego VMDK (Win7.vmdk), który w rzeczywistości jest wskaźnikiem do partycji dysku hosta /dev/sda1.

Teoretycznie możesz użyć tego jako pliku dyskowego dla maszyny wirtualnej do uruchomienia bezpośrednio z faktycznej partycji dysku, ale ...

  • (a) Nigdy tego nie próbowałem, więc nie wiem, jak wiarygodny
  • (b) mogą wystąpić problemy z aktywacją systemu Windows w zależności od klucza licencyjnego i tego, czy system Windows zdecyduje, że wykryty „sprzęt” znacznie się zmienił
StarNamer
źródło
Dziękuję Ci. Nawet nie pomyślałem o problemie z aktywacją. To z pewnością położy kres moim planom.
Jazz
1
Ponadto, nawet jeśli zadziałało (co wątpię), możesz poważnie uszkodzić system Windows podczas uruchamiania zarówno z rozruchu, jak i maszyny wirtualnej.
Takkat
@ ubnewbie2: Prawdopodobnie spróbowałbym tego tylko jako eksperymentu i / lub przy użyciu jakiegoś klucza licencjonowania zbiorowego i prawdopodobnie widziałbym to jako operację jednostronną; tzn. będziesz miał więcej trudności z próbą odwrócenia. Właściwie uruchamiam system Windows 7 i używam maszyny Wirtualnej VirtualBox z Ubuntu, często w trybie pełnoekranowym, więc komputer wydaje się mieć tylko system Linux i byłby bardziej pewny, że uruchomi Ubuntu z surowej partycji dysku.
StarNamer,
Do twojej wiadomości, próbowałem teraz w odwrotnej kolejności. Musiałem zmienić maszynę z systemem Ubuntu na Win 7, więc zwolniłem trochę miejsca, zmieniając rozmiar partycji i tworząc nową i instalując Win 7. To zastąpiło grub2 z bootloaderem systemu Windows, więc zainstalowałem VirtualBox i stworzyłem nową maszynę wirtualną, z minimalny dysk wirtualny, z którego można rezerwować, który następnie korzysta z istniejących „surowych” partycji do uruchomienia. Działa OK, choć nieco powolnie z powodu zmniejszonej pamięci i widząc tylko 1 rdzeń procesora (zamiast 4).
StarNamer,
-partycje na końcu lista partycji, które „wirtualna skrzynka” ma zobaczyć (nie partycja, której chcesz użyć) VBoxManage internalcommands --help, pokaże ci inne rzeczy, które możesz zrobić za pomocą poleceń wewnętrznych, a także znaczenie opcji.
dekoder łodzi
16

Tak, możesz to zrobić za pomocą wewnętrznego createrawvmdkpolecenia, które nie utworzy całego obrazu dysku, ale wskaźnik do rzeczywistego sprzętu.

Można to zrobić na dwa sposoby

  • A. Pełny obraz dysku (/ dev / sdb)

    sudo VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb
    
  • B. Obraz partycji

    Jak pokazał @StarNamer, możesz użyć tylko jednej lub kilku partycji.

    Aby utworzyć obraz tylko jednej partycji (/ dev / sda1):

    sudo VBoxManage internalcommands createrawvmdk -filename sda1.vmdk -rawdisk /dev/sda -partitions 1
    

    Aby utworzyć niestandardową tablicę partycji, która będzie mapować / dev / sda2 i / dev / sda1 w tej kolejności:

    sudo VBoxManage internalcommands createrawvmdk -filename sda2_1.vmdk -rawdisk /dev/sda -partitions 2,1
    

Najbardziej uderzającą różnicą będzie to, że pełny obraz dysku będzie używał bootloadera i tablicy partycji dokładnie tak, jak na dysku, więc teoretycznie (zrobiłem to wcześniej tylko w qemu) będziesz mógł skonfigurować system operacyjny z maszyny wirtualnej. Z mojego ograniczonego doświadczenia mogę powiedzieć, że obraz całego dysku będzie działał dokładnie tak samo qemu -hda /dev/sdb.

Uwaga: jeśli używasz użytkownika do uzyskania dostępu do dysku, musisz dodać go do grupy diski vboxusers, np

sudo usermod -aG disk,vboxusers ubuntu

następnie upewnij się, że ponownie się zalogujesz lub ponownie uruchomisz komputer.

Dalsza lektura:

JLarky
źródło
„pełny obraz dysku użyje programu ładującego i tablicy partycji dokładnie tak, jak na dysku” - w którym scenariuszu, pierwszy (/ dev / sdb) lub drugi (z określonymi partycjami)?
naught101
1
Ponadto Virtualbox musi być uruchomiony jako root, w przeciwnym razie zostaniesz Permission problem accessing the file for the medium '/home/naught101/sda2_windows.vmdk'
naught101
3
„Ponadto, Virtual-Box musi być uruchomiony jako root”. Właściwie nie, musisz być członkiem grupy dysku. Znacznie bezpieczniejsze niż uruchamianie virtual-box jako root.
2
Oto, co działało dla mnie z Ubuntu 16.04 jako systemem hosta i Windows 10 jako gościem: utworzyłem plik .vmdk przy użyciu sudo VBoxManage internalcommands createrawvmdk -filename sda1_2_3.vmdk -rawdisk /dev/sda -partitions 1, 2, 3. W ten sposób załączyłem partycję Windows, a także partycję modułu ładującego EFI. Następnie wykonałem instrukcje shilki na virtualbox.org/ticket/7702 i dodałem cloverefiboot. Działa jak marzenie!
dzmanto
Możesz również poprzedzić komendę VirutalBox (i VBoxManage), sudo -g diskaby tylko przyznać dostęp do virtualbox, ale nie wszystkie inne procesy.
Jan Hudec
0

Istnieje opcja Dysku o nazwie „Niezmienna”, więc teoretycznie, jeśli wybierzesz tę opcję dla vmdk łączącego się z twoim surowym dyskiem, nie powinna ona zmieniać oryginalnej partycji.

Aby to zrobić, otwórz „Virtual Media Manager” znajdujący się w „Plik”, wybierz obraz i kliknij „Modyfikuj” (Musisz upewnić się, że ten obraz nie jest dołączony do żadnej maszyny, w przeciwnym razie pojawi się błąd). Teraz możesz ustawić typ nośnika na „Niezmienny”.

Jednak tego nie testowałem. Jeśli ktoś to zrobi (oczywiście przy konfiguracji testowej), dobrze byłoby zgłosić się tutaj.

Czy ktoś zastanawia się przeciwko temu pomysłowi?

Esokrates
źródło
0

Od kilku lat używam podwójnie uruchamianego systemu Windows i Ubuntu z partycją Ubuntu, a także uruchamiam do Windows VirtualBox, aby skorzystać z możliwości ekranu dotykowego, których Linux jeszcze nie opanował.

Ustawiłem go z instrukcjami podobnymi do poniższych;

Nowe maszyny mogą jednocześnie obsługiwać oba systemy operacyjne lepiej niż pojedyncze systemy na starych komputerach.

Wada: Musisz zapisać instrukcje, których używasz do instalacji, na wypadek gdyby aktualizacja uniemożliwiła połączenie VirtualBox (mój obecny problem).

Desprit
źródło
0

Po wielu próbach znalazłem schludne i czyste rozwiązanie:

  1. Uruchom partycję Windows, którą chcesz zwirtualizować
  2. Pobierz Disk2vhd narzędziowy z Sysinternals
  3. Jeśli masz partycję UEFI , postępuj zgodnie z tymi instrukcjami
  4. Utwórz obraz VHD (nie VHD X ) swojego C: partycja, odzyskiwanie, UEFI (jeśli istnieje) i cokolwiek innego chcesz
  5. Wróć do systemu Linux, otwórz VirtualBox i utwórz maszynę wirtualną zgodnie ze specyfikacjami systemu operacyjnego Windows
  6. Dołącz do tej maszyny wirtualnej dysk VHD utworzony w punkcie 4
  7. To jest to
  8. Zysk

Rozwiązywanie problemów w przypadku UEFI:

  1. W ustawieniach VM w VirtualBox zaznacz opcję „Włącz EFI” w zakładce System
  2. Jeśli utkniesz w powłoce EFI, uruchom następujące polecenie:

    fs0:\EFI\Boot\bkpbootx64.efi
    
garlix
źródło
Jakiś komentarz na temat recenzji?
garlix
Widzę, że zdarzyło się to kilka dni temu, ale nie pamiętam, aby udzielać wam głosów negatywnych, przynajmniej celowo. z radością odmówiłbym to, przepraszam.
userfuser
0

VirtualBox ma wiele wad. Zostawiam to kilka lat temu. Teraz używam qemu-kvm i oprócz innych świetnych funkcji można skonfigurować urządzenie dyskowe w taki sam sposób, jak obraz dysku. Sztuczka polega na skonfigurowaniu wirtualnego „-drive if = sd, id = sda, format = raw, file = / dev / sda”.

Ale! Najpierw musisz wprowadzić zmiany podczas uruchamiania MSW na gołym metalu, zanim spróbujesz go zwirtualizować: spójrz na folder „Sterowniki”, aby znaleźć odpowiednie sterowniki i drzewo „Rejestr”, aby te sterowniki były włączone i ustawione na uruchom przed uruchomieniem systemu w następujący sposób:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\msahci] "Start"=dword:00000000

Jeśli nie chcesz widzieć BSOD, musisz poszukać odpowiedniego sterownika w odniesieniu do maszyny wirtualnej.

Trudno powiedzieć, które sterowniki należy aktywować. Najlepszym sposobem jest najpierw zainstalowanie systemu testowego, a następnie wyszukanie w nim rejestru w celu znalezienia klucza rejestru za pomocą „Start” = dword: 00000000, a następnie ustawienie tych kluczy na gołej maszynie. Zaleca się również sprawdzenie adresu MAC na gołym metalu, aby ustawić go w konfiguracji qemu. Możesz uniemożliwić systemowi żądanie nowej aktywacji.

schweik
źródło