@TuKsn
Проблема очень проста в решении - необходимо установить переменную DISPLAY.
VirtualBox использует его при запуске vms в режиме gui. Та же проблема возникает, когда я регистрируюсь через ssh и хочу запустить vm в режиме gui.
Спасибо за ваш скрипт, он отлично работает!
Однако мне пришлось добавить некоторую модификацию, чтобы сохранить режим работы vms (т. е. «gui» или «headless») или 'sdl'), необходимые для правильного перезапуска vms.
Ниже приведен скрипт с моими правильными значениями:
#!/bin/bash
# Script to pause/resume running VBox VMs on hibernate/thaw
# Set your display here
display=":0.0"
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/')
vm_type=$(VBoxManage showvminfo $vm_uuid | grep "Session type:" | awk '{print $NF}')
case $vm_type in
"headless") ;;
"sdl") ;;
"GUI/Qt") vm_type="gui" ;;
*) vm_type="gui" ;;
esac
echo "saving state of vm $vm_name for user $user from mode $vm_type"
(VBoxManage controlvm $vm_uuid savestate && \
echo "$vm_name $vm_uuid $vm_type" >> $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/' | awk '{print $1}')
vm_type=$(echo "$line" | sed 's/.*\({.*}\)/\1/' | awk '{print $2}')
echo "resuming vm $vm_name for user $user in mode $vm_type"
DISPLAY=$display VBoxManage startvm $vm_uuid --type $vm_type &
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
Ubucompilator - это gui для компиляции и создания .deb по исходному коду. Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
Ubucompilator - это gui для компиляции и make .deb по исходному коду.
Ubucompilator - это gui для компиляции и создания .deb по исходному коду. Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
[!d4]
Ubucompilator - это gui для компиляции и make .deb по исходному коду.
[!d6]
Ubucompilator - это gui для компиляции и создания .deb по исходному коду.
Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
blockquote>DebianPackageMaker ( Ссылка для скачивания )
[!d7]
DebianPackageMaker - это простой пользовательский интерфейс / инструмент, чтобы сделать debian-пакет проще и понятнее для использования и развертывания вашего приложения linux в любом дистрибутиве на основе debian.
blockquote>
Ubucompilator - это gui для компиляции и создания .deb по исходному коду. Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
[!d4]
Ubucompilator - это gui для компиляции и make .deb по исходному коду.
Ubucompilator - это gui для компиляции и создания .deb по исходному коду. Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
[!d4]
Ubucompilator - это gui для компиляции и make .deb по исходному коду.
Ubucompilator - это gui для компиляции и создания .deb по исходному коду. Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
[!d4]
Ubucompilator - это gui для компиляции и make .deb по исходному коду.
[!d6]
Ubucompilator - это gui для компиляции и создания .deb по исходному коду.
Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
blockquote>DebianPackageMaker ( Ссылка для скачивания )
[!d7]
DebianPackageMaker - это простой пользовательский интерфейс / инструмент, чтобы сделать debian-пакет проще и понятнее для использования и развертывания вашего приложения linux в любом дистрибутиве на основе debian.
blockquote>
[!d6]
Ubucompilator - это gui для компиляции и создания .deb по исходному коду.
Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
blockquote>DebianPackageMaker ( Ссылка для скачивания )
[!d7]
DebianPackageMaker - это простой пользовательский интерфейс / инструмент, чтобы сделать debian-пакет проще и понятнее для использования и развертывания вашего приложения linux в любом дистрибутиве на основе debian.
blockquote>
[!d6]
Ubucompilator - это gui для компиляции и создания .deb по исходному коду.
Легкое программное обеспечение для ubuntu, debian, linux mint для компиляции, создания, установки и создания пакета .deb.
blockquote>DebianPackageMaker ( Ссылка для скачивания )
[!d7]
DebianPackageMaker - это простой пользовательский интерфейс / инструмент, чтобы сделать debian-пакет проще и понятнее для использования и развертывания вашего приложения linux в любом дистрибутиве на основе debian.
blockquote>