Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Wirtualizacja systemu z dysku fizycznego

Witam wszystkich użytkowników dobreprogramy.pl. Od dłuższego czasu noszę się z zamiarem prowadzenia bloga na tym portalu. Niestety pewnie jak wielu cierpię na chroniczny brak czasu. Nadszedł jednak moment refleksji i czas na zamianę planów w czyn. Dodatkowym impulsem nad przyśpieszeniem prac nad blogiem był ostatni wpis kraju na temat migracji z linux na windows w którym to poruszył temat VirtualBox-a.

A więc do rzeczy. O czym jest ten wpis? Poruszam w nim zagadnienie wirtualizacji systemu linux zainstalowanego na fizycznym dysku, na fizycznej partycji obok systemu Windows 7 oraz uruchomienie go jako gość w innym systemie.

Cel oraz zarys działania

Pewnie wiele osób na tym portalu ma obok siebie zainstalowane różne systemu operacyjne. W tym ja. Czasami zachodzi potrzeba szybkiego przełączenia się lub dostania do drugiego systemu. Niestety standardowo bez przelogowania nie ma takiej możliwości. A co gdyby dało się wirtualizować system do którego możemy wejść podczas normalnego botowania tak, aby wchodząc do innego systemu operacyjnego (w moim wypadku Windows 7) mogliśmy uruchomić go w maszynie wirtualnej?

Rzecz genialna i jak najbardziej możliwa. Wyjątek stanowi tu próba uruchomienia systemu z rodziny Windows. A dokładniej chodzi o sprawdzanie legalności systemu Windows. System ten sprawdza legalność na podstawie podzespołów komputera. Jednak maszyna wirtualna jest identyfikowana z oczywistych względów jako inny sprzęt niż fizyczny komputer. Powoduje to komunikaty o nielegalności systemu.

Jak zacząć?

Pierwszą elementarną sprawą jest posiadanie przynajmniej dwóch różnych systemów operacyjnych na dysku lub dyskach podłączonych do komputera. W tym wypadku napiszę przykład dla systemu Windows 7 i Linux Mint jako gościa. Nic nie stoi na przeszkodzie aby to była inna konfiguracja systemów. Kolejnym niezbędnym elementem jest posiadanie zainstalowanego oprogramowania VirtualBox firmy Oracle (dostępne w dziale download dobrychprogramów). Ja obecnie pracuję na najnowszej wersji tj. 4.1.8, jeśli masz starszą wersję najlepsza będzie aktualizacja do najnowszej wersji .

Tworzenie „dysku” maszyny wirtualnej

Jak już wiecie, systemem bazowym jest w moim wypadku Windows 7 jednak w Windows Vista jak i XP sprawa wygląda prawie identycznie. Najpierw należy stworzyć specjalny „dysk” który będzie się podłączało do VirtualBox’a. Czym jest ten dysk? Jest to w zasadzie plik który informuje VirtualBox, że ma korzystać z dysku w trybie bezpośredniego odczytu tzn. RAW. Co to daje? Dzięki temu w maszynie wirtualnej po uruchomieniu widzimy dokładnie te same partycje jak w systemie bazowym. Mamy dzięki temu dostęp do zapisanego oprogramowania rozruchowego na dysku.

Krok I

Jeżeli posiadamy więcej niż jeden dysk z którego chcemy uruchamiać maszynę wirtualną należy sprawdzić jaki identyfikator posiada interesujący nas dysk. Najprościej jest to zrobić klikając ppm w Mój komputer->Zarządzaj a następnie przejść do Zarządzanie dyskami. Teraz sprawdzamy jaki numer ma nasz dysk np.

Przykładowo jak w moim przypadku (zaznaczone kolorem żółtym na screenie) jest to dysk o numerze 0.

Krok II

Należy uruchomić konsolę systemu (cmd.exe) w trybie administratora.
W oknie konsoli wpisujemy:

VBoxManage internalcommands createrawvmdk -filename [ścieżka do wirtualnego dysku który chcemy utworzyć]\[nazwa dysku].vmdk -rawdisk \\ .\PhysicalDrive[numer dysku z którego chcemy botować]

