Как автоматически запускать виртуальные боксовые машины при загрузке?

У меня есть много виртуальных машин в моем Ubuntu12.04, каждый раз, когда я выключаюсь или перезагружаюсь, мне приходится запускать их одну за другой.

Мне нужна помощь в написании скрипта для автоматического автозапуска компьютеров VBox при загрузке.

Вы можете воспользоваться сервисом автозапуска VirtualBox. Хороший учебник, описывающий, как это сделать, размещен на Блог "Жизнь гика-администратора".

Следующие шаги адаптированы из связанного сообщения в блоге:

  1. Сначала вам нужно создать файл /etc/default/virtualbox и добавьте несколько переменных.

    VBOXAUTOSTART_DB который содержит абсолютный путь к каталогу базы данных автозапуска и
    VBOXAUTOSTART_CONFIG который содержит расположение параметров конфигурации автозапуска. Файл должен выглядеть примерно так:

    # virtualbox defaults fileVBOXAUTOSTART_DB=/etc/vboxVBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
  2. Теперь нам нужно создать /etc/vbox/vbox.cfg файл и добавить

    # Default policy is to deny starting a VM, the other option is "allow".default_policy = deny# Create an entry for each user allowed to run autostartmyuserid = {allow = true}

    Примечание: Если имя файла vbox.cfg не работает выше, попробуйте назвать его autostart.cfg.

    Если вы единственный пользователь, вы можете просто добавить строку default_policy = allow к vbox.cfg файл.

  3. Установите права доступа к каталогу для группы vboxuser и убедитесь, что пользователи могут выполнять запись в каталог, а также в sticky bit.

    sudo chgrp vboxusers /etc/vboxsudo chmod 1775 /etc/vbox
  4. Добавьте каждого из пользователей в vboxusers группа.

    sudo usermod -a -G vboxusers USERNAME

    (заменить USERNAME с именем пользователя)

записка: Если вы изменили групповые разрешения для текущего пользователя, выйдите из системы и снова войдите в систему, чтобы обновить разрешения. (кредит @kR105)

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

    VBoxManage setproperty autostartdbpath /etc/vbox

    и включите автозапуск для отдельной виртуальной машины с

    VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

    Это создаст myuserid.start файл в /etc/vbox каталог

  2. Теперь перезапустите службу vboxautostart, чтобы прочитать изменения.

    sudo service vboxautostart-service restart
  3. Перезагрузите систему, и ваша виртуальная машина должна запуститься

У меня были подобные неприятные инциденты, когда я пытался выполнить эту операцию на vanilla LTS.

~$ cat /etc/os-release NAME="Ubuntu" VERSION="14.04.1 LTS, Trusty Tahr" 

В этой версии ключевой файл /etc/init.d/vboxautostart-сервис не был установлен.

Насколько я знаю, все VitualBox и требования были введены apt-get, поэтому я не могу сказать, почему файл 'vboxautostart-service' также не был предоставлен. Но чтобы справиться с этим, вот мое обновление к сообщению kdmurray.

1) /etc/default/virtualbox файл существовал для меня. Поэтому необходимо добавить переменные:

VBOXAUTOSTART_DB=/etc/vboxVBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg

2) Необходимо создать /etc/vbox/автозапуск.cfg как указано в OP.

6b) Need to get a vboxautostart-service script and make it executable.

cd /etc/init.d/sudo wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-servicesudo chmod +x vboxautostart-service

6c) Предупредите контроллер rc.d, но я использовал 24 в качестве времени начала. Поставил всего 20, и он не запустился. Возможно, он запустился еще до того, как заработал virtualbox.

sudo update-rc.d vboxautostart-service defaults 24 24

Затем перезагрузка правильно запустила виртуальную машину.

Вы можете использовать vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (один из них). Используйте "безголовый", если это серверы, к которым вы подключаетесь другими способами, кроме использования графического интерфейса.

Чтобы действительно запустить эти команды в нужное время во время загрузки, вам нужно прочитать о Upstart.

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

Сначала мой Linux-хост (Mint 17) был настроен во время загрузки для автоматического входа в мою основную учетную запись.

