Ubuntu 12.04.1 LTS – Virtualbox und PHPVirtualbox


Über die vielen Vorzüge von virtuellen Maschinen muss ich wohl nicht mehr viel schreiben. Braucht man mal schnell ein bestimmtes Betriebssystem zum „rumprobieren“ oder immer mal wieder ein Programm, welches es nur unter einem bestimmten OS gibt, so sind Virtuelle Maschinen („VMs“) ideal. Ebenfalls, wenn man Dinge testen möchte und hierzu einfach eine geclonte VM oder einen Snapshot missbraucht. So hat man nach einer einmaligen, sauberen (Neu)Installation (s)eine Test-VM, die danach als Clone ruhig wieder in die Tonne wandern kann. Für Entwicklungen, Tests und einfach mal etwas probieren die ideale Lösung.
Verschiedene Ansätze/ Produkte von verschiedenen Herstellern sind hierbei auf dem Markt. Die einzelnen Vorzüge oder Nachteile will ich gar nicht aufführen oder vergleichen. Ich habe meine Lösung schon gefunden und nutze diese.

Nun hat es sich ergeben, dass ich mal wieder Virtualbox nutzen wollte. Der letzte Blogpost hierzu ist auch schon älter, also gibt’s mal wieder einen neuen zum Thema.

PHPVirtualbox ist noch immer eine feine Möglichkeit, seine virtuellen Maschinen (VMs) mit einem Webbrowser zu steuern. Wieso sich dieses klasse Tool nicht stärker verbreitet hat, kann ich nicht sagen. Vielleicht, weil man über die Kommandozeile sowieso alles steuern kann und diese WebGUI ja eigentlich nicht braucht… Eigentlich. Schön und praktisch ist sie auf jeden Fall. Und warum soll man nicht auf ein wenig Klicki-bunti setzen und die Vorzüge einer einfacheren Steuerung nutzen?


  Installation von Virtualbox

Ob man schon Virtualbox per Paketmanager installiert hat, erfährt man durch

  Shell #> dpkg -l | grep virtualbox
ii virtualbox 4.1.12-dfsg-2ubuntu0.1 x86 virtualization solution – base binaries
ii virtualbox-dkms 4.1.12-dfsg-2ubuntu0.1 x86 virtualization solution – kernel module sources for dkms
ii virtualbox-qt 4.1.12-dfsg-2ubuntu0.1 x86 virtualization solution – Qt based user interface

Wird einem kein Paket als installiert aufgezeigt, installiert man die nötigen Pakete einfach durch APT nach:

  Shell #> apt-get install virtualbox

Damit wird Virtualbox und hierfür benötigte Pakete installiert.

Danach herunterladen von Oracle VM VirtualBox Extension Pack. Die Version sollte möglichst immer passend zur Version gewählt werden, die man von virtualbox installiert hat.
Also laden wir Version 4.1.12 (Stand: Juni 2012) herunter:
http://download.virtualbox.org/virtualbox/4.1.12/Oracle_VM_VirtualBox_Extension_Pack-4.1.12.vbox-extpack


Installation des Extension Packs (damit Guest Addon Installation möglich wird)

Wurde ein Gast in den Standardeinstellungen mit USB2.0 eingerichtet, so wird der erstmalige Start des GAstsystems mit einer Fehlermeldung abbrechen, dass der USB2.0 Support fehlt und das System ohne dieses nicht erfolgreich gestartet werden kann. Möglichkeit 1: Deaktivierung von USB2.0.
Bessere Möglichkeit: Installation der VirtualBox Extensions. Hierzu kommt wieder VBoxManage unter Angabe des Pfades zur Datei zum Einsatz:

Shell #> sudo VBoxManage extpack install /pfad/zu/Oracle_VM_VirtualBox_Extension_Pack-4.1.12.vbox-extpack
0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%
Successfully installed „Oracle VM VirtualBox Extension Pack“.


  Die VM Guest Additions herunterladen