W moim wypadku komenda ta wygląda tak:

VBoxManage internalcommands createrawvmdk -filename c:\Users\patryk\.Virtualbox\VDI\mint.vmdk -rawdisk \\ .\PhysicalDrive0

Istnieje również możliwość wybrania tylko jednej lub kilku partycji a nie całego dysku.
Dodajemy w tedy na końcu polecenia numery partycji (np. -partitions 1,3):VBoxManage internalcommands createrawvmdk -filename [ścieżka do wirtualnego dysku który chcemy utworzyć]\[nazwa dysku].vmdk -rawdisk \\ .\PhysicalDrive[numer dysku z którego chcemy botować] -partitions [partycje]

Stworzony w ten sposób plik mint.vmdk ma rozmiar zaledwie 650B w moim wypadku. A więc tyle co nic :-D
Jeśli po drodze nie nastąpiły błędy to połowa sukcesu za nami.

Tworzenie maszyny wirtualnej

Jeśli poprzednie etapy mamy za sobą czas stworzyć maszynę wirtualną. Przechodzimy do VirtualBox
(użytkownicy Windows 7 i Windows Vista muszą uruchomić go w trybie administratora!) klikamy opcję Nowa.
W oknie które się pojawi wpisujemy oraz wybieramy nazwę i rodzaj systemu który chcemy wirtualizować.
Następnie wybieramy ile pamięci chcemy przydzielić tej maszynie z zasobów systemu bazowego.
Kolejny krok- wybór dysku.
W tym oknie zostawiamy odptaszoną opcję Startowy dysk twardy oraz zaznaczamy użyj istniejącego dysku twardego.
Za pomocą ikonki symbolizującej folder przechodzimy i wybieramy z dysku stworzony wcześniej w konsoli plik *.vmdk do którego ścieżkę w poleceniu konsoli wpisaliśmy. Wybieramy go i zatwierdzamy. Przechodzimy dalej następnie klikamy Create.
Maszyna gotowa.

Dla wygody warto kliknąć ppm na naszą maszynę wirtualną znajdującą się na liście w programie oraz utworzenie skrótu na pulpit. W szczególności polecam to zrobić osobą posiadającym Windows 7 oraz Windows Vista oraz kliknięcie w utworzoną ikonę ppm przejście do właściwości ->zgodność oraz odptaszyć Uruchom jako administrator. Jeśli tego nie zrobimy nasza maszyna się nie uruchomi. Wymaga tego dostęp bezpośredni do dysku.

Ufff! Najtrudniejsze za nami. Czas na łakocie

Jeśli dotarłeś do tego etapu to prawdopodobnie odniosłeś sukces. Najwyższy czas uruchomić maszynę wirtualną i odpalić wybrany przez nas system. Jeśli masz problem i system się nie uruchamia lub po uruchomieniu nie odpala się na maszynie fizycznej sprawdź konfiguracje X-sów. W moim przypadku lekarstwem okazało się usunięcie ich konfiguracji.

Efekt końcowy

Wybór systemu:

System operacyjny:

P.S Nie uruchamiajcie w maszynie wirtualnej ponownie systemu bazowego chyba, że chcecie zamordować system :-D. 

windows linux porady

Komentarze

0 nowych
  #1 08.01.2012 00:30

Robiłem takie rzeczy na VMware

Problem jest z niestabilnością rozwiązania.

Są ciekawsze metody, odpal na VMware Win7, a potem tego samego Win7 na VBox :D

Fervi

patryk9200   8 #2 08.01.2012 00:34

@fervi.doctor Mogę się tylko domyślać co się stanie :D. Jak na razie nie mam w planach wysadzania w powietrze Windows 7 =) .... może kiedyś kto wie.
Co do stabilności. Dobrze skonfigurowane nie stanowi problemu.
Przynajmniej ja ani razu się z żadnym problemem nie spotkałem, a to co daje w zamian jak dla mnie jest bezkonkurencyjne.

  #3 08.01.2012 09:19

A jak z szybkością tego rozwiązania? jest różnica, od utworzenia systemu wirtualnego pod używanym systemem?

satis   3 #4 08.01.2012 12:11

Wyrzuca mi błąd podczas montowania dysku: http://sirius.it-host.pl/potrzebne/blad.JPG

patryk9200   8 #5 08.01.2012 12:24

@satis
A czy uruchomiłeś maszynę wirtualną na prawach administracyjnych?
Z tego co widzę, to właśnie to jest przyczyną.
Uruchom VirtualBox na wyższych uprawnieniach.

satis   3 #6 08.01.2012 12:33

OK, maszyna dodana. Jednak gdy próbuję ją uruchomić nic się nie pojawia a maszyna zmienia status na "Anulowana".

patryk9200   8 #7 08.01.2012 12:41

Nie wyskakuje żaden komunikat? spróbuj usunąć maszynę wirtualną i przeprowadzić wszystkie kroki jak opisane wyżej ponownie.
Tylko pamiętaj o prawach administratora! =)
Jeśli chodzi o anulowana, to czy nie włączyłeś wstrzymania maszyny?

patryk9200   8 #8 08.01.2012 12:42

Sprawdź też ile ramu przydzieliłeś, czy nie jest to zbyt dużo, co uniemożliwia poprawne jej uruchomienie.
Uruchamiasz linux na tej maszynie?

patryk9200   8 #9 08.01.2012 12:43

Jeszcze jedna kwestia, czy tworząc plik .vmdk w konsoli, czy miała ona prawa administratora?

patryk9200   8 #10 08.01.2012 12:47

Sprawdź też, jaką wersję systemu emulujesz, a jaką masz wybraną na liście systemów. Jeśli jest to linux x64 to wybierz właśnie tą opcję jeśli 32-bitowy to samo linux, lub po nazwie dystrybucji.

satis   3 #11 08.01.2012 14:07

Nic. Zero błędów żadnych komunikatów. Kilka razy próbowałem tworzyć maszynę wirtualną (z prawami administratora). Konsola również miała uprawnienia administratora.

System gospodarza: Win 7 x64
System gościa: Debian 6.0 x64
Ram: 1536 MiB

Zaraz po dodaniu maszyny pojawia się status "anulowany". Po restarcie systemu i włączeniu VBoxa status jest normalny. Jednak kiedy próbuję ją włączyć VBox crashuje.

patryk9200   8 #12 08.01.2012 15:23

Ciekawe, jeszcze się z tym nie spotkałem, spróbuj świeżą instalację na maszynie wirtualnej i sprawdź czy działa. Jeszcze jedno. Której opcji używasz? całego dysku czy wybranej/nych partycji?
Sprawdź również czy nie jest to spowodowane sterownikami w Debianie. Spróbuj o ile masz taką możliwość zainstalować Debiana na czystej partycji z poziomu VirtualBox. Po tym sprawdź czy się normalnie uruchamia. Zobacz również jakie masz opcje ustawione, najlepiej powyłączaj co się da.

patryk9200   8 #13 08.01.2012 15:24

Jaką masz wersje VirtualBox? x86 czy x64?

satis   3 #14 08.01.2012 17:06

VBox x64 pobierany kilka razy.

Próbowałem wybrać kilka partycji jak i cały dysk.
Raczej nie jest to spowodowane sterownikami w Debianie, gdyż nie otwiera się nawet okno z wirtualnym systemem, czyli nie startuje pseudo-BIOS VBoxa.

patryk9200   8 #15 08.01.2012 17:14

Czyli wygląda na to, że problem leży po stronie VirtualBoxa. Próbowałeś zainstalować albo chociaż uruchomić LiveCD na VirtualBox?

satis   3 #16 08.01.2012 17:39

Hmm... okno systemu-gościa pojawiło się dopiero wtedy, kiedy usunąłem kartę dźwiękową. Być może chodzi o jakiś konflikt sterowników.

Debian zaczyna się ładować i... VBox się crashuje. Ale to raczej wina sterowników ATI. Tak więc problem rozwiązany.

patryk9200   8 #17 08.01.2012 18:51

Dobrze by było stworzyć jakieś skrypty startowe które będą zarządzały sprzętem i ładowały sterowniki w zależności od środowiska. Ale roboty by było sporo.

