Virtualbox mit Webinterface unter Debian Linux

Aus Laub-Home Wiki

Ausgangslage

Ich habe auf meinem Debian Linux den VMWare Server laufen, dieser wird jedoch nicht mehr weiterentwickelt und es ist nur eine Frage der Zeit bis dieser nicht mehr richtig läuft. Deshalb suchte ich nach einer anderen brauchbaren Lösung eine WinXP Maschine als VM auf meinem Debian Server (Squeeze) laufen zu lassen.

Installation

Zuerst fügen wir das VirtualBox Opensource Repository hinzu: /etc/apt/sources.list

#VirtualBox repository
deb http://download.virtualbox.org/virtualbox/debian squeeze contrib

dann:

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 98AB5139
aptitude update

Nun kann VirtualBox installiert werden:

aptitude install virtualbox-4.1

Nun sollte man noch einen vbox Benutzer anlegen und ihm ein Passwort geben:

useradd -s /bin/bash -g vboxusers -d /srv/vbox/ vbox
passwd vbox

Will man die Maschinen nicht standardmäßig im “home” Verzeichniss des Users “vbox” speichern kann man irgendwo einen Ordner erstellen, darf dann aber nicht vergessen für diesen User und die Gruppe volle Berechtigungen zu setzen. Und genau das mache ich auch, meine VMs sollen später unter /srv/vbox liegen.

mkdir /srv/vbox
chown vbox.vboxusers /srv/vbox

Konfiguration

Zuerst wird der vboxweb-service eingerichtet, in den autostart gelegt und gestartet:
Hierfür folgende Datei erstellen und füllen: /etc/default/virtualbox

VBOXWEB_USER=vbox

starten:

/etc/init.d/vboxweb-service start

und in den Autostart des Systemes:

update-rc.d vboxweb-service defaults

Installation des Extensionpacks

Da einige für uns wichtige Funktionen wie zum Beispiel USB, RDP usw. auf Extensions ausgegliedert wurden, muss man dieses wie hier gezeigt nachinstallieren.
Bevor wir das Extpack herunterladen überprüfen wir die Virtualbox-Versionsnummer, da wir das versionsgleiche Paket installieren müssen.

VBoxManage -v

Die geeigneten Packs findet man im Ordner der jeweiligen Versionsnummer und hat die Endung “.vbox-extpack“:

cd /usr/src
wget http://download.virtualbox.org/virtualbox/4.1.8/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack

und installieren es mit:

VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack

Habt ihr eine andere Virtualbox 4 Version installiert müsst ihr die Befehle anpassen.

phpVirtualbox Installation (Webinterface)

Voraussetzung hierfür ist ein funktionsfähiger Apache Webserver mit PHP. Ist dieser vorhanden, kann es weiter gehen. Als erstes laden wir uns das Paket herunter und entpacken es:

cd /usr/src
wget `wget -q -O - http://phpvirtualbox.googlecode.com/files/LATEST.txt` -O phpvirtualbox-latest.zip
unzip phpvirtualbox-latest.zip

nun kopieren wir das entpackte Verzeichnis in unser Webroot Verzeichnis und springen in dieses:

mv phpvirtualbox-4.1-7 /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox
cd /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox

Dann konfigurieren wir das Tool:

mv config.php-example config.php

config.php

var $username = 'vbox';
var $password = 'passwort';

Nun sollte das ganze unter http://yourhost/vbox erreichbar sein. Die Standard Credentials für den Login sind "admin" mit dem Passwort "admin"

Init Script zum Starten von Virtuellen Maschinen

/etc/init.d/vbox-vms

#!/bin/bash

### BEGIN INIT INFO
# Provides:          virtualbox
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      vboxweb-service
# Should-Stop:       vboxweb-service
# Short-Description: start VirtualBox VMs
### END INIT INFO

# This INIT Script will start and stop Virtual Box VMs
# by A.Laub andreas[-at-]laub-home.de

VMNAMES="Laub-WinXP"
VBOXUSER="vbox"

VBOXHEADLESS=/usr/bin/VBoxHeadless
VBOXMANAGE=/usr/bin/VBoxManage
IFCONFIG=/sbin/ifconfig

