VirtualBox ist eine Virtualisierungssoftware, mit der virtuelle Rechner erstellt werden können, um z.B. andere Betriebssysteme zu testen oder Systeme aus Sicherheitsgründen voneinander zu trennen.
Grundlagen |
Installation |
Konfiguration |
Virtualisierung | Installation VirtualBox | Konfiguration Virtualbox (CLI) |
Installation phpVirtualBox | Konfiguration phpVirtualbox | |
Konfiguration Gemeinsame Ordner | ||
Auf Gastsystem zugreifen | ||
Terminal Befehle | ||
Bildschirmauflösungen d. Gastsystems | ||
———————————————- | ———————————————- | ———————————————- |
Virtualisierung
Unter Virtualisierung versteht man die Emulierung von Hardware. Dabei wird durch die Virtualisierungssoftware auf dem Hostsystem die gesamte Hardware zum Betrieb eines Betriebssystems bereitgestellt. Die Gastsysteme („VMs“) verhalten sich dabei wie „echte“ Rechner. Durch Virtualisierung kann ein Großteil an Hardware eingespart werden.
Installation VirtualBox
Voraussetzung ist eine Debian 11|12, Apache und PHP Installation. Die Installation kann über manuell heruntergeladene Packe aus dem phpVirtualbox Archiv oder mithilfe der Virtualbox Repositories erfolgen. Die Installation über Repositories von Virtualbox wird im Folgenden kurz beschrieben:
- Virtualbox Repository hinzufügen (Debian / Ubuntu / APT basierte Distributionen):
1http://download.virtualbox.org/virtualbox/debian $(lsb_release -c | tr -d : | cut -f 2) contrib" | sudo tee -a /etc/apt/sources.list - Virtualbox Repository Signatur laden und registrieren
12Debian 12 => wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- > /etc/apt/trusted.gpg.d/oracle_vbox_2016.ascDebian 11 => wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - - Aktuellste Virtualbox Version installieren:
12sudo apt-get updatesudo apt-get install $(sudo apt-cache search virtualbox- | grep "Oracle VM VirtualBox" | tail -n1 | cut -d " " -f1) - Virtualbox Extensionpack laden und installieren:
123wget https://download.virtualbox.org/virtualbox/7.0.10/Oracle_VM_VirtualBox_Extension_Pack-7.0.10.vbox-extpacksudo VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-7.0.10.vbox-extpacksudo rm Oracle_VM_VirtualBox_Extension_Pack-7.0.10.vbox-extpack - Virtualboxwebservice Init Script kopieren und ggf. Startverzögerung einstellen (nur bei Debain 11 nötig) :
1sudo cp /usr/lib/systemd/system/vboxweb.service /etc/systemd/system/
Installation phpVirtualBox
- phpVirtualbox herunterladen und entpacken
123456789101112131415sudo apt-get install php-xml php-soapcd /var/wwwsudo wget https://github.com/BartekSz95/phpvirtualbox/archive/main.zipunp main.zipsudo chown -R www-data:www-data phpvirtualbox-mainsudo ln -s phpvirtualbox-main/ phpvirtualbox# obsolete source# sudo git clone git://git.code.sf.net/p/phpvirtualbox-7/code phpvirtualbox-7-code# sudo mv phpvirtualbox-7-code/phpvirtualbox7.0/ .# sudo ln -s phpvirtualbox7.0 phpvirtualbox# sudo chown -R www-data:www-data phpvirtualbox7.0# sudo rm -r phpvirtualbox-7-code - phpVirtualbox Konfigurationsdatei für Apache Webserver kopieren und anpassen :
123sudo cp /var/www/phpvirtualbox/phpvirtualbox.conf /etc/apache2/sites-available/sudo sed -i 's|/usr/share/phpvirtualbox|/var/www/phpvirtualbox|' /etc/apache2/sites-available/phpvirtualbox.confsudo sed -i 's/Require local/#Require local/' /etc/apache2/sites-available/phpvirtualbox.conf
Konfiguration phpVirtualbox
- Benutzer für phpVirtualbox anlegen
phpVirtualbox sollte aus Sicherheitsgründen unter einem eigenen Benutzer betrieben werden, da das Userpasswort für den VirtualBox User im Klartext gespeichert wird. - Anlegen und Zuweisen eines Virtualboxnutzers :
12345sudo useradd -d /home/vbox -m -g vboxusers -s /bin/bash vboxsudo adduser vbox vboxuserssudo touch /etc/default/virtualboxecho 'VBOXWEB_USER=vbox' | sudo tee -a /etc/default/virtualboxsudo passwd vbox
phpVirtualbox für User konfigurieren (manuelles Editieren der /var/www/phpvirtualbox/config.php Datei – Sonderzeichen mit \ maskieren)
12sudo cp /var/www/phpvirtualbox/config.php-example /var/www/phpvirtualbox/config.phpsudo nano /var/www/phpvirtualbox/config.php
folgende Variablen in /var/www/phpvirtualbox-master/config.php Datei anpassen (manuelles editieren)
12var $username = 'vbox'var $password = 'Passwort' ( Passwort des users vbox )
phpVirtualBox für User konfigurieren (automatisches editieren)
1234sudo cp /var/www/phpvirtualbox/config.php-example /var/www/phpvirtualbox/config.phpprintf "Enter vbox user password:" && read Passwordsudo sed -i s/'var $username = .*vbox.*;'/"var \$username = \'vbox\';"/ /var/www/phpvirtualbox/config.phpsudo sed -i s/'var $password = .*;'/"var \$password = \'$Password\';"/ /var/www/phpvirtualbox/config.php) - phpvirtualbox für apache aktivieren
-
1234cp /var/www/phpvirtualbox/phpvirtualbox.conf /etc/apache2/sites-available/phpvirtualbox.confsed -s 's|/usr/share/phpvirtualbox|/var/www/phpvirtualbox|' -i /etc/apache2/sites-available/phpvirtualbox.confa2ensite phpvirtualbox.confsystemctl restart apache2
Verbinden mit phpVirtualbox Server
- phpVirtualbox ist nun unter dem Link: http://IP-DES-VIRTUALBOXSERVERS/phpvirtualbox erreichbar. Dies ist der Virtualbox Manager, wie er auf einem lokalen System gestartet wird. Der Standard-Benutzername und Kennwort lautet: admin/admin. Hier sollte umgehend ein sicheres Passwort gewählt werden
- Mit Remmina oder vergleichbaren Remotedesktop Clienten kann sich direkt auf eine durch den Virtualbox Manager gestartete virtuelle Maschine eingeloggt werden. Jeder virtuellen Maschine muss dabei ein eigener Port zugewiesen werden.
- Virtualbox Guest Additions
Das phpvirtualbox Webinterface bietet keine Möglichkeit die VirtualBox Guest Additions über das virtuelle Laufwerk des Clients zu installieren. Die VirtualBox Guest Additions.iso Datei kann HIER heruntergeladen werden (Auf Version achten), alternativ befindet sich das ISO Image der installierten VirtualBox Version unter /usr/share/virtualbox/VBoxGuestAdditions.iso.
Konfiguration Shared Folder
Freigegebene Ordner befinden sich physisch auf dem Host und werden für den Gast über einen speziellen Dateisystemtreiber in den Guest Add-ons bereitgestellt. Für Windows-Gäste werden freigegebene Ordner als Pseudo-Netzwerk-Redirector implementiert. Für Linux- und Oracle Solaris-Gäste stellen die Guest Add-ons ein virtuelles Dateisystem bereit. Der Virtuabox Benutzer auf dem Host sowie der Gastbenutzer in der VM müssen der Gruppe „vboxsf“ hinzugefügt werden.
Es gibt mehrere Möglichkeiten, freigegebene Ordner für eine virtuelle Maschine einzurichten:
-
-
- GUI => Unter Geräte im VM Menu befindet sich die Option „Freigegebene Ordner“
- CLI => VBoxManage sharedfolder add „VM name“ –name „sharename“ –hostpath „/path/on/host“ ( –transient (temporär) )
-
Die Freigaben selbst können mit folgenden Optionen konfiguriert werden:
-
-
- Permanente Freigaben (dauerhafte Freigabe, gespeichert in VM Einstellungen)
- Temporäre Freigaben (nur während der laufenden VM aktiv, keine dauerhafte Speicherung)
-
Symlinks des Hosts (Linux, Solaris) können nur nach Aktivierung in den VM Einstellungen vom Gast gelesen werden und sind aus Sicherheitsgründen nicht automatisch aktiv.
-
-
-
1VBoxManage setextradata „VM-Name“ VBoxInternal2/SharedFoldersEnableSymlinksCreate/sharename 1
-
-
Auf Gastsystem zugreifen
Für die grafische Verwaltung des Gastsystems auf dem VM Server bieten sich drei Möglichkeiten.
- Zum einen kann die virtuelle Maschine über das phpvirtualbox interface und das rdp Protokoll direkt verwaltet werden. Allerdings ist dabei der Login für alle virtuellen Maschinen gleich, da diese alle unter einem Konto laufen (vbox s.o.).
- Eine weitere Möglichkeit besteht darin, direkt auf die virtuellen Maschinen via Remotedesktop zuzugreifen. Dazu muss die virtuelle Netzwerkkarte allerdings als Netzwerkbrücke konfiguriert werden.
- phpVirtualbox bietet jedoch auch die Option, über manuelles Editieren der Konfigurationsdateien für jede virtuelle Maschine ein eigenes Benutzerkonto anzulegen.
Terminal Befehle
- Verfügbare Virtuelle Maschinen auflisten :
1VBoxManage list vms - Virtuelle Maschine starten :
1VBoxManage startvm <VM-NAME> - Virtuelle Maschine im Headless Modus starten ( VM wird ohne Displayausgabe gestartet )
1VBoxManage startvm <VM-NAME> --type headless # alternativ: VBoxHeadless -s <VM-NAME> - Detaillierte Informationen zu einer Virtuellen Maschine :
1VBoxManage showvminfo <VM-NAME> - Shared Folder erstellen :
1VBoxManage sharedfolder add <VM-NAME> -name <NAME> -hostpath <HOSTPATH> - Symlinks für Shared Folder aktivieren
1VBoxManage setextradata „VM-Name“ VBoxInternal2/SharedFoldersEnableSymlinksCreate/sharename 1 - Virtualbox Guest addons deinstallieren
1vbox-uninstall-guest-additions
- Virtualbox Kernel Module neu compilieren
1sudo /sbin/vboxconfig # obsolet => /etc/init.d/vboxdrv setup
Auflistung der Parameter des Virtualbox Managers im Terminal : - Virtualbox Headless Control
- Create/Manage VirtualBox VMs from the Command Line
- Ausführliche Erklärung der Virtualbox Funktionsweise
Bildschirmauflösungen d. Gastsystems
Die Auflösungen eines Linux Gastsystems lassen sich durch folgenden Befehl auf dem phpVirtualboxserver (temporär) oder Einträge in der /etc/X11/xorg.conf des Gastsystems (dauerhaft) festlegen :
1 |
VBoxManage controlvm <VMNAME> setvideomodehint <Xres> <Yres> <Cdepth> |
1 2 3 4 5 6 7 8 9 10 11 |
Section "Screen" Identifier "Default Screen" Device "VBOX Video device" Monitor "VBOX Screen" DefaultDepth 24 SubSection "Display" Virtual 1280 800 Depth 24 Modes Modes "800x600@60" "1024x768@60" "1200x800@60" "1280x720@60" "1366x768@60" "1440x900@60" "1650x900@60" "1680x1050@60" "1920x1080@60" "1920x1200@60" EndSubSection EndSection |
Bekannte Fehlerquellen:
- VirtualBox lässt sich nach Update nicht starten.
=> Kerneltreiber wurden nicht neu compiliert:
1sudo /etc/init.d/vboxdrv setup - Virtualbox Systemd Autostart funktioniert nicht (Kerneltreiber noch nicht geladen)
=> Dienstneustart über cron (Zeile hinzufügen): @reboot sleep 5 && systemctl restart vboxweb.service
=> Startverzögerung einstellen („ExecStartPre=/bin/sleep 5“ in „/etc/systemd/system/vboxweb.service“) :
123456789101112[Unit]Description=VirtualBox Web ServiceAfter=network.target[Service]Type=forkingExecStartPre=/bin/sleep 5ExecStart=/usr/lib/virtualbox/vboxweb-service.sh startPIDFile=/run/vboxweb-service.sh[Install]WantedBy=multi-user.target - USB Geräte lassen sich nicht an VM durchreichen.
=> Benutzer ist nicht in vboxusers Gruppe
1sudo adduser <user> vboxusers
- Einloggen ins Webinterface meldet falschen Benutzernamen oder Passwort:
- in /etc/default/virtualbox festgelegter User ist nicht Mitglied Gruppe vboxusers
- in /var/www/phpvirtualbox/config.php festgelegter user weicht von user in /etc/default/virtualbox ab
- default Login => user: admin / pass: admin
- Remote Desktopverbindung kann nicht hergestellt werden ( VirtualBox Remote Display Extension nicht aktiviert):
- RDP für einzelne VM aktivieren und für Lan Verbindungen freigeben
1VBoxManage modifyvm "VM name" --vrde on --vrdeaddress $(hostname -I) - RDP für alle VMs aktivieren und für Lan Verbindungen freigeben
1for i in $(vboxmanage list vms | cut -d "{" -f2 | cut -d "}" -f1) ; do VBoxManage modifyvm "$i" --vrde on --vrdeaddress $(hostname -I); done
- RDP für einzelne VM aktivieren und für Lan Verbindungen freigeben
- Hardware Uhr des Gastsystems wird nach einer Pause der virtuellen Maschine nicht aktualisiert.
- Die Gasterweiterungen wurden nicht installiert. (Anleitung: Installation der Gasterweiterung)
Sonstige Informationen:
Virtualbox Quellcode: Ab Version 4.0 wurde VirtualBox als OpenSource freigegeben. Da sowohl die unfreie Version als auch die Open-Source-Version des Herstellers keinen Sourcecode mitliefert, sollte man abwägen, ob die Quellen in die Paketquellen eingetragen werden sollten.
Versionsupdate: Ein Update mit Versionssprung (major update) erfordert das Entfernen der niedrigeren/alten/installierten Version. Dabei gehen weder Einstellungen noch virtuelle Maschinen verloren. Die Gasterweiterungen der Clients nach der Neuinstallation von Virtualbox müssen ebenfalls für die aktualisierte Version angepasst werden.
Alternativen : RemoteBox
by Speefak | wiki.debian.org | github.com