Comment démarrer les machines à boîte virtuelle automatiquement au démarrage?

41

J'ai beaucoup de machines virtuelles dans mon Ubuntu12.04, chaque fois que je ferme ou que je redémarre, je dois les démarrer une par une.

Je veux une aide pour écrire un script pour démarrer automatiquement les machines VBox au démarrage.

    
posée Maythux 13.01.2014 - 07:12
la source

12 réponses

40

Vous pouvez utiliser le service de démarrage automatique de VirtualBox. Un bon tutoriel décrivant comment faire est publié sur la "vie d'un geek Admin "blog .

Les étapes suivantes sont adaptées à partir de l’article de blog lié:

  1. Vous devez d’abord créer le fichier /etc/default/virtualbox et ajouter quelques variables.

    VBOXAUTOSTART_DB contient un chemin d'accès absolu au répertoire de base de données de démarrage automatique et
    VBOXAUTOSTART_CONFIG qui contient l'emplacement des paramètres de configuration de démarrage automatique. Le fichier devrait ressembler à ceci:

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
    
  2. Maintenant, nous devons créer le fichier /etc/vbox/vbox.cfg et ajouter

    # Default policy is to deny starting a VM, the other option is "allow".
    default_policy = deny
    # Create an entry for each user allowed to run autostart
    myuserid = {
    allow = true
    }
    

    Remarque: Si le nom de fichier vbox.cfg ne fonctionne pas ci-dessus, essayez de le nommer autostart.cfg .

    Si vous êtes le seul utilisateur, vous pouvez simplement ajouter la ligne default_policy = allow au fichier vbox.cfg .

  3. Définissez les autorisations sur le répertoire du groupe vboxuser et assurez-vous que les utilisateurs peuvent écrire dans le répertoire ainsi que le bit sticky.

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
    
  4. Ajoutez chacun des utilisateurs au groupe vboxusers .

    sudo usermod -a -G vboxusers USERNAME
    

    (remplacez USERNAME par le nom d'utilisateur)

REMARQUE : Si vous avez modifié les autorisations de groupe pour l'utilisateur actuel, déconnectez-vous et reconnectez-vous pour actualiser les autorisations. (credit @ kR105)

  1. Chaque utilisateur qui veut activer le démarrage automatique pour des machines individuelles doit définir le chemin d'accès au répertoire de base de données de démarrage automatique avec

    VBoxManage setproperty autostartdbpath /etc/vbox
    

    et activer le démarrage automatique pour une VM individuelle avec

    VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
    

    Cela créera un fichier myuserid.start dans le répertoire /etc/vbox

  2. Maintenant, redémarrez le service vboxautostart à lire dans les modifications.

    sudo service vboxautostart-service restart
    
  3. Redémarrez votre système et votre machine virtuelle doit démarrer

réponse donnée kdmurray 13.01.2014 - 08:27
la source
11

J'ai eu des incidents malheureux similaires essayant cette opération sur le LTS vanille.

~$ cat /etc/os-release 
NAME="Ubuntu" 
VERSION="14.04.1 LTS, Trusty Tahr" 

Sur cette version, le fichier de clés /etc/init.d/vboxautostart-service n’a pas été installé.

Autant que je sache, toutes les VitualBox et tous les besoins ont été mis en place par apt-get, donc je ne peux pas dire pourquoi le fichier 'vboxautostart-service' n’a pas été fourni. Mais pour en venir à bout, voici ma mise à jour sur le post de kdmurray.

1) Le fichier / etc / default / virtualbox existait pour moi. Il faut donc ajouter des vars:

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg

2) Doit créer /etc/vbox/autostart.cfg comme indiqué par OP.

6b) Nécessité d’obtenir un script vboxautostart-service et de le rendre exécutable.

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

6c) Alerte le contrôleur rc.d, mais j'ai utilisé 24 comme heure de début. En mettant juste 20 et il n'a pas démarré. Peut-être que cela fonctionnait avant même que virtualbox ne fonctionne.

sudo update-rc.d vboxautostart-service defaults 24 24

Ensuite, le redémarrage a lancé la machine virtuelle correctement.

    
réponse donnée ndasusers 11.11.2014 - 03:32
la source
6