test -f $VBOXHEADLESS || exit 0
test -f $VBOXMANAGE || exit 0
test -f $IFCONFIG || exit 0

. /lib/lsb/init-functions

case "$1" in
start)    for i in $VMNAMES; do
              log_daemon_msg "Starting virtual machine $i" ""
              su - $VBOXUSER -c "$VBOXHEADLESS -startvm $i -vrdp on &"
              sleep 1
              log_end_msg $?
          done
          exit 0
          ;;
stop)     for i in $VMNAMES; do
              log_daemon_msg "Stopping virtual machine $i" ""
              su - $VBOXUSER -c "$VBOXMANAGE -nologo controlvm $i savestate"
              log_end_msg $?
          done
          exit 0
          ;;
reset)    for i in $VMNAMES; do
              log_daemon_msg "Resetting virtual machine $i" ""
              su - $VBOXUSER -c "$VBOXMANAGE -nologo controlvm $i reset"
              log_end_msg $?
          done
          exit 0
          ;;
poweroff) for i in $VMNAMES; do
              log_daemon_msg "Switching off virtual machine $i" ""
              su - $VBOXUSER -c "$VBOXMANAGE -nologo controlvm $i poweroff"
              log_end_msg $?
          done
          exit 0
          ;;
shutdown) for i in $VMNAMES; do
              log_daemon_msg "Switching off virtual machine $i" ""
              su - $VBOXUSER -c "$VBOXMANAGE -nologo controlvm $i acpipowerbutton"
              log_end_msg $?
          done
          exit 0
          ;;
esac
echo "Usage: /etc/init.d/samba {start|stop|poweroff|shutdown|reset}"
exit 0

nicht vergessen das Ausführrecht zu geben:

chmod +x /etc/init.d/vbox-vms

Nun noch in den Autostart:

update-rc.d vbox-vms defaults

Installation der Gasterweiterungen/Treiber

Um mehr Performance in den VMs zu bekommen und damit die Maus in der Konsole besser funktioniert sollte man die Gasterweiterungen installieren. Hier werden einige Treiber aktualisiert, wie zum Beispiel der Grafikkartentreiber.

Aktivierung des ISOs

Das Iso befindet sich in folgendem Ordner:
/usr/share/virtualbox/VBoxGuestAdditions.iso
Dieses muss via PHP-GUI gemountet werden, hierzu einfach die Detailseite der VM öffnen und auf Massenspeicher klicken. Nun das CD-Rom Laufwerk anklicken und Rechts auf das CD Symbol klicken und einen neuen virtuellen Datenträger öffnen auswählen, dann hier zum oben beschriebenen ISO navigieren und dieses Auswählen.

Windows

Intel Netzwerkkartentreiber

Unter XP und 2000 funktiniert die Intel 1000er Serie nicht out of the box, hier kann der Treiber einfach auf der Intel Homepage heruntergeladen werden:

Paravirtueller Netzwerkardapter unter Windows 2000/XP/Vista

Will man unter den Windows Systemen 2000, XP oder Vista die paravirtuelle Netzwerkkarte nutzen, muss man den KVM virtio Treiber herunterladen und und in der Virtuellen Maschine installieren.

Hat man das Treiber Paket oder das ISO heruntergeladen und entpackt, bzw. als CD gemountet, kann man die VM herunterfahren und das Netzwerkinterface tauschen, dann hochfahren und bei der Frage nach dem Treiber den Ordner mit dem richtigen Treiber auswählen.

Linux

... comming soon ...

Tuning

Sata HDD Kontroller

Es gib einen riesigen Performance Unterschied zwischen den IDE und den virtuellen SATA Kontrollern. Um den Sata Kontroller unter XP zu verwenden, muss man die VM zuerst mit dem IDE Kontroller installieren und dann wie folgt vorgehen:

  1. Installation WinXP mit IDE
  2. zusätzlich SATA Kontroller der VM hinzufügen (AHCI, Host I/O-Cache verwenden)
  3. VM starten
  4. Treiber herunterladen (Intel Matrix Storage Manager): http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101
  5. Treiber installieren
  6. VM herunterfahren
  7. Kontroller der HDDs wechseln
  8. booten und fertig