patryk9200   8 #18 08.01.2012 20:27

@Paweł91 trochę późna odpowiedź, ale lepiej późno niż w cale. Nie nie ma jakiejś diametralnej różnicy, jednak musisz pamiętać, że w takim wypadku dwa systemy dzielą się zasobami sprzętowymi. O ile nie kopiujesz dużych partii plików i nie obciążasz znacząco dysku, a pamięć RAM masz rozsądnie podzieloną, to nie widać jakoś mocno różnicy. Wirtualizacja jest obecnie bardzo popularna w korporacjach, daje niewielki narzut wydajności (~5% w zależności od systemu i konfiguracji) a umożliwia dynamiczne, w wypadku niektórych rozwiązań na żywo przenoszenie takich maszyn wirtualnych pomiędzy serwerami. Umożliwia też dynamiczną zmianę ilości dostępnych zasobów dla danej maszyny, obniża koszty poprzez ograniczenie nakładu na sprzęt a dodatkowo w wypadku awarii umożliwia nawet do kilku minut uruchomienie kopii takiego systemu na innym serwerze. Kolejna sprawa, to jest to, że na jednym serwerze można uruchomić kilka, izolowanych od siebie systemów.

Zulowski   8 #19 09.01.2012 13:02

Choć pewnie nie ma tu nic, do czego bym nie doszedł czytając help'a virtualboxa, to i tak, zostałeś dodany do moich zakładek do przeczytania później ;)

command-dos   17 #20 09.01.2012 13:36

@satis - http://wiki.debian.org/MicrosoftVirtualPc2007/lenny - może Cię interesować parametr vga=791 podczas bootowania debiana w vm...

patryk9200   8 #21 09.01.2012 17:50

@Zulowski Dzięki. Staram się przedstawić na tym blogu właśnie tego typu przydatne, ciekawe rozwiązania. Mam nadzieję, że kolejne wpisy które planuję również Ciebie zainteresują.

  #22 15.01.2012 16:32

Mam zainstalowany Windows 7 na pierwszej partycji a na kolejnej Ubuntu. Próbowałem uruchomić Ubuntu poprzez wirtualizację z z partycji. Utworzyłem plik dysk wirtualnej maszyny tak jak napisałeś, tylko nie podawałem konkretnych partycji a cały dysk. Po uruchomieniu maszyny pokazuje się Grub, wybieram system i wszystko niby dobrze się ładuje do czasu gdy pojawia się napis UBUNTU. System dalej nie chce się załadować (nawet nie dochodzi do okna logowania). Co może być nie tak? Pozdrawiam

patryk9200   8 #23 18.01.2012 21:58

@ti6er problemem sś za pewne sterowniki, usuń konfigurację X-ów i zobacz na sterowniki. Na 90% tu leży przyczyna problemu ;)

  #24 02.02.2012 20:39

Trochę czasu minęło od tego wpisu, a ja znalazłem dopiero teraz trochę wolnego czasu dla siebie (czyt. na różne dziwne zabawy), więc postanowiłem w końcu przetestować to rozwiązanie.

Pojawił się u mnie problem z postawieniem X'ów, ale pomogło usunięcie configa, żeby nie próbował szukać device'ów od ATI.

Wielkie dzięki za wpis, na pewno się przyda taka maszyna pół-wirtualna. :)

P.S. Czy da radę odpalić wirtualkę z maksymalną rozdzielczością bez instalowania VBoxGuestAdditionów w systemie wirtualizowanym?

patryk9200   8 #25 09.02.2012 12:52