Die „Guest Additions“ bieten Unterstützungen für das Gastsystem und sollten installiert werden. Sind nicht zwingend erforderlich aber hilfreich und werden später im Client installiert:
http://download.virtualbox.org/virtualbox/4.1.12/VBoxGuestAdditions_4.1.12.iso


  Herunterladen und installieren von PHPVirtualBox

  Herunterladen von phpVirtualBox in Version 4.1-11 (aktuell, Stand Oktober 2012) unter
http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-11.zip


      Installation im Webroot

Im Webrootverzeichnis wird die ZIP Datei entpackt. Unter Ubuntu mit installiertem Apache2 und PHP5 ist das übliche Document-Root /var/www. Wir wechseln also in selbiges und entpacken mit

Shell #> sudo unzip /pfad/zu/heruntergeladener/datei/phpvirtualbox-4.1-11.zip

Es wird ein Verzeichnis phpvirtualbox-4.1-11 erstellt. In diesem befindet sich die Beispielkonfigurationsdatei config.php-example, welche wir als config.php kopieren und bearbeiten. Eintragen muss man vor allem den Benutzernamen und das zugehörige Passwort für den Benutzer auf dem Host.
Sollte noch kein Benutzer angelegt sein, fügen wir diesen mit

  Shell #> sudo useradd vboxusername

hinzu, weisen ihm ein Home-Verzeichnis zu und setzen ein Passwort. Als Shell geben wir /dev/null ein, da sich der Benutzer nicht einloggen braucht. Ein kryptisches Passwort kann nicht schaden.

In der Datei config.php werden nun die Werte

var $username = ‚vboxusername‚;
var $password = ‚vboxuserpassword‚;

entsprechend angepasst.

Damit wir im Webroot-Verzeichnis dem HTTPd den Zugriff erlauben ein

  Shell #> sudo chown -R www-data:www-data /var/www/phpvirtualbox-4.1-11

aufrufen.

Nun kann der vboxwebsrv Dienst durch einen Aufruf von

  Shell #> sudo /usr/bin/vboxwebsrv

testweise gestartet werden. In der Konsole aufgerufen und gestartet zeigt er einem noch einige (hoffentlich) hilfreiche Meldungen. Gibt es Probleme beim Starten, so wird man hier ebenfalls fündig.


  vboxwebsrv nach einem Reboot automatisch starten lassen

Entweder schreibt man sich ein kleines init-Skript, welches den Dienst beim Booten automatisch startet oder trägt den Aufruf in die /etc/rc.local ein:

# PHPVirtualBox
/usr/bin/vboxwebsrv
(Hinweis: Muss vor der ‚0‘ stehen.)

Vorteil der rc.local: Das Skript wird beim Starten automatisch (leider als root) ausgeführt. Ein Startskript ist etwas aufwändiger (ja, mit ä ;-)…..

Hat man das soweit eingetragen, kann man ruhig mal den Host komplett rebooten. Da zeigt sich dann, ob das soweit alles klappt.


  Erster Aufruf von PHPVirtualBox

  Im Browser sollte sich nun durch einen Aufruf von http://IP_HOST/phpvirtualbox-4.1-11/ ein Anmeldefenster starten. Der Standardbenutzer ist admin, Passwort admin.
URL eingeben, einloggen, fertig.


  Anpassungen von VirtualBox – Speicherplatz für die virtuellen Maschinen

Unter File -> Preferences -> General > Default Machine Folder sollte man nun den Pfad zu den virtuellen Maschinen anpassen. Gute Idee wäre hier, einen Pfad zu nehmen, der ausreichend Speicherplatz hat 😉
Weitere gute Idee wäre, dass dieser Speicherplatz gegen Ausfälle gesichert und mit im Backup integriert ist. Wäre halt blöd, wenn einem irgendwann die virtuellen Maschinen wegsterben nur weil dem Host eine HDD wegraucht.