Mehr Infos siehe hier:

Tips für die VMs

  1. Installieren der Gasterweiterungen
  2. Regelmäßiges Defragmentieren der VMs
  3. Deaktivierung unnötiger Dienste und Autostart Programme
  4. Windows Designs deaktivieren
  5. Auslagerungsdatei deaktivieren oder nur geringe Größe einrichten

Erstellen einer HDD in der Konsole

Gibt es Probleme beim erstellen großer HDDs mit der PHP GUI, kann man die Platte auch händisch in der Konsole anlegen:

VBoxManage createhd --filename Daten.vdi --size 153600 --format VDI --variant Fixed

Upgrade

Die Aktualisierung kommt aus dem Repository. Zum Upgrade müssen alle VMs ausgeschaltet sein! Das Extension Pack kann dann heruntergeladen werden und mit folgendem Befehl aktualisiert werden:

cd /usr/src/
wget http://download.virtualbox.org/virtualbox/4.1.10/Oracle_VM_VirtualBox_Extension_Pack-4.1.10-76795.vbox-extpack
VBoxManage extpack install --replace /usr/src/Oracle_VM_VirtualBox_Extension_Pack-4.1.12-77245.vbox-extpack

Upgrade VirtualBox 4.1 auf 4.2

Will man ein Update von 4.1 auf 4.2 machen, muss man zuerst die neue Version installieren, hierbei wird automatisch die alte entfernt. Als erstes sollten alle VMs ausgeschaltet werden:

/etc/init.d/vbox-vms shutdown
aptitude install virtualbox-4.2
aptitude purge '~c'
cd /usr/src/
wget http://download.virtualbox.org/virtualbox/4.2.6/Oracle_VM_VirtualBox_Extension_Pack-4.2.6-82870.vbox-extpack
VBoxManage extpack install --replace /usr/src/Oracle_VM_VirtualBox_Extension_Pack-4.2.6-82870.vbox-extpack
reboot

Nun noch das Webinterface Updaten:

cd /usr/src
wget `wget -q -O - http://phpvirtualbox.googlecode.com/files/LATEST.txt` -O phpvirtualbox-latest.zip
unzip phpvirtualbox-latest.zip
rm -rf /srv/httpd/vhosts/laub-home.dyndns.org/htdocs/vbox/
mv /usr/src/phpvirtualbox-4.2-4 /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox
cd /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox
mv config.php-example config.php

config.php

var $username = 'vbox';
var $password = 'passwort';

Nun sollte das ganze unter http://yourhost/vbox erreichbar sein.

Upgrade VirtualBox 4.2 auf 4.3

Will man ein Update von 4.2 auf 4.3 machen, muss man zuerst die neue Version installieren, hierbei wird automatisch die alte entfernt. Als erstes sollten alle VMs ausgeschaltet werden:

/etc/init.d/vbox-vms shutdown
aptitude install virtualbox-4.3
aptitude purge '~c'
cd /usr/src/
wget http://download.virtualbox.org/virtualbox/4.3.12/Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack
VBoxManage extpack install --replace /usr/src/Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack
reboot

Nun noch das Webinterface Updaten:

cd /usr/src
wget http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-1.zip
unzip phpvirtualbox-4.3-1.zip
rm -rf /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox/
mv /usr/src/phpvirtualbox-4.3-1 /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox
cd /srv/httpd/vhosts/your.vhost.folder/htdocs/vbox
mv config.php-example config.php

config.php

var $username = 'vbox';
var $password = 'passwort';

Nun sollte das ganze unter http://yourhost/vbox erreichbar sein.

Debugging

Ist der Konsolen Link ausgegraut dann Hilft das hier weiter:

So the correct procedure that works for me is:
1. Install the Extension pack as root

vboxmanage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack

2. Ensure the extension pack is installed correctly under root

vboxmanage list extension

3. Reboot the machine 4. Ensure the extension pack is initialized correctly under normal user

vboxmanage list extpacks

5. The Remote Display tab should be displayed under Display section.

Quellen