Après de nombreuses heures malheureuses à essayer de faire fonctionner les procédures de de kdmurray ci-dessus, j'ai finalement trouvé une méthode qui fonctionnait simplement.

Mon hôte Linux (Mint 17) a d’abord été configuré au démarrage pour se connecter automatiquement à mon compte principal.

Deuxièmement, j'ai utilisé les fonctionnalités de l'interface graphique de VirtualBox (v4.3.12) pour créer un raccourci pour chaque machine virtuelle sur le bureau. {clic droit sur la VM dans la colonne de gauche & amp; sélectionnez "Créer un raccourci sur le bureau"}

Suivant: j'avais déjà trouvé que Menu- & gt; Centre de contrôle - & gt; Applications de démarrage - & gt; Ajouter et l'ajout des raccourcis sur le bureau a donné des fichiers qui ne fonctionnaient pas, j'ai repéré sur une autre réponse sur cette page que l'emplacement des startups est /home/USERNAME/.config/autostart J'ai donc fait un clic droit sur chacun des raccourcis de la machine virtuelle, puis les ai collés dans ce dossier, remplaçant les anciens fichiers de crap. Maintenant, ils ont développé les «jolies» icônes VirtualBox.

Et bien sûr, au redémarrage de l’ordinateur hôte, les 3 VM ont démarré automatiquement.

:-)

Bill Williams

PS: hélas, il me manque encore quelque chose, car les machines virtuelles ne démarrent pas souvent au démarrage, mais génèrent une boîte de dialogue d'erreur indiquant qu'elles sont verrouillées, même si je leur ai dit d'arrêter avant le l'hôte a été redémarré.

    
réponse donnée Bill Williams 24.08.2014 - 20:44
la source
5

Vous pouvez utiliser vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (un de ceux-ci). Utilisez "sans tête" si ce sont des serveurs auxquels vous vous connectez par d'autres moyens que d'utiliser l'interface graphique.

Pour lancer ces commandes au bon moment pendant le démarrage, vous devez lire Upstart.

    
réponse donnée Jo-Erlend Schinstad 13.01.2014 - 08:19
la source
4

Outre la bonne description du service vboxautostart ci-dessus, vous pouvez le faire

VBoxManage modifyvm server --autostop-type savestate

pour arrêter automatiquement l'invité à l'arrêt. Pour Ubuntu 14.04, j'ai dû ajouter un sleep 30 à la section stop de vboxautostart-service, de sorte qu'il attende que l'invité ait été complètement enregistré.

    
réponse donnée Michael Schlueter 12.05.2015 - 19:36
la source
2

J'ai trouvé un moyen plus simple sous Ubuntu 16.04 exécutant VBox 5.1.34.

Lorsque vous êtes dans VBox, cliquez avec le bouton droit de la souris sur la VM active ou inactive de la liste, sélectionnez "Créer un raccourci sur le bureau". Une fois l’icône affichée sur votre bureau, ouvrez tout outil (sur mon système, je fais un clic droit et je sélectionne 'properties') Copiez ceci dans le presse-papier.

Ouvrez le programme pour mettre à jour les applications de démarrage et créez une nouvelle application qui démarre au démarrage, en collant la commande que vous avez copiée à partir du lien du bureau créé par VirtualBox.

    
réponse donnée Dave Nagy 10.04.2018 - 22:17
la source
1

Pour démarrer une VM lors de la connexion à notre session, nous pouvons souhaiter définir un fichier .desktop:

Lorsque ce fichier a été copié ou déplacé dans notre répertoire de démarrage automatique, il sera ensuite exécuté après notre connexion:

L'exécution de Virtual Box dans l'espace utilisateur peut aider à éviter les effets secondaires indésirables du démarrage au démarrage (par exemple, la machine virtuelle s'exécute en tant que root, le temps de démarrage augmente incroyablement, ...).

    
réponse donnée Takkat 13.01.2014 - 10:23
la source
1

Cela peut être fait en utilisant l'interface de gestion de ligne de commande VirtualBox. Il suffit de lancer le script suivant au démarrage.

#!/bin/bash
VMUSER="vmuser"
VMNAME="RedHatVM" #also you can put UUID in this variable (VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")

case "" in
    start)
        echo "===Starting VirtualBox VM==="
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        ;;
    stop)
        echo "===Saving state of Virtualbox VM==="
    sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
    sleep 20
        ;;
    shutdown)
        echo "===Shutting down Virtualbox VM==="
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
    sleep 20
        ;;
    reset)
        echo "===Resetting VirtualBox VM==="
         sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
        ;;
    status)
         echo -n "VMNAME->";sudo -H -u $VMUSER VBoxManage showvminfo "$VMNAME" --machinereadable |grep "VMState="| cut -d "=" -f2
        ;;
        echo "Usage: /etc/init.d/VMscript {start|stop|shutdown|reset|status}"
        exit 1
        ;;
    esac

exit 0

est un bon tutoriel pour plus d'informations.

    
réponse donnée Artex 27.05.2016 - 20:52
la source
1

Ajout à @kdmurray answer.

Si vous obtenez une erreur sur:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

Pour résoudre ce problème, j'ai dû créer manuellement des fichiers "username" .start et "username" .stop avec:

sudo touch "username".start
sudo touch "username".stop

Et changer de propriétaire avec:

sudo chown "username" "username".start
sudo chown "username" "username".stop

relancer:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

puis redémarrez le service:

sudo service vboxautostart-service stop
sudo service vboxautostart-service start

vérifier que tout va bien avec:

top

et vous devriez voir "VBox ..." traiter dans une liste, si la machine virtuelle est en cours d'exécution

    
réponse donnée Solata 26.07.2016 - 11:52
la source
0

Vous pouvez également obtenir le gestionnaire de session de gnome décrit ici. Gnome Session Manager Il est dans le centre de logiciel ou vous pouvez simplement aller à un terminal et taper   sudo apt-get install gnome-session-common

Ensuite, vous pouvez créer un petit script à exécuter et utiliser le gestionnaire de session gnome pour le démarrer. Voici un petit exemple de script pour vous faire avancer ...

#!/bin/sh

#vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (one of those)
# So if your username is user, and virtualbox put your VMs in the default location, and you want headless...

vboxmanage startvm '/home/user/VirtualBox VMs/myvmname' --type=gui
    
réponse donnée Scott Goodgame 13.01.2014 - 08:51
la source
0

C'est ainsi que je lance mon Centos (nom de ma machine virtuelle) lorsque la machine hôte redémarre. J'utilise crontab pour ce travail. Voici mon entrée crontab:

@reboot VBoxHeadless --startvm "Centos" &
    
réponse donnée user514700 04.03.2016 - 15:31
la source
0

Pour le serveur Ubuntu 16.04.1 LTS, j'ai résolu ce problème en faisant:

Activez d'abord le rc-local.service

sudo systemctl enable rc-local.service

Ajoutez la ligne suivante dans /etc/rc.local

su virtual_box_user -c "VBoxHeadless -startvm 'virtual_machine_name' &"

Notez que virtual_box_user est celui qui peut voir la machine virtuelle (que vous souhaitez lancer) exécutant la commande:

VBoxManage list vms

Exemple:

$ VBoxManage list vms
"virtualbox1" {2eb3ba3b-bcb3-4515-95d9-d33bce214c28} 
"virtualbox2" {62365634-f2q4-40c0-b4ed-22f4ab84441a}

Le /etc/rc.local modifié devrait ressembler à ceci

#!/bin/sh -e
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error.
# 
# In order to enable or disable this script just change the execution
# bits. 
# 
# By default this script does nothing. 

su bob -c "VBoxManage startvm 'virtualbox1' --type headless &" 
su bob -c "VBoxManage startvm 'virtualbox2' --type headless &" 

exit 0 

Si vous ne choisissez pas le bon propriétaire de virtualbox, l’erreur doit apparaître lors de la saisie de la commande:

sudo systemctl status rc-local.service

J'espère que cela peut aider

    
réponse donnée Alessandro Cimbelli 14.09.2017 - 22:09
la source

Lire d'autres questions sur les étiquettes