Запустите VBoxHeadless VM при запуске

Я, может казаться, не заставляю свой VM работать при запуске.

Я попробовал "приложения запуска" и обновление-rc.d без удачи.

sudo update-rc.d startvms defaults 99 10

Это создало все соответствующие символьные ссылки для различных уровней выполнения, но VM все еще не запускается.

Вот мой startvms сценарий:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          startvms
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start my VMs at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
case "$1" in
  start)
        echo "Starting"
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  stop)
        echo "Stopping $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        ;;

  restart|force-reload)
        echo "Restarting $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Что я делаю неправильно?

16
задан 15 August 2011 в 11:33

7 ответов

ЭТО - то, что наконец работало!

1) Создайте файл сценария запуска

в/etc/init.d - sudo nano /etc/init.d/StartVM.

Вставка копии следующее в файле и замене "Мое Имя VM" Вашего имени vm:

#! /bin/sh
# /etc/init.d/StartVM
#

#Edit these variables!
VMUSER=spode
VMNAME="My VM Name"

case "$1" in
  start)
    echo "Starting VirtualBox VM..."
    sudo -H -b -u $VMUSER /usr/bin/VBoxVRDP -s "$VMNAME"
    ;;
  stop)
    echo "Saving state of Virtualbox VM..."
    sudo -H -u  $VMUSER /usr/bin/VBoxManage controlvm "$VMNAME" savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

2) Дайте исполнимое разрешение сценария

с sudo chmod +x /etc/init.d/StartVM.

3) Скажите сценарию работать при запуске.

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

sudo update-rc.d StartVM defaults 99 01

27
ответ дан 23 November 2019 в 02:31

Так как Вы упоминаете, что VBoxHeadless хорошо работает, если Вы вводите его из командной строки терминала, но не запускает VM при запуске из init сценария мое предположение - то, что он ищет некоторую переменную среды, которая определяется, когда Вы выполняете оболочку в своем терминальном, но неопределенное в init среде сценария (который в основном пуст, за исключением параметров, данных на командной строке ядра).

Можно ли попытаться заменить вызовы VBoxHeadless в сценарии с этим?

env USER=username HOME=/path/to/user/homedir VBoxHeadless ...same options as before...

Здесь "имя пользователя" и путь корневого каталога должны быть изменены для соответствия тем из пользователя, которого Вы используете для запуска VM.

Если это работает, Вы могли бы хотеть использовать su-l для выполнения VBoxHeadless вместо этого огибающего взлома.

1
ответ дан 23 November 2019 в 02:31

К вашему сведению Это работает над Opensuse без nohup.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &
2
ответ дан 23 November 2019 в 02:31

Это работает хорошо с сервером Ubuntu 12.04 и VirtualBox 4.2.20.

#! /bin/sh
# /etc/init.d/StartVM
#
#Edit these variables!
VMUSER=username
case "$1" in
  start)
    echo "Starting VirtualBox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage startvm SMARTHOST --type headless
    echo "Starting VirtualBox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage startvm wxp-acceso --type headless
    echo "Starting VirtualBox VM wmmaq_edi ..."
    sudo -u $VMUSER VBoxManage startvm vmmaq_edi --type headless
    ;;
  stop)
    echo "Saving state of Virtualbox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage controlvm SMARTHOST savestate
    echo "Saving state of Virtualbox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage controlvm wxp-acceso savestate
    echo "Saving state of Virtualbox VM vmmaq_edi ..."
    sudo -u $VMUSER VBoxManage controlvm vmmaq_edi savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

И

sudo chmod +x /etc/init.d/StartVM

и

sudo update-rc.d StartVM defaults 99 01

как обозначено в предыдущем ответе.

2
ответ дан 23 November 2019 в 02:31

можно было бы также хотеть установить непосредственно порт при использовании vrdp.. прокомментируйте к главному ответу, который разделяет хорошо для использования различных сценариев для другого vms

VBoxVRDP -startvm "myVM" -vrdpport 3391 &
0
ответ дан 23 November 2019 в 02:31

Ничего себе.. Я вижу все эти решения, которые кажутся немного сложными, но это - мой третий ноутбук, на котором я закончил тем просто, что писал:

VBoxHeadless -s "Ubuntu Server"

в моем rc.local файле в/etc/каталоге и это работало вполне прилично. Выполняет виртуальную машину автоматически на перезагрузке.

0
ответ дан 23 November 2019 в 02:31

На последних версиях Virtualbox (4.2.0 вперед) Вы не должны к сценарию самокрутки автоматически запускать VM, но действительно требуется некоторая конфигурация. Посмотрите раздел 9.24 из Руководства Virtualbox, "Запускающего виртуальные машины во время начальной загрузки системы"

К сожалению, руководство только дает инструкции по схеме и не было обновлено в возрастах. Я нашел это сообщение на virtualbox форумах с некоторой дополнительной деталью.

Вы могли просто поместить строку в rc.local для запуска сервера, но если Вы хотите сделать это, "offical" путь продолжал читать..

Добавьте эти строки к/etc/default/virtualbox:

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxautostart.cfg

Отредактируйте/etc/vbox/vboxautostart.cfg (этот пример отклоняет разрешение автоматического запуска для всех пользователей кроме пользователя "Bob":

# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny

# Bob is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
bob = {
    allow = true
    startup_delay = 10
}

# Alice is not allowed to start virtual machines, useful to exclude certain users
# if the default policy is set to allow.
alice = {
    allow = false
}

Добавьте vboxusers группу к/etc/vbox и липкому биту:

# chgrp vboxusers /etc/vbox
# chmod 1775 /etc/vbox

Добавьте всех пользователей, которые будут использовать virtualbox для "vboxusers" группы, например:

# adduser Bob vboxusers

Каждый пользователь, который хочет включить автоматический запуск для отдельных машин, должен установить путь к каталогу базы данных автоматического запуска с:

$ VBoxManage setproperty autostartdbpath /etc/vbox

Пользователи могут затем установить VMs, чтобы автоматически запустить и настроить, как они остановятся (например, savestate, acpishutdown) с:

$ VBoxManage modifyvm <vmname> --autostart-enabled on
$ VBoxManage modifyvm <vmname> --autostop-type acpishutdown

Вышеупомянутое работало на меня с Virtualbox 5, установленным из репозитория virtualbox.org.

1
ответ дан 23 November 2019 в 02:31

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

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