В моем Ubuntu12.04 есть много виртуальных машинных машин, каждый раз, когда я завершаю или перезагружаюсь, я должен запускать их один за другим. Р>
Я хочу помочь при написании сценария для автоматического автозапуска машин VBox при загрузке.
В моем Ubuntu12.04 есть много виртуальных машинных машин, каждый раз, когда я завершаю или перезагружаюсь, я должен запускать их один за другим. Р>
Я хочу помочь при написании сценария для автоматического автозапуска машин VBox при загрузке.
Вы можете использовать услугу автозапуска VirtualBox. Хороший учебник, описывающий, как это сделать, размещен на «Жизнеспособность» Admin ".
Следующие шаги адаптированы из связанного сообщения в блоге:
Сначала вам нужно создать файл /etc/default/virtualbox
и добавить несколько переменных.
VBOXAUTOSTART_DB , который содержит абсолютный путь к каталогу базы данных автозапуска и VBOXAUTOSTART_CONFIG , который содержит расположение настроек конфигурации автозапуска. Файл должен выглядеть примерно так:
# virtualbox defaults file
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
Теперь нам нужно создать файл /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 autostart
myuserid = {
allow = true
}
Примечание. Если имя файла vbox.cfg
не работает выше, попробуйте присвоить ему имя autostart.cfg
.
Если вы единственный пользователь, вы можете просто добавить строку default_policy = allow
в файл vbox.cfg
.
Установите разрешения для каталога в группу vboxuser и убедитесь, что пользователи могут писать в каталог, а также липкий бит.
sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox
Добавьте каждого из пользователей в группу vboxusers
. Р>
sudo usermod -a -G vboxusers USERNAME
(замените USERNAME
на имя пользователя)
ПРИМЕЧАНИЕ : Если вы изменили групповые разрешения для текущего пользователя, снова войдите и снова войдите, чтобы обновить разрешения. (credit @ kR105)
Каждый пользователь, который хочет включить автозапуск для отдельных машин, должен установить путь к каталогу базы данных автозапуска с помощью
VBoxManage setproperty autostartdbpath /etc/vbox
и включить автозапуск для отдельной виртуальной машины с помощью
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
Это создаст файл myuserid.start
в каталоге /etc/vbox
Теперь перезапустите службу vboxautostart, чтобы прочитать изменения.
sudo service vboxautostart-service restart
Перезагрузите свою систему, и ваша виртуальная машина должна начать
У меня были подобные несчастные инциденты, которые пытались выполнить эту операцию на ванильном LTS. Р>
~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.1 LTS, Trusty Tahr"
В этой версии ключевой файл /etc/init.d/vboxautostart-service не был установлен.
Насколько я знаю, все VitualBox и требования были введены apt-get, поэтому я не могу сказать, почему файл vboxautostart-service также не был предоставлен. Но чтобы справиться с этим, это мое обновление к сообщению kdmurray.
1) / etc / default / virtualbox файл существовал для меня. Поэтому необходимо добавить vars:
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
2) Необходимо создать /etc/vbox/autostart.cfg , как указано OP.
6b) Необходимо получить скрипт vboxautostart-service и сделать его выполнимым.
cd /etc/init.d/
sudo wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-service
sudo chmod +x vboxautostart-service
6c) Оповестите контроллер rc.d, но я использовал 24 как время начала. Поставив всего 20, он не запустился. Возможно, он работал даже до того, как виртуальный бокс работал.
sudo update-rc.d vboxautostart-service defaults 24 24
Затем перезагрузка запустила виртуальную машину. Р>
После многих неудачных попыток получить процедуры из из kdmurray выше, чтобы работать, без успеха я в конечном итоге нашел метод, который работал просто.
Сначала мой Linux-хост (Mint 17) был настроен во время загрузки, чтобы автоматически войти в мою основную учетную запись.
Во-вторых, я использовал средства в VirtualBox GUI (v4.3.12) для создания ярлыка для каждой виртуальной машины на рабочем столе. {щелкните правой кнопкой мыши виртуальную машину в левом столбце & amp; выберите «Создать ярлык на рабочем столе»}
Далее: я уже обнаружил, что воспитание Меню- > Центр управления - > Запуск приложений - > добавлять и добавление ярлыков на рабочем столе дало файлы, которые не работали, я заметил из другого ответа на этой странице, что расположение стартапов - /home/USERNAME/.config/autostart поэтому я щелкнул правой кнопкой мыши по каждой из ярлыков виртуальных машин на рабочем столе, а затем вложил их в эту папку, перезаписав предыдущие файлы дерьма. Теперь они разработали «красивые» значки VirtualBox.
И, конечно же, при перезапуске главного компьютера 3 виртуальных машины начали автоматически.
:-)
Билл Уильямс
PS: увы, у меня все еще есть что-то, потому что часто виртуальные машины не запускаются при загрузке, вместо этого они генерируют диалоговое окно с ошибкой, в котором говорится, что они заблокированы, даже если я сказал им закрыть хост был перезагружен.
Вы можете использовать vboxmanage startvm "my virtual machine" --type=headless|gui|sdl
(один из них). Используйте «без головы», если это серверы, к которым вы подключаетесь другими способами, чем использование gui. Р>
Чтобы запустить эти команды в нужное время во время загрузки, вы захотите прочитать Upstart. Р>
В дополнение к хорошему описанию службы vboxautostart выше вы можете сделать
VBoxManage modifyvm server --autostop-type savestate
, чтобы автоматически остановить гостя при завершении работы. Для Ubuntu 14.04 мне пришлось добавить sleep 30 в раздел остановки vboxautostart-сервиса, чтобы он дождался, пока гость не будет полностью сохранен. Р>
Я нашел более простой способ в Ubuntu 16.04 с помощью VBox 5.1.34. Р>
В VBox щелкните правой кнопкой мыши текущую или свободную виртуальную машину в списке, выберите «Создать ярлык на рабочем столе». После того, как вы увидите значок на рабочем столе, откройте любой инструмент, который позволит вам увидеть базовую команду, созданную VBox (в моей системе я нажимаю правой кнопкой мыши и выбираю «свойства»). Скопируйте это в буфер обмена.
Откройте программу для обновления «запущенных приложений» и создайте новое приложение, которое запускается во время загрузки, вставляя команду, скопированную из ссылки на рабочий стол, созданной VirtualBox.
Это можно сделать с помощью интерфейса управления виртуальными машинами VirtualBox. Просто запустите следующий скрипт при запуске.
#!/bin/bash
VMUSER="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
;;
esac
exit 0
Там есть хороший учебник для получения дополнительной информации.
Addon для ответа @kdmurray.
Если вы получите сообщение об ошибке:
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
Чтобы решить эту проблему, мне пришлось вручную создавать файлы «имя пользователя» .start и «имя пользователя» .stop:
sudo touch "username".start
sudo touch "username".stop
И измените владельца на:
sudo chown "username" "username".start
sudo chown "username" "username".stop
Перекладка:
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
затем перезапустите службу:
sudo service vboxautostart-service stop
sudo service vboxautostart-service start
Проверить все в порядке:
top
, и вы должны увидеть процесс «VBox ...» в списке, если виртуальная машина работает
Чтобы запустить виртуальную машину при входе в нашу сессию, мы можем определить файл .desktop:
Когда этот файл был скопирован или перенесен в наш каталог автозапуска, он будет выполнен после входа в систему:
Запуск виртуальной ячейки в пространстве пользователя может помочь избежать нежелательных побочных эффектов при запуске их во время загрузки (например, виртуальная машина работает от имени root, время загрузки увеличивается невероятно, ...).
Вы также можете получить описание диспетчера сеансов gnome. Менеджер сеансов Gnome
Он находится в центре программного обеспечения или вы можете просто перейти к терминалу и ввести
sudo apt-get install gnome-session-common
Затем вы можете создать небольшой скрипт для запуска и использовать диспетчер сеансов gnome для его запуска. Вот небольшой пример скрипта, который поможет вам ...
#!/bin/sh
#vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (one of those)
# So if your username is user, and virtualbox put your VMs in the default location, and you want headless...
vboxmanage startvm '/home/user/VirtualBox VMs/myvmname' --type=gui
Вот как я запускаю свой Centos (имя моей виртуальной машины), когда моя хост-машина перезагружается. Я использую crontab для этой работы. Вот моя запись crontab:
@reboot VBoxHeadless --startvm "Centos" &
Для сервера Ubuntu 16.04.1 LTS я решил это, выполнив:
sudo systemctl enable rc-local.service
/etc/rc.local
su virtual_box_user -c "VBoxHeadless -startvm 'virtual_machine_name' &"
Обратите внимание, что virtual_box_user - это тот, который может видеть виртуальную машину (которую вы готовы запустить):
VBoxManage list vms
Пример:
$ VBoxManage list vms
"virtualbox1" {2eb3ba3b-bcb3-4515-95d9-d33bce214c28}
"virtualbox2" {62365634-f2q4-40c0-b4ed-22f4ab84441a}
Модифицированный /etc/rc.local
должен выглядеть следующим образом:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
su bob -c "VBoxManage startvm 'virtualbox1' --type headless &"
su bob -c "VBoxManage startvm 'virtualbox2' --type headless &"
exit 0
Если вы не выбрали правильного владельца виртуального бокса, вы должны увидеть ошибку, набрав команду:
sudo systemctl status rc-local.service
Надеюсь, это поможет