niedziela, 9 grudnia 2012

VBoxHeadless wirtualna maszyna na Debianie bez GUI

Zdarza się szczególnie w środowiskach testowych, aby wystawić "coś" na czym bez obawy popsucia mogą pracować choćby programiści testując nowe wersje oprogramowania. Owe coś to wirtualna maszyna lub maszyny które posiadają kilka wersji systemów od MS(XP/7) poprzez GNU/Linux. Niewielki problem gdy oprogramowanie ma działać przez przeglądarkę, wtedy wystarczy wystawić minimalne zasoby sprzętowe zainstalować kilka wersji przeglądarek i po problemie, gorzej gdy trzeba potestować aplikacje stand-alone gdzie wymagana jest większa wydajność sprzętowa. Dobrym pomysłem jest przystosowanie dobrego sprzętowo komputera/serwera którym udostępni poprzez zdalny pulpit dostęp do takich zasobów wszystkim którzy będą tego potrzebować. Oczywiście aby sam system rodzic nie obciążał  nam systemu proponuję zainstalować podstawową wersje Debiana Squeeze i na nim zainstalować naszego ulubione Virtual Boxa w wersji konsolowej. Wszystko fajnie ale jak ...? Opis przetestowany poniżej:)



Oczywiście system instalujemy tak jak jest to opisane tutaj.

1)Musimy dodać użytkownika o prawach niższych niż root, niech będzie to administrator oraz grupa administrator:

Server1:~# groupadd administrator

Server1:~# useradd -d /home/administrator -m -g administrator -s 


/bin/bash administrator

Server1:~# passwd administrator


Stworzyliśmy grupę, dodaliśmy usera wraz z katalogiem domowym oraz domyślną powłoką oraz ustawiliśmy hasło.







2) Przejdźmy do zainstalowania VirtualBox'a:


Server1:~# su
Server1:~# echo "deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free" > /etc/apt/sources.list.d/virtualbox.list
Server1:~# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -
Server1:~# apt-get update&upgrade
Server1:~# reboot
Server1:~# su
Server1:~# apt-get install linux-headers-$(uname -r) build-essential virtualbox-4.0 dkms


Kolejno:logujemy się na roota, dodajemy do źródeł ścieżkę do virtual box'a, ściągamy klucz w postaci sumy kontrolnej, dla pwności sprawdzamy czy nie pojawiły się uaktualnienia dla naszego Debiana i ewentualnie je instalujemy, później reboot i znów logowanie na roota, następnie ściągamy już paczkę z VirtualBox'em (tutaj wersja 4.0). Po ściągnięciu 65MB mamy prawie gotowe środowisko. Dkms zabezpiecza update VirtualBox'a w przypadku zmiany kernel'a Debiana.

Dodatkowo musimy zainstalować pakiet rozszerzeń dla VirtualBox'a, aby możliwe było podłączenie się poprzez RemoteDesktop do naszej maszyny(wszystko robimy na koncie root):

Server1:~# cd /tmp
Server1:~# wget http://download.virtualbox.org/virtualbox/4.0.6/Oracle_VM_VirtualBox_Extension_Pack-4.0.6-71344.vbox-extpack
Server1:~# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.6-71344.vbox-extpack

Może pojawić się błąd po wydaniu ostatniego polecenia!!!

Teraz musimy dodać konto administrator do grupy vboxusers

Server1:~# adduser administrator vboxusers

Server1:~# exit


Server1:~# su







3) Teraz rzecz najważniejsza,  czyli tworzenie wirtualnej maszyny
, będzie to maszyna o nazwie Debian Squeeze Server, pamięć ram 512MB, dysk 10GB, przed przystąpienniem do działania zalecam skopiować obraz Debian'a netistall do katalogu /home, koniecznie należy znać dokładną jego nazwę która będzie potrzebna w ostatnim poleceniu, aby maszyna mogła wystartować do instalacji w przykładzie jest to 
debian-6.0.1a-amd64-netinst.iso, oczywiście może być inny, choćby i386 dla x86  :


