Virtualbox

Kurz ein Überblick zu virtualbox und debian 7 oder 8

Installation

entprechen folgendem Link

https://wiki.debian.org/VirtualBox

Autostart und Autostop

Anmelden als root
 
bearbeiten der folgenden Datei
vi /etc/default/virtualbox 
anfügen folgender Zeilen
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.conf
Anlegen des Verzeichnisses
mkdir /etc/vbox
und ändern der Rechte
chgrp vboxusers /etc/vbox
chmod 1775 /etc/vbox

Anlegen und bearbeiten der Datei

vi /etc/vbox/autostart.conf
# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny
# user vbox is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
vboxeigentuemer = {
 allow = true
 startup_delay = 10
}

Hinzufügen des Eigentuemers zur Gruppe

usermod -a -G vboxusers vboxeigentuemer

Anmelden als vboxeigentuemer

VBoxManage setproperty autostartdbpath /etc/vbox
VBoxManage modifyvm Win7prof --autostart-enabled on --autostop-type acpishutdown

Anmelden als root

--> nich mehr notwendig Debian 9, 10

Herunterladen und modifizieren des vboxautostart-service

cd /etc/init.d/
wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-service
chmod +x vboxautostart-service
vi vboxautostart-service

Ändern der Zeilen in

# Required-Start: virtualbox
# Required-Stop: virtualbox  

Registrieren

update-rc.d vboxautostart-service defaults

und starten

/etc/init.d/vboxautostart-service start

<-----

Probleme

1. Das stoppen der VMs läuft nicht sauber!

2. Wenn mehrer User VMs starten, wird immer nur der User gestartet mit der niedrigsten uid.

Lösung

Ergänzen des Startscriptes in

/usr/lib/virtualbox/vboxautostart-service.sh
ca. Zeile 107
mit einem sleep 10
Zur Kontrolle habe ich noch ein echo hinzugefügt.
....
for user in `ls $VBOXAUTOSTART_DB/*.start`
    do
        start_daemon `basename $user | sed -ne "s/\(.*\).start//p"` $binary $PARAMS > /dev/null 2>&1
        sleep 10
        echo "VBoxAutostart multiuser start -bacu- ---> " $user
    done
....

Fertig!!