Во-вторых, я использовал возможности графического интерфейса VirtualBox (v4.3.12), чтобы создать ярлык для каждой виртуальной машины на рабочем столе. {щелкните правой кнопкой мыши виртуальную машину в левом столбце и выберите "Создать ярлык на рабочем столе"}

>>>Далее: Я уже обнаружил, что вызов меню-Центр управления - Приложения для запуска - Добавить и добавление ярлыков на рабочем столе дали файлы, которые не работали, я заметил из другого ответа на этой странице, что расположение startups - / home / USERNAME /.config / автозапуск, поэтому я щелкнул правой кнопкой мыши на каждом из ярлыков виртуальной машины на рабочем столе, а затем вставил их в эту папку, перезаписав более ранние файлы дерьма. Теперь они разработали "красивые" иконки VirtualBox.

И, конечно же, при перезагрузке главного компьютера 3 виртуальные машины запустились автоматически.

:-)

Билл Уильямс

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

В дополнение к хорошему описанию vboxautostart-service, приведенному выше, вы можете сделать

VBoxManage modifyvm server --autostop-type savestate

чтобы автоматически остановить гостя при завершении работы. Для Ubuntu 14.04 мне пришлось добавить сон 30 в раздел vboxautostart-service stop, чтобы он ждал, пока гость не будет полностью сохранен.

Я нашел более простой способ в Ubuntu 16.04 под управлением VBox 5.1.34.

Находясь в VBox, щелкните правой кнопкой мыши на запущенной или бездействующей виртуальной машине в списке, выберите "Создать ярлык на рабочем столе". Как только вы увидите значок на своем рабочем столе, откройте его с помощью любого инструмента, который позволит вам увидеть созданную базовую команду VBox (в моей системе я щелкаю правой кнопкой мыши и выбираю "свойства"). Скопируйте это в буфер обмена.

Откройте программу для обновления "startup applications" и создайте новое приложение, которое запускается во время загрузки, вставив команду, которую вы скопировали из ссылки на рабочий стол, созданной VirtualBox.

Чтобы запустить виртуальную машину при входе в наш сеанс, мы можем захотеть определить файл .desktop:

Когда этот файл был скопирован или перемещен в наш каталог автозапуска, он будет выполнен после того, как мы войдем в систему:

Запуск Virtual Box в пользовательском пространстве может помочь избежать нежелательных побочных эффектов их запуска во время загрузки (например, виртуальная машина запускается от имени root, время загрузки невероятно увеличивается, ...).

Дополнение к ответу @kdmurray.

Если вы получите сообщение об ошибке на:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

Чтобы решить эту проблему, мне пришлось вручную создать файлы "username".start и "username".stop с помощью:

sudo touch "username".startsudo touch "username".stop

И сменить владельца с:

sudo chown "username" "username".startsudo chown "username" "username".stop

повторный запуск:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

затем перезапустите службу:

sudo service vboxautostart-service stopsudo service vboxautostart-service start

проверьте, все ли в порядке с:

top

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

Это можно сделать с помощью интерфейса управления командной строкой VirtualBox.Просто запустите следующий скрипт при запуске.

#!/bin/bashVMUSER="vmuser"VMNAME="RedHatVM" #also you can put UUID in this variable (VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")case "$1" in    start)        echo "===Starting VirtualBox VM==="        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless        ;;    stop)        echo "===Saving state of Virtualbox VM==="    sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate    sleep 20        ;;    shutdown)        echo "===Shutting down Virtualbox VM==="        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton    sleep 20        ;;    reset)        echo "===Resetting VirtualBox VM==="         sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset        ;;    status)         echo -n "VMNAME->";sudo -H -u $VMUSER VBoxManage showvminfo "$VMNAME" --machinereadable |grep "VMState="| cut -d "=" -f2        ;;        echo "Usage: /etc/init.d/VMscript {start|stop|shutdown|reset|status}"        exit 1        ;;    esacexit 0

Там это хороший учебник для получения дополнительной информации.

Вот как я запускаю свой Centos (имя моей виртуальной машины), когда моя хост-машина перезагружается. Я использую crontab для этой работы. Вот моя запись в crontab:

@reboot VBoxHeadless --startvm "Centos" &

@SergiyKolodyazhnyy Этот вопрос ни в коем случае не является дубликатом этого.