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

Еще один вариант заключается в истечении срока действия пароля с помощью passwd:

sudo passwd -e username
16
задан 15 August 2011 в 23:33

56 ответов

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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. [!d7 ]

3) Скажите сценарию, чтобы он запускался при запуске.

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

sudo update-rc.d StartVM defaults 99 01

27
ответ дан 25 May 2018 в 19:19
  • 1
    не добавляет ли VRDP дополнительные накладные расходы, будет ли VBoxManage startvm --type headless лучше? – mojzis 8 September 2012 в 02:09
  • 2
    В моем конкретном случае я хотел, чтобы виртуальная машина закрывалась изящно, а не сохраняла состояние. замена "сбережения" с "acpipowerbutton" отлично работал для этого. – muzzamo 23 May 2015 в 09:59

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 25 July 2018 в 21:27

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 31 July 2018 в 10:39

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 31 July 2018 в 11:43

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 2 August 2018 в 03:06

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 4 August 2018 в 18:56

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 6 August 2018 в 03:18

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

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

в файле /etc/init.d - sudo nano /etc/init.d/StartVM.

Скопировать Вставьте следующее в файл и замените «My VM Name» для вашего имени 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
ответ дан 7 August 2018 в 21:00

FYI, Это работает на Opensuse без nohup.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &
2
ответ дан 25 May 2018 в 19:19
  • 1
    Так что я использую тот же самый скрипт, который у меня есть, за исключением того, что он отключен nohup? – capdragon 7 November 2011 в 23:21
  • 2
    Избавилось от хохупа, все равно не работает. Я должен делать что-то еще неправильно. Вы уверены, что используете тот же скрипт? Измените свой ответ и включите свой скрипт, чтобы я мог попробовать. – capdragon 8 November 2011 в 04:19

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

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

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

Здесь «имя пользователя» и путь к домашнему каталогу должны быть изменены в соответствии с тем, который вы используете для запуска виртуальной машины.

Если это работает, вы можете захотеть используйте VBoxHeadless для запуска VBoxHeadless вместо этого env hack.

1
ответ дан 25 May 2018 в 19:19
  • 1
    +1 для su -l - это хороший момент! – Takkat 16 August 2011 в 01:14
  • 2
    нет ... все еще не работает. Я решил просто использовать работу cron – capdragon 16 August 2011 в 01:26

Это нормально работает с сервером 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

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

1
ответ дан 25 May 2018 в 19:19
  • 1
    Это отлично работает для меня! За исключением Vbox 5.0, его sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & amp; поэтому startvm имеет 2 "-" и вы просто предъявляете иск VBoxHeadless вместо --type без головы. Также стоит отметить, что, хотя я уверен, что мы находимся на сервере, без " & amp; " в конце сервер не загружается в login login, но все службы работают как SSH, RDP и т. д. и т. д., только что я заметил. Это оставляет сервер застрял при загрузке logon verbose information! – FreeSoftwareServers 24 October 2015 в 05:23

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

VBoxVRDP -startvm "myVM" -vrdpport 3391 &
0
ответ дан 25 May 2018 в 19:19

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

VBoxHeadless -s "Ubuntu Server"

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

0
ответ дан 25 May 2018 в 19:19

В последних версиях Virtualbox (4.2.0) вам не нужно запускать собственный скрипт для автозапуска виртуальной машины, но он требует некоторой конфигурации. См. Раздел 9.24 руководства Virtualbox «Запуск виртуальных машин во время загрузки системы»

К сожалению, руководство содержит только краткие инструкции и не обновлялось в возрасте. Я нашел Запуск виртуальных машин во время загрузки системы с некоторыми дополнительными деталями.

Вы можете просто поместить строку в rc.local, чтобы запустить ваш сервер, но если вы хотите сделать это, «официальный» способ читается ..

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

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