Server1:~# BoxManage createvm --name "Debian Squeeze Server" --register


Server1:~# VBoxManage modifyvm "Debian Squeeze Server" --memory 512 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0


Server1:~#  VBoxManage createhd --filename Debian_Squeeze_Server.vdi --size 10000


Server1:~#  VBoxManage storagectl "Debian Squeeze Server" --name "IDE Controller" --add ide


Server1:~#  VBoxManage storageattach "Debian Squeeze Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Debian_Squeeze_Server.vdi

Server1:~#  VBoxManage storageattach "Debian Squeeze Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/debian-6.0.1a-amd64-netinst.iso


Od góry kolejne polecenia tworzą czystą maszynę; ustawiają 512MB ramu, bootowanie z DVD/CD, sieciówkę jako eth0; dalej wielkość dysku(10GB); kontroler dysku ustawiamy na IDE; ustawiamy numer portu dla naszego dysku oraz nazwę obrazu; ostatnie polecenie montuje nasz obraz Debiana, który wykorzystamy do instalki.



4) To zadanie jest opcjonalne w przypadku gdy chcemy podłączyć już istniejącą maszynę

Załóżmy, że mamy maszynkę/obraz examplevm i coś nam się popsuło i chcemy przywrócić ją do życia:)
Z poziomu WinSCP skopiujemy naszego biedaka do katalogu Machines/examplevm, który będzie w VirtualBox(musimy go znaleźć u mnie jest to /root/.VirtualBox tam będzie plik examplevm.xml ). Musimy skopiować katalog examplevm wraz z examplevm.xml do nowej maszyny, jeżeli użytkownikiem jest administrator będzie to /home/administrator/.VirtualBox/Machines(u mnie /root/.VirtualBox/Machines ), rezultacie powinniśmy otrzymać /home/administrator/.VirtualBox/Machines/examplevm/examplevm.xml. Musimy jeszcze skopiować plik examplevm.vdi (obraz dysku) ze starego katalogu VDI(lub innego) do /home/administrator/.VirtualBox/Machines/VDI/examplevm.vdi. 
Na koniec musimy podlinkować plik .xml w którym jest cała konfiguracja naszej maszyny do tej maszyny, która skopiowaliśmy:

 Server1:~# VBoxManage registervm Machines/examplevm/examplevm.xml

Ok, mamy już mniej więcej pojęcie jak zrobić przywracanie obrazu w razie problemów.

5) Wystartujmy wreszcie naszą maszynę, w moim przypadku będzie to wirtualka w wirtualce:


 Server1:~# VBoxHeadless --startvm "Debian Squeeze Server"

Po wywołaniu tego polecenia maszyna już działa choć w naszej konsoli pojawia się jedynie:





Jednak po podłączeniu poprzez zdalny pulpit(ważne jest aby maszyna miała dostęp poprzez ip na zewnątrz, w moim przypadku przed wydaniem w/w polecenia ustawiłem kartę sieciową na sieć izolowaną dzięki czemu po ustawieniu kart eth0 na dhcp w /etc/network/interfaces mam dostęp do maszyny poprzez 192.168.56.101 i taki adres wpisuje w zdalny pulpit oczywiście wcześniej uruchamiając maszynę w/w poleceniem gdy serwer wstaje po zmianach wykonanych na karcie.) Po tym zabiegu pojawia się to co chcieliśmy osiągnąć:

Mamy więc to o co nam chodziło.

Warto na koniec dodać informacje o 3 poleceniach, które przydają się w zarządzaniu działaniem maszyną:

VBoxManage controlvm "Debian Squeeze Server" poweroff | pause | reset

Oczywiście poweroff/pause czy reset wydajemy odzielnie, zapisałem tak aby nieco skrócić pisanie.



Brak komentarzy:

Prześlij komentarz