Вход в экранный фон, отличный от рабочего стола

@ Lutz L. Сначала спасибо за сценарий. У меня такая же проблема на Xubuntu 14.04 с VB 4.3.10, а Xubuntu 12.04 или Windwos XP Guest работает в спящем режиме.

С первой попытки скрипт работает идеально. Но в следующий раз, когда виртуальные машины автоматически не возобновятся, когда основная система вернется из состояния гибернации.

Это сообщение, которое я нашел в файле pm-suspend.log:

[d3 ] Запуск крюка /etc/pm/sleep.d/05_virtualbox thaw hibernate: отправить резюме в VM'sVBoxManage: ошибка: виртуальная машина «Xubuntu12» неожиданно прекратилась во время запуска с кодом выхода 1 VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005) ), компонент Machine, интерфейс IMachine Ожидание VM «Xubuntu12» для включения ...

Я могу вручную возобновить Гостей, это работает без проблем, но это не так удобно.

PS: Проблема известна уже давно, как вы можете видеть здесь: https://www.virtualbox.org/ticket/7716

EDIT: Существует аналогичный сценарий:

#!/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

(Сохраните этот сценарий как /etc/pm/sleep.d/02-VirtualBox и убедитесь, что он выполним)

Источник: https: // www .virtualbox.org / ticket / 7716

К сожалению, та же проблема с этим sc НИИИТ ...

1
задан 6 March 2014 в 02:48

0 ответов

Другие вопросы по тегам:

Похожие вопросы: