У меня была такая же проблема, «пауза» виртуального гостя-XP (HostKey-P) действительно работала несколько раз, но часто НЕ. Ввод VM-Guest-XP в «сохраненное состояние» позволяет системе спящий режим без проблем. Я написал небольшой скрипт, поместив его в /etc/pm/sleep.d/05_virtualbox (не забудьте chmod a+x 05_virtualbox), и управление питанием автоматически выполнит состояние сохранения и запуска процедуры на виртуальных машинах ...
#!/bin/sh
# File: /etc/pm/sleep.d/05_virtualbox #(at least in ubuntu/fedora)
#
# This hack saves-state all VirtualBox-VM's off user $VBUSER on hibernate/suspend,
# saves the list of this VMs in $VM_LIST_FILE, and on thaw/resume it starts all
# VMs in that list again, and removes $VM_LIST_FILE.
# BUGS: don't use the same NAME for different VMs, or rewrite the script to use UUIDs
#
# a REAL hack, tried to comment as much as possible, but the chosen syntax is obfuscated,
# sorry...also sorry for the bad english...
#
# Writer (guilty person): Lutz Langenbach
# Copyleft: do what you want with the Code
# Help: VBoxManage 2>&1 |less or http://www.virtualbox.org/manual/ch08.html
VM_LIST_FILE=/var/tmp/vms-in-saved-state-list
VBUSER=Put_YOUR_username_here
PATH=/sbin:/usr/sbin:/bin:/usr/bin
case "${1}" in
suspend|hibernate)
# print list of running VM's output: "vm-name" {vm-uuid}\n
# extract only the name of VM's and send
echo -n "Send savestate to VM's:"
sudo -u $VBUSER VBoxManage list runningvms \
|perl -ne 'chomp;s/^"([^"]*)".*/\1/; print $_; system("sudo -u '"$VBUSER"' VBoxManage controlvm \"$_\" savestate && echo \"$_\">>'"$VM_LIST_FILE"'");'
echo ..done
;;
resume|thaw)
# get each line in $VM_LIST_FILE, use it as VM-Name and send start to it
echo -n "Send resume to VM's"
cat $VM_LIST_FILE | perl -ne 'chomp;s/^"([^"]*)".*/\1/; system("sudo -u '"$VBUSER"' VBoxManage startvm \"$_\"");'
rm -f $VM_LIST_FILE
echo .
;;
*)
echo "Don't know what to do, 1st Arg was:${1}; Must be suspend|hibernate|resume|thaw"
;;
esac