Я, может казаться, не заставляю свой 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
Что я делаю неправильно?
ЭТО - то, что наконец работало!
в/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
с sudo chmod +x /etc/init.d/StartVM
.
скажите сценарию быть первыми для завершения работу и последнее для запущений.
sudo update-rc.d StartVM defaults 99 01
Так как Вы упоминаете, что VBoxHeadless хорошо работает, если Вы вводите его из командной строки терминала, но не запускает VM при запуске из init сценария мое предположение - то, что он ищет некоторую переменную среды, которая определяется, когда Вы выполняете оболочку в своем терминальном, но неопределенное в init среде сценария (который в основном пуст, за исключением параметров, данных на командной строке ядра).
Можно ли попытаться заменить вызовы VBoxHeadless в сценарии с этим?
env USER=username HOME=/path/to/user/homedir VBoxHeadless ...same options as before...
Здесь "имя пользователя" и путь корневого каталога должны быть изменены для соответствия тем из пользователя, которого Вы используете для запуска VM.
Если это работает, Вы могли бы хотеть использовать su-l для выполнения VBoxHeadless вместо этого огибающего взлома.
К вашему сведению Это работает над Opensuse без nohup.
VBoxHeadless -s "OpenSuSE 11.4 64bit" &
Это работает хорошо с сервером 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
как обозначено в предыдущем ответе.
можно было бы также хотеть установить непосредственно порт при использовании vrdp.. прокомментируйте к главному ответу, который разделяет хорошо для использования различных сценариев для другого vms
VBoxVRDP -startvm "myVM" -vrdpport 3391 &
Ничего себе.. Я вижу все эти решения, которые кажутся немного сложными, но это - мой третий ноутбук, на котором я закончил тем просто, что писал:
VBoxHeadless -s "Ubuntu Server"
в моем rc.local файле в/etc/каталоге и это работало вполне прилично. Выполняет виртуальную машину автоматически на перезагрузке.
На последних версиях 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.