Wir überspringen nun den Bereich „Ersteinrichtung/ Erstellung einer Virtuellen Maschine“ und nehmen an, dass wir eine virtuelle Maschine mit dem Namen „VM name“ erstellt haben. Wie man eine virtuelle Maschine konfiguriert/ einrichtet ist ausgiebig dokumentiert, das brauche ich ja nicht wiederholen 😉

Die nachfolgenden Einrichtungen beziehen sich nun auf die Nutzung und Steuerung von VirtualBox ohne PHPVirtualBox, also in der Konsole. Es soll einem die Nutzung auch ohne GUI näher bringen.


  VRDE aktivieren

VRDE ist das Protokoll, mit dem von remote auf die Gastsysteme zugegriffen werden kann. Dieses muss, sofern nicht schon aktiviert ist, nachträglich aktiviert werden:

  Shell #> VBoxManage modifyvm „VM name“ –vrde on

Damit wird VRDE ersteinmal grunsätzlich aktiviert.

Will man aus Übersichtsgründen lieber jeder Maschine einen speziellen Port zuweisen kann man dieses unter Angabe der VRDE-Portnummer

  Shell #> VBoxManage modifyvm „VM name“ –vrdeport 4711


  Informationen zur VM anzeigen lassen

Hier sollte nun VRDE als aktiviert sowie der angegebene Port und viele weitere Informationen drin stehen.

  Shell #> VBoxManage showvminfo „VM name“

Danach sollte man den vboxwebsrv einmal durchtreten. Einmal komplett alle Prozesse beenden (killen). Nach einem Neustart kann man sich über phpvirtualbox erneut verbinden und einloggen.


  Netzwerk – NAT oder was?

Wir wollen auf der virtuellen Maschine Netzwerk haben. Der VirtualBox Host hat ein LAN Interface. Die virtuellen Maschinen sollen eigentlich nur für Testzwecke existieren. Daher ist eine eigene IP Adresse erstmal nicht nötig. Die Maschinen erhalten somit von dem eingebauten DHCP Server, der den virtuellen Maschinen IPs zuweist, eine Adresse. Der Netzwerkzugriff wird dann ge’nat’tet stattfinden.
In der virtuellen Maschine wird somit das LAN Interface auf NAT gestellt. Ein DHCP Request wird dann mit einer IP aus dem Virtualbox Netz beantwortet.
Nun haben wir Netzwerkzugriff, können aus der virtuellen Maschine heraus Verbindungen in die Welt aufbauen. Für eingehende Verbindungen müsste man nun anfangen, mit NAT Regeln zu arbeiten. Das kann man natürlich für einen kurzen Test ohne Probleme machen, ist aber nicht praktikabel.

Daher sollte man auf Bridged-Interfaces umstellen. Damit erhält die VM eine IP aus dem gleichen Netz wie der VirtualBox Host auch. Man muss keine Portweiterleitungen einrichten.


Ausgeschaltete VM über PHPVirtualbox oder auf der Konsole mit VBoxManage auf bridged umstellen:

  Shell #> VBoxManage modifyvm „VM name“ –bridgeadapter1 eth0

Auflistung der kompletten Einstellungen einer VM:

  Shell #> VBoxManage showvminfo „VM name“

Danach starten der VM als headless:

  Shell #> VBoxManage startvm „VM name“ –type headless


  VRDE – Remote-Desktop verbinden

Vom Linux kann man sich nun mit dem entfernten Desktop des Gastsystems verbinden:

  Shell #> rdesktop -a 16 -N IP_VON_VM_SERVER:4711

Man bekommt die kompletten Bootmeldungen zu sehen, die man auch bekäme, wenn man lokal mit Maus, Tastatur und Monitor arbeiten würde. Nun kann man mit dem System so arbeiten, als wäre es lokal. Nachteil hierbei natürlich: Die Grafikperformance ist eingeschränkt. Ebenfalls muss man beachten, dass etwas Bandbreite benötigt wird. Hat man also sein Testsystem nicht im lokalen Netzwerk muss man dieses auch noch beachten. Über eine kleine ADSL Leitung kann das unter Umständen also zu „Bauchschmerzen“ führen…


  Installation eines OS