@TylkoPatrzę nie, niestety nie ma takiej możliwości :(

  #26 09.02.2012 18:13

Cóż trudno. W każdym razie dzięki za odpowiedź.

Do tych sporadycznych zastosowań będzie musiało wystarczyć. W sumie na konsoli i tak wszystko widać, kwestia ergonomii musi zejść na drugi plan.

patryk9200   8 #27 10.02.2012 18:06

@@TylkoPatrzę - wystarczy w zupełności, nie powinno być problemów z instalacją VBoxGuestAdditions,
podczas uruchamiania sprawdzają, czy system jest uruchomiony w maszynie wirtualnej, jeżeli nie, to nie są one wczytywane.

  #28 13.08.2012 10:12

Siema, próbowałem to zrobić i pokazuje się coś takiego:
Microsoft Windows XP [Wersja 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Kwasek>VBoxManage internalcommands createrawvmdk -file
name G:\nt.vmdk -rawdisk \\ .\PhysicalDrive1
Nazwa 'VBoxManage' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzn
e,
program wykonywalny lub plik wsadowy.

C:\Documents and Settings\Kwasek>

A chciałem otworzyć system XP zainstalowany na slave czyli na partycji G. Zrobiłem coś nie tak?

  #29 31.08.2012 11:50

jest \\ .\PhysicalDrive1
powinno być \\.\PhysicalDrive1

czyli bez odstępu przed kropką

  #30 13.09.2012 16:32

Ciekawy artykuł. Kiedyś wypróbuję. Na razie chciałbym prosić Patryka albo może któryś z czytelników wie jak uruchomić na Virtual Boxie maszynę w trybie tylko do odczytu, tzn. aby po wyłączeniu była taka sama jak przed włączeniem. Np. gdy złapię wirusa to będzie on tylko do wyłączenia maszyny. Wiem, że do czegoś takiego służy program VMware player. adres: tomekb41[at)gmail.com Przepraszam, że na blogu zadaję pytania, ale dopiero się tych narzędzi uczę. Pozdrawiam.

  #31 13.10.2012 00:12

czy jak bede miał ram disk to moge zrobic instalke na takim dysku??

  #32 01.04.2013 05:12

A jeśli na kompie mam zainstalowany tylko jeden system operacyjny Win7 i ten program Oracle do wirtualizowania, to jak co mam zrobić, by Linux (którego nie mam na kompie) był systemem wirtualnym? W jaki sposób i gdzie mam go wgrać?

  #33 05.08.2013 15:29

Ja chciałem zapytać czy jest możliwość odczytania zewnętrznego dysku twardego z zainstalowanym Windows xp podłączonego poprzez usb przez VirtualBox-a ?

  #34 24.04.2015 11:22

da się, jako pendrajwa-ale tylko w wersji dla Windows

  #35 05.05.2015 10:23

Z artykułu wynika, że nie da się zwirtualizować drugiego systemu jeśli oba są z rodziny Windows. Czy nie ma na to jakiegoś obejścia? Mam zainstalowane dwa systemy - Windows 7 na jednej partycji i Windows 8.1 na drugiej (dwa różne dyski fizyczne) i bardzo przydatne byłoby dla mnie uruchomienie maszyny wirtualnej w W8.1 pracując lokalnie na Windows 7.

patryk9200   8 #36 05.05.2015 16:22

@ricky44
To zależy co chcesz osiągnąć. Jeśli chcesz zrobić dual-boot z możliwością wirtualizacji zamiennie systemów (np. raz win 8.1 na 7-ce a innym razem na odwrót) to tego nie zrobisz.
Natomiast, jeśli zawsze będziesz wirtualizował dany system z poziomu tylko 7 albo tylko 8 i nie będziesz tego zmieniał, to jest to możliwe.

  #37 26.05.2015 14:54

@patryk9200:
Potrzebuję wirtualizować tylko jeden system tzn. 8 z poziomu siódemki, więc widzę że jest szansa :) Wystarczy zastosować kroki z Twojego poradnika czy trzeba jeszcze coś zmodyfikować? Czy przy tym sposobie będę mimo wszystko miał dostęp do obu systemów lokalnie bez obawy, że na tym wirtualizowanym wyskoczy mi komunikat o nielegalności systemu?

patryk9200   8 #38 26.05.2015 20:49

@ricky44 Wystarczy zastosować się do kroków z poradnika. Natomiast Windows będzie informował o nielegalności systemu od razu jak go uruchomisz z poziomu innego środowiska niż z którego przeprowadziłeś jego instalację. Z resztą możesz sprawdzić. Ale jestem tego pewny.
Pozdrawiam :-)

  #39 04.06.2015 20:15

Można zainstalować VirtualBoxa na innym dysku niż domyślny C ?

patryk9200   8 #40 04.06.2015 23:27

@Januszek2 (niezalogowany): WirtualBox czy jego maszyny wirtualne?

  #41 23.11.2015 16:59

A czy jest możliwość stworzenia folderu utworzonego na dysku fizycznym jako dysk wirtualny? Czy można wizualizować systemy tylko z dysków fizycznych?

patryk9200   8 #42 10.12.2015 00:10

@Anonim (niezalogowany): Miałeś na myśli z pliku obrazu dysku tak?
teoretycznie możliwe jest odpalanie windowsa z pliku obrazu dysku, z linuxem może być ciężej.

  #43 01.02.2016 01:10

a jak to zrobić pod linuxem?

patryk9200   8 #44 02.02.2016 15:46

@Anonim (niezalogowany): Czy masz na myśli uruchomić windows'a zainstalowanego na dysku z poziomu linuksa?
Technicznie jest to możliwe ale pojawia się problem natury licencyjnej- przy każdym przełączeniu pomiędzy maszyną wirtualną a fizyczną będzie wymagana aktywacja, a, że możliwe jest to tylko w wersji box i ograniczoną ilość razy (po których nie będzie można już aktywować systemu) to nie ma to sensu. Chyba, że zakładasz, że windows będzie odpalany zawsze i wyłącznie z poziomu maszyny wirtualnej- w takim wypadku nie powinno być problemu.

  #45 31.03.2016 19:13

@patryk9200: możesz napisać jakim poleceniem uruchomić zainstalowany system windows na dysku pod linuxem?

patryk9200   8 #46 01.04.2016 23:33

@Anonim (niezalogowany): Jest to bardzo proste. Wystarczy wpisać w konsolę:
VBoxHeadless --startvm "NAZWA_MASZYNY"

  #47 23.05.2016 16:45

próbowałem według opisu i efekt żaden:
"Microsoft Windows [Wersja 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

C:\Windows\system32>VBoxManage internalcommands createrawvmdk -filename c:\Users\test\.Virtualbox\VDI\mint.vmdk -rawdisk \\ .\PhysicalDrive0
Nazwa 'VBoxManage' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.

C:\Windows\system32>VBoxManage internalcommands createrawvmdk -filename c:\Users\test\.Virtualbox\mint.vmdk -rawdisk \\ .\PhysicalDrive0
Nazwa 'VBoxManage' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy."

patryk9200   8 #48 24.05.2016 17:04

@mmisio (niezalogowany): Wygląda na to, że albo nie masz zainstalowanego VirtualBoxa lub masz zmienne środowiskowe źle poustawiane.

  #49 26.05.2016 11:25

@patryk9200: virtualbox zainstalował się standardowo a zmienne środowiskowe były ustawione automatycznie przez system przy jego instalacji, więc co robić ?

patryk9200   8 #50 28.05.2016 11:59

@Anonim (niezalogowany): Odszukaj na dysku gdzie się zainstalował VirtualBox (nie zmieniałeś przypadkiem ścieżki instalacji?), otwórz w tym katalogu cmd.exe
i następnie wykonaj ww. komendy

  #51 04.06.2016 12:48

@patryk9200: Dziękuję, pomogło, działa

  #52 07.10.2016 20:43

Pod Windows 10 nie mogę stworzyć pliku, pisze że parametr .\PhysicalDrive0 jest niepoprawny

  #53 27.10.2016 10:31

A czy jest sposób na zwirtualizowanie systemu ze starego dysku z Win XP mając go podpiętego do nowego kompa z Win 10? Stary komp się zepsuł, dysk jest OK, dane przenieść mogę, ale czasem fajnie byłoby odpalić XP, są programy które już na 10 nie chodzą.

  #54 29.10.2016 18:56

próbowałem według opisu i nie udało się
"Microsoft Windows 7ultimate

C:\Windows\system32>VBoxManage internalcommands createrawvmdk -filename e:\VirtualBox\VDI\mint.vmdk -rawdisk \\ .\PhysicalDrive0 -partitions G
Nazwa 'VBoxManage' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.