Lutz L. Tout d'abord, merci pour le script. J'ai le même problème sur Xubuntu 14.04 avec VB 4.3.10 et un Xubuntu 12.04 ou un invité Windwos XP qui fonctionne en hibernation.
Au premier essai, le script semble fonctionner parfaitement. Mais la fois suivante, les VMs ne reprennent pas automatiquement lorsque le système principal revient de l'état d'hibernation.
Voici le message que je trouve dans le fichier "pm-suspend.log" :
Exécution du hook /etc/pm/sleep.d/05_virtualbox thaw hibernate : Envoyer la reprise au VM'sVBoxManage : erreur : La machine virtuelle 'Xubuntu12' s'est interrompue s'est terminée de façon inattendue pendant le démarrage avec le code de sortie 1 VBoxManage : error : Détails : code NS_ERROR_FAILURE (0x80004005), composant Machine, interface IMachine En attente de la mise sous tension de la VM "Xubuntu12"...
Je peux reprendre manuellement les Invités, cela fonctionne sans problème, mais ce n'est pas aussi confortable.
P.S. : Le problème est connu depuis longtemps comme vous pouvez le voir ici : https://www.virtualbox.org/ticket/7716
EDITAR: Il existe un script similaire :
#!/bin/bash
# Script to pause/resume running VBox VMs on hibernate/thaw
operation="$1"
# This script is invoked as root, but root cannot use VBoxManage to
# control the VMs of other users. So we obtain the members of the
# 'vboxusers' group and re-execute as each user in turn
if [ $(id -u) -eq 0 ] ; then
# running as root...
vboxusers=$(grep ^vboxusers /etc/group | cut -d ':' -f 4- | tr ',' ' ')
for user in $vboxusers; do
echo "restarting as $user..."
su - $user -c "$0 $operation" || exit $?
done
exit 0
fi
hibernated_vm_list=$HOME/.vbox-hibernated-vms
# get a list of all running VMs, save their state to disk and
# remember that we have done this
hibernate_vms()
{
rm -f $hibernated_vm_list
# each line in list is: "vmname" {vm-uuid}
local vm_list="$(VBoxManage list runningvms)"
if [ -z "$vm_list" ] ; then # nothing to do
return 0
fi
local tempfile="/tmp/VBoxPauseResume.tmp"
echo "$vm_list" > $tempfile
local pids=""
while read line ;
do
vm_name=$(echo "$line" | sed 's/\(".*"\).*/\1/')
vm_uuid=$(echo "$line" | sed 's/.*\({.*}\)/\1/')
echo "saving state of vm $vm_name for user $user"
(VBoxManage controlvm $vm_uuid savestate && \
echo "$vm_name $vm_uuid" >> $hibernated_vm_list && \
echo "saved state of vm $vm_name for user $user") &
pids="$pids $!"
done < $tempfile
wait $pids
rm -f $tempfile
}
# resumes any VMs that were saved by hibernate_vms(). Uses parallel
# child processes to thaw several VMs faster
thaw_vms()
{
if [ -e $hibernated_vm_list ] ; then
local pids=""
while read line ;
do
vm_name=$(echo "$line" | sed 's/\(".*"\).*/\1/')
vm_uuid=$(echo "$line" | sed 's/.*\({.*}\)/\1/')
echo "resuming vm $vm_name for user $user"
VBoxManage startvm $vm_uuid &
pids="$pids $!"
done < $hibernated_vm_list
wait $pids
rm -f $hibernated_vm_list
fi
}
case $operation in
hibernate) hibernate_vms ;;
suspend) ;;
thaw) thaw_vms ;;
resume) ;;
esac
(Sauvegarder ce script comme /etc/pm/sleep.d/02-VirtualBox, et s'assurer qu'il est exécutable)
Source : http://angryfifer.blogspot.de/2012/02/linux-hibernation-and-virtualbox.html
Malheureusement, le même problème avec ce script...