Wir geben dem virtuellen Host ein ISO Image zur Installation von beispielsweise Ubuntu 12.04LTS. Dieses ISO (ubuntu-12.04-desktop-i386.iso) wird mit phpVirtualBox dem Host unter Settings -> Storage eingebunden. Dieser kann nun von dieser CD ganz normal booten. Unter System -> Motherboard -> Boot Order kann die Bootreihenfolge angepasst werden. Vermutlich wird Floppy nie benötigt. Und nach der Installation sollte man die CD ebenfalls wieder aus der Bootreihenfolge entfernen. Die Installation verläuft dann, wie gewohnt ab. Nur, dass diese halt in der virtuellen Maschine durchgeführt wird.


  VBox Additions installieren

Wenn das OS fertig installiert ist müssen noch die Additions installiert werden.
Hierzu das ISO Image „VirtualBox 4.1.12 Guest Additions“ im Virtual Media Manager bzw. dem Gastsystem unter Storage -> PrimaryMaster hinzufügen. Danach muss die „CD“ im Host gemountet werden. Üblicherweise geschieht dieses durch:

  Shell #> sudo mount /dev/cdrom1 /media/cdrom

Im Gastsystem kann man nun auf die CD zugreifen und nach /media/cdrom wechseln und als sudo das Script VBoxLinuxAdditions.run ausführen.

Also:

  Shell #> sudo mount /dev/cdrom1 /media/cdrom
  Shell #> cd /media/cdrom
  Shell #> sudo ./VBoxLinuxAdditions.run


  Was man lieber nicht machen sollte… – Die liebe Sicherheit

PHPVirtualBox ist für den privaten Einsatz auf „seiner“ Host-Maschine wirklich gut. Allerdings sollte man sich über die Sicherung des Zugriffs auf die WebGUI seine Gedanken machen.
Die Kommunikation zwischen PHPVirtualBox und VBoxManage & Co. läuft unverschlüsselt ab. Das Passwort wird somit im Klartext zwischen diesen zwei Tools übertragen. Weniger ein Problem, wenn beides auf der gleichen Maschine läuft. Möchte man allerdings PHPVirtualBox als Frontend auf einer anderen Maschine nutzen als das Virtualbox-Backend (VirtualBox „Server“), sieht es schon anders aus…
Ebenfalls nicht vorhanden: Eine Trennung der einzelnen virtuellen Maschinen in PHPVirtualBox. Wer Zugriff auf dieses hat (als Admin & Co.), der kann alle Gast-Systeme steuern. Es findet keine Trennung in der „Ansicht“ der Maschinen statt und ist damit für einen Multi-Benutzerzugriff eher ungeeignet. Zumindest würde ich nicht wollen, dass alle anderen Nutzer von PHPVirtualBox meine Gastsysteme ohne Probleme steuern könnten.


  Was man ruhig machen sollte – Donate…

Kostenlose Software, die gut ist, bezahle ich gerne. Auch wenn die eigentlich kostenlos ist 😉
Also ruhig mal auf den Donate-Button in phpVirtualBox klicken und dem Entwickler eine Aufmerksamkeit zuwerfen. Wenn man zufrieden ist, dann sollte man ruhig mal ein paar Dollar spenden. Schließlich wird solch Software häufig in der Freizeit entwickelt. Also soll der Entwickler ein wenig für andere Freizeitaktivitäten erhalten.


  Links
https://blog.rotzoll.net/2010/11/remote-administration-seiner-virtualbox-instanzen-per-webbrowser-phpvirtualbox/
http://download.virtualbox.org/virtualbox/4.1.12/
http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm
http://code.google.com/p/phpvirtualbox/


Dieser Beitrag wurde unter Dokus und Tipps, Linux/ UNIX, Technikspielkram abgelegt und mit , , , , , , , , , , , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert