Asustor VirtualBox - redémarrage auto des VM

Lelolo

Nouveau membre
29 Avril 2026
15
1
8
63
Professionnel
Non
Bonjour,
Lors de l'arrêt/redémarrage du NAS (suite à une mise à jour ou pour toute autre raison), VirtaulBox redémarre mais pas les VMs qui sont dedans.
La doc officielle indique des commandes à lancer à partir de "VBoxManage", mais cela ne semble pas exister dans la version fournie avec APP Central (7.0.18.r56 avec l'Extension Pack installé).
Comment faire dans ce cas ?
 
Appareil
AS6804T
Version du firmware
5.1.3.RGO1
Source : https://www.asustor.com/fr/online/College_topic?topic=249&utm_source=chatgpt.com
ADM peut exécuter des scripts de démarrage stockés dans l'ordre lors du démarrage. Un script peut être ajouté pour démarrer une machine virtuelle lors de la mise sous tension du NAS.

Remarque : L'exemple ci-dessous utilise Windows pour modifier et télécharger le fichier de script. Pour modifier le script directement, connectez-vous à votre NAS avec un compte d'administrateur système à l'aide de SSH et utilisez vi pour modifier directement le script.


ETAPE 1

  • Utilisez un éditeur de texte sur votre ordinateur et créez un nouveau fichier nommé 'S99xxxx.sh'.
  • Entrez le script suivant et enregistrez le fichier.
  • #!/bin/sh
  • /opt/VirtualBox/VBoxManage startvm VMNAME --type vrdp &
  • VMNAME est le nom de la machine virtuelle.
Remarque : LLe nom de fichier doit inclure S99 comme préfixe. Il s'agit d'un nom de fichier et d'une séquence d'exécution définis par ADM pour le script shell démarré. Le reste du nom de fichier peut être personnalisé. L'extension de fichier est « sh ». Les fichiers ne doivent pas avoir de noms en double.
Exemple : S99autoboot-vm.sh

20211217102041_S99autoboot_vm_sh.png



ETAPE 2

  • Chargez le fichier sauvegardé dans /usr/local/etc/init.d/ sur le NAS.
  • S'assurer que le propriétaire de S99*.sh est le compte administrateur ou root.
  • Modifier les privilèges d'accès aux fichiers de S99*.sh à 0774.
Remarque : Assurez-vous d'accorder la permission [x] (execution) de S99*.sh pour le propriétaire, et il est facultatif d'accorder l'autorisation pour le groupe d'administrateurs.

20211217102106_S99autoboot_vm_sh_attribute.png



ETAPE 3

  • Le script Shell bien configuré sera exécuté en séquence lorsque le NAS est mis sous tension.
  • Lorsque le NAS s'allume, la machine virtuelle configurée démarre automatiquement et peut être interagie avec.
20211217102138_Win10_autorunning.png
 
Merci pour cette réponse.
J'ai appliqué l'ensemble du modop, mais il y a toujours quelque chose que je ne comprends pas.
Dans le script, il est fait appel à VBoxManage, or si je fais un essai en cli la commande ne semble pas être là :
1777995032235.png
 
Je ne peux pas éditer mon message, donc je fais une nouvelle réponse :
Ça ne fonctionne pas plus
1778154055214.png
 
bonjour
A priori, c'est plutot
/usr/local/AppCentral/virtualbox/bin/VBoxManage


Voici un script que j'utilise depuis ADM V3, et qui fonctionne toujours pour démarrer mes VM en ligne de commande. Je n'utilise pas la partie "mise en place au démarrage du NAS".

remplacer yourVM par le nom de votre VM, et /share/Syst_interne/yourVM.sh par l'emplacement et le nom de votre script
Code:
#!/bin/sh
# link it with /usr/local/etc/init.d/S82yourVM
# link it with /usr/local/etc/init.d/K60yourVM
# ln -s /share/Syst_interne/yourVM.sh /usr/local/etc/init.d/S82yourVM
# ln -s /share/Syst_interne/yourVM.sh /usr/local/etc/init.d/K60yourVM

PKG_PATH=/usr/local/AppCentral/virtualbox
## ASPORTAL_PATH=/usr/local/AppCentral/asportal
## ASPORTAL_STAT=`apkg --info-installed asportal | grep 'Enabled:' | awk '{print $2}'`
## rcP=/usr/local/etc/init.d/P19virtualbox
## DRV_PATH=/usr/local/AppCentral/media-pack/drivers/

VM_NAME=yourVMname
source $PKG_PATH/CONTROL/env.sh
. /lib/lsb/init-functions

which VBoxManage
VBoxManage list vms|grep "^\"$VM_NAME\"" >/dev/null 2>&1
if [ $? -ne 0 ]
then
        log_failure_msg "VM $VM_NAME seems not to exists"
        log_end_msg 255
fi


case "$1" in
    start)
                log_daemon_msg "Starting VM" "$VM_NAME"
                echo `date +%Y%m%d_%T` "Starting VM $VM_NAME" >> /share/Syst_interne/StartStopVM_grenouille.log
        VBoxManage list runningvms|grep "^\"$VM_NAME\"" >/dev/null 2>&1
                if [ $? -eq 0 ]
                then
                        log_warning_msg "VM $VM_NAME is already started, nothing done"
                else
                        VBoxManage startvm $VM_NAME --type headless
                        BCLE=20
                        RETCOD=1
                        while [ \( $BCLE -gt 0 \) -a \( $RETCOD -ne 0 \) ]
                        do
                                VBoxManage list runningvms|grep "^\"$VM_NAME\"" >/dev/null 2>&1
                                RETCOD=$?
                                BCLE=`expr $BCLE - 1`
                                [ $RETCOD -ne 0 ] && sleep 10
                        done
                        if [ $RETCOD -ne 0 ]
                        then
                                log_failure_msg "VM $VM_NAME unable to start"
                        else
                                echo `date +%Y%m%d_%T` "Started VM $VM_NAME" >> /share/Syst_interne/StartStopVM_grenouille.log
                        fi
                fi
        log_end_msg 0
        ;;
    stop)
        log_daemon_msg "Stopping VM" "$VM_NAME"
        echo `date +%Y%m%d_%T` "Stopping VM $VM_NAME" >> /share/Syst_interne/StartStopVM_grenouille.log
        VBoxManage list runningvms|grep "^\"$VM_NAME\"" >/dev/null 2>&1
                if [ $? -ne 0 ]
                then
                        log_warning_msg "VM $VM_NAME is already stopped, nothing done"
                else
                        # gracefully stopping VM by short pressing power button
                        VBoxManage controlvm $VM_NAME acpipowerbutton
                        BCLE=20
                        RETCOD=0
                        while [ \( $BCLE -gt 0 \) -a \( $RETCOD -eq 0 \) ]
                        do
                                VBoxManage list runningvms|grep "^\"$VM_NAME\"" >/dev/null 2>&1
                                RETCOD=$?
                                BCLE=`expr $BCLE - 1`
                                [ $RETCOD -eq 0 ] && sleep 10
                        done
                        if [ $RETCOD -eq 0 ]
                        then
                                log_failure_msg "VM $VM_NAME unable to stop"
                        else
                                echo `date +%Y%m%d_%T` "Stopped VM $VM_NAME" >> /share/Syst_interne/StartStopVM_grenouille.log
                        fi
                fi
        log_end_msg 0
                ;;

    *)
                echo $1 option not recognized
        echo "Usage: $0 {start|stop}"
        exit 2
        ;;
esac