Редактировать /etc/vbox/vboxautostart.cfg (этот пример запрещает авторизацию автозапуска для всех пользователей, кроме пользователя «Боб»:

# 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 group в / etc / vbox и липкий бит:

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

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

# adduser Bob vboxusers

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

$ VBoxManage setproperty autostartdbpath /etc/vbox

Пользователи могут затем настроить виртуальные машины на автозапуск и настроить способ их остановки (например, savestate, acpishutdown) с помощью:

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

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

0
ответ дан 25 May 2018 в 19:19

FYI, Это работает на Opensuse без nohup.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &
2
ответ дан 25 July 2018 в 21:27
  • 1
    Так что я использую тот же самый скрипт, который у меня есть, за исключением того, что он отключен nohup? – capdragon 7 November 2011 в 23:21
  • 2
    Избавилось от хохупа, все равно не работает. Я должен делать что-то еще неправильно. Вы уверены, что используете тот же скрипт? Измените свой ответ и включите свой скрипт, чтобы я мог попробовать. – capdragon 8 November 2011 в 04:19

Это нормально работает с сервером 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

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

1
ответ дан 25 July 2018 в 21:27
  • 1
    Это отлично работает для меня! За исключением Vbox 5.0, его sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & amp; поэтому startvm имеет 2 "-" и вы просто предъявляете иск VBoxHeadless вместо --type без головы. Также стоит отметить, что, хотя я уверен, что мы находимся на сервере, без & quot; & amp; & quot; в конце сервер не загружается в login login, но все службы работают как SSH, RDP и т. д. и т. д., только что я заметил. Это оставляет сервер застрял при загрузке logon verbose information! – FreeSoftwareServers 24 October 2015 в 05:23

В последних версиях Virtualbox (4.2.0) вам не нужно запускать собственный скрипт для автозапуска виртуальной машины, но он требует некоторой конфигурации. См. Раздел 9.24 руководства Virtualbox «Запуск виртуальных машин во время загрузки системы»

К сожалению, руководство содержит только краткие инструкции и не обновлялось в возрасте. Я нашел Запуск виртуальных машин во время загрузки системы с некоторыми дополнительными деталями.

Вы можете просто поместить строку в rc.local, чтобы запустить ваш сервер, но если вы хотите сделать это, «официальный» способ читается ..

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

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

Редактировать /etc/vbox/vboxautostart.cfg (этот пример запрещает авторизацию автозапуска для всех пользователей, кроме пользователя «Боб»:

# 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 group в / etc / vbox и липкий бит:

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

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

# adduser Bob vboxusers

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

$ VBoxManage setproperty autostartdbpath /etc/vbox

Пользователи могут затем настроить виртуальные машины на автозапуск и настроить способ их остановки (например, savestate, acpishutdown) с помощью:

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

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

0
ответ дан 25 July 2018 в 21:27

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

VBoxHeadless -s "Ubuntu Server"

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

0
ответ дан 25 July 2018 в 21:27

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

VBoxVRDP -startvm "myVM" -vrdpport 3391 &
0
ответ дан 25 July 2018 в 21:27

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

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

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

Здесь «имя пользователя» и путь к домашнему каталогу должны быть изменены в соответствии с тем, который вы используете для запуска виртуальной машины.

Если это работает, вы можете захотеть используйте VBoxHeadless для запуска VBoxHeadless вместо этого env hack.

1
ответ дан 25 July 2018 в 21:27
  • 1
    +1 для su -l - это хороший момент! – Takkat 16 August 2011 в 01:14
  • 2
    нет ... все еще не работает. Я решил просто использовать работу cron – capdragon 16 August 2011 в 01:26

FYI, Это работает на Opensuse без nohup.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &
2
ответ дан 31 July 2018 в 10:39
  • 1
    Так что я использую тот же самый скрипт, который у меня есть, за исключением того, что он отключен nohup? – capdragon 7 November 2011 в 23:21
  • 2
    Избавилось от хохупа, все равно не работает. Я должен делать что-то еще неправильно. Вы уверены, что используете тот же скрипт? Измените свой ответ и включите свой скрипт, чтобы я мог попробовать. – capdragon 8 November 2011 в 04:19

Это нормально работает с сервером 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

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

1
ответ дан 31 July 2018 в 10:39
  • 1
    Это отлично работает для меня! За исключением Vbox 5.0, его sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & amp; поэтому startvm имеет 2 "-" и вы просто предъявляете иск VBoxHeadless вместо --type без головы. Также стоит отметить, что, хотя я уверен, что мы находимся на сервере, без & quot; & amp; & quot; в конце сервер не загружается в login login, но все службы работают как SSH, RDP и т. д. и т. д., только что я заметил. Это оставляет сервер застрял при загрузке logon verbose information! – FreeSoftwareServers 24 October 2015 в 05:23

В последних версиях Virtualbox (4.2.0) вам не нужно запускать собственный скрипт для автозапуска виртуальной машины, но он требует некоторой конфигурации. См. Раздел 9.24 руководства Virtualbox «Запуск виртуальных машин во время загрузки системы»

К сожалению, руководство содержит только краткие инструкции и не обновлялось в возрасте. Я нашел Запуск виртуальных машин во время загрузки системы с некоторыми дополнительными деталями.

Вы можете просто поместить строку в rc.local, чтобы запустить ваш сервер, но если вы хотите сделать это, «официальный» способ читается ..

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

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

Редактировать /etc/vbox/vboxautostart.cfg (этот пример запрещает авторизацию автозапуска для всех пользователей, кроме пользователя «Боб»:

# 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 group в / etc / vbox и липкий бит:

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

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

# adduser Bob vboxusers

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

$ VBoxManage setproperty autostartdbpath /etc/vbox

Пользователи могут затем настроить виртуальные машины на автозапуск и настроить способ их остановки (например, savestate, acpishutdown) с помощью:

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

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

0
ответ дан 31 July 2018 в 10:39

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

VBoxHeadless -s "Ubuntu Server"

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

0
ответ дан 31 July 2018 в 10:39

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

VBoxVRDP -startvm "myVM" -vrdpport 3391 &
0
ответ дан 31 July 2018 в 10:39

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

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

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

Здесь «имя пользователя» и путь к домашнему каталогу должны быть изменены в соответствии с тем, который вы используете для запуска виртуальной машины.

Если это работает, вы можете захотеть используйте VBoxHeadless для запуска VBoxHeadless вместо этого env hack.

1
ответ дан 31 July 2018 в 10:39
  • 1
    +1 для su -l - это хороший момент! – Takkat 16 August 2011 в 01:14
  • 2
    нет ... все еще не работает. Я решил просто использовать работу cron – capdragon 16 August 2011 в 01:26

FYI, Это работает на Opensuse без nohup.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &
2
ответ дан 31 July 2018 в 11:43
  • 1
    Так что я использую тот же самый скрипт, который у меня есть, за исключением того, что он отключен nohup? – capdragon 7 November 2011 в 23:21
  • 2
    Избавилось от хохупа, все равно не работает. Я должен делать что-то еще неправильно. Вы уверены, что используете тот же скрипт? Измените свой ответ и включите свой скрипт, чтобы я мог попробовать. – capdragon 8 November 2011 в 04:19

Это нормально работает с сервером 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

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

1
ответ дан 31 July 2018 в 11:43
  • 1
    Это отлично работает для меня! За исключением Vbox 5.0, его sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & amp; поэтому startvm имеет 2 "-" и вы просто предъявляете иск VBoxHeadless вместо --type без головы. Также стоит отметить, что, хотя я уверен, что мы находимся на сервере, без & quot; & amp; & quot; в конце сервер не загружается в login login, но все службы работают как SSH, RDP и т. д. и т. д., только что я заметил. Это оставляет сервер застрял при загрузке logon verbose information! – FreeSoftwareServers 24 October 2015 в 05:23

В последних версиях Virtualbox (4.2.0) вам не нужно запускать собственный скрипт для автозапуска виртуальной машины, но он требует некоторой конфигурации. См. Раздел 9.24 руководства Virtualbox «Запуск виртуальных машин во время загрузки системы»

К сожалению, руководство содержит только краткие инструкции и не обновлялось в возрасте. Я нашел Запуск виртуальных машин во время загрузки системы с некоторыми дополнительными деталями.

Вы можете просто поместить строку в rc.local, чтобы запустить ваш сервер, но если вы хотите сделать это, «официальный» способ читается ..

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

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

Редактировать /etc/vbox/vboxautostart.cfg (этот пример запрещает авторизацию автозапуска для всех пользователей, кроме пользователя «Боб»:

# 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 group в / etc / vbox и липкий бит:

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

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

# adduser Bob vboxusers

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

$ VBoxManage setproperty autostartdbpath /etc/vbox

Пользователи могут затем настроить виртуальные машины на автозапуск и настроить способ их остановки (например, savestate, acpishutdown) с помощью:

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

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

0
ответ дан 31 July 2018 в 11:43

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

VBoxHeadless -s "Ubuntu Server"

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

0
ответ дан 31 July 2018 в 11:43

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

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