Автозапуск виртуальной машины VirtualBox
Если вы запускаете виртуальные машины VirtualBox на сервере, то скорее всего, захотите, чтобы они оставались запущенными даже после неожиданной перезагрузки сервера.
В этой небольшой статье мы рассмотрим как настроить автозапуск виртуальной машины VirtualBox с помощью системы инициализации systemd, которая сейчас используется повсеместно.
Автозапуск виртуальной машины в VirtualBox
Давайте создадим файл юнита, который будет управлять автозагрузкой. Для этого выполните такую команду:
sudo systemctl edit vbox@.service —full —force
В открывшемся редакторе вставьте такой текст:
Description=Virtual Box Guest %I
After=network.target vboxdrv.service
Before=runlevel2.target shutdown.target
[Service]
User=root
Group=root
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm %i —type headless
ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton
[Install]
WantedBy=multi-user.target
С помощью этого юнита мы и будем делать автозапуск virtualbox linux. В этом примере я запускаю виртуальную машину от имени пользователя root, но вам нужно запускать её от того пользователя, к которому добавлены виртуальные машины и от имени которого VirtualBox обычно работает.
Сохраните изменения в файле и выполните следующую команду, чтобы система инициализации перечитала конфигурационные файлы с диска:
В нашем юнит файле мы предусмотрели возможность использования параметра, в котором передается имя или UUID идентификатор виртуальной машины. Если в имени машины есть пробел, то лучше использовать UUID, а иначе можно и имя.
Смотрим список виртуальных машин:
Теперь давайте запустим машину Ubutnu1804 с UUID ed0ce7dd-0ddb-46bf-913c-876671c4d1f1 с помощью systemd:
sudo systemctl start vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Если во время запуска произошла ошибка, вы можете посмотреть её выполнив:
В данном случае машина уже была запущена. Я остановил её и запустил ещё раз с уже помощью systemd. Смотрим статус виртуальной машины:
sudo systemctl status vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Если всё хорошо, то всё, что нам осталось, это добавить этот сервис в автозагрузку:
sudo systemctl enable vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Выводы
В этой статье мы разобрались как делается автозагрузка виртуальной машины virtualbox. Как видите, всё очень просто и удобно. Теперь ваши виртуальные машины будут всегда запущены.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Похожие записи
Оцените статью
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
9 комментариев к “Автозапуск виртуальной машины VirtualBox”
добрый день сделал все как у вас, но при перезагрузки не запускается что может быть не подскажите? Ответить
Почему, после того, как я перенес систему с HDD на SSD виртуальная машина перестала автоматически запускаться? Ответить
Спасибо за статью, очень пригодилось. Ещё нашёл в интернетах, что в ExecStop можно вместо acpipowerbutton указать savestate
В таком случае вместо выключения виртуальной машины, будет выполнено сохранение текущего состояния. Ответить
Доброго времени суток. У меня вот такая ошибка (No files found for vbox@.service.)
Как быть ? Ответить
Все уже придумано ораклом, перевод выдержки из официального мануала:
9.21. Запуск виртуальных машин во время загрузки системы Вы можете запускать виртуальные машины автоматически во время загрузки системы на платформах Linux, Oracle Solaris и Mac OS X для всех пользователей.
9.21.1. Linux: запуск службы автозапуска с помощью init В Linux служба автозапуска активируется установкой двух переменных в /etc/default/virtualbox. Первый — это VBOXAUTOSTART_DB, который содержит абсолютный путь к каталогу автозапуска базы данных. Каталог должен иметь доступ на запись для каждого пользователя, который должен иметь возможность автоматически запускать виртуальные машины. Кроме того, в каталоге должен быть установлен липкий бит. Вторая переменная — это VBOXAUTOSTART_CONFIG, которая указывает службе на файл конфигурации автозапуска, который используется во время загрузки, чтобы определить, разрешить ли отдельным пользователям запускать виртуальную машину автоматически и настроить задержки запуска. Файл конфигурации может быть помещен в / etc / vbox и содержит несколько опций. Один из них — default_policy, который определяет, разрешает или запрещает служба автозапуска запуск виртуальной машины для пользователей, которых нет в списке исключений. Список исключений начинается с exception_list и содержит список с именами пользователей, разделенных запятыми. Кроме того, для каждого пользователя может быть настроена отдельная задержка запуска, чтобы избежать перегрузки хоста. Ниже приведен пример конфигурации: # Политика по умолчанию — запретить запуск виртуальной машины, другой вариант — «разрешить».
default_policy = deny # Бобу разрешено запускать виртуальные машины, но запуск
# будет отложен на 10 секунд
bob = allow = true
startup_delay = 10
> # Алисе не разрешено запускать виртуальные машины, полезно для исключения определенных пользователей
# если политика по умолчанию разрешена.
alice = allow = false
> Любой пользователь, который хочет включить автозапуск для отдельных компьютеров, должен указать путь к каталогу базы данных автозапуска с помощью следующей команды: VBoxManage setproperty autostartdbpath каталог_автозапуска 8.8.9. Автозапуск виртуальных машин во время загрузки хост-системы Эти параметры настраивают функцию автозапуска виртуальной машины, которая автоматически запускает виртуальную машину при загрузке хост-системы. Обратите внимание, что есть предварительные условия, которые необходимо выполнить перед использованием этой функции. См. Раздел 9.21, «Запуск виртуальных машин во время загрузки системы». —autostart-enabled on | off: включает и отключает автозапуск виртуальной машины при загрузке хост-системы с использованием указанного имени пользователя. —autostart-delay : указывает задержку в секундах после загрузки хост-системы перед автозапуском виртуальной машины. Ответить
при опросе статуса
вьідает такое вер 07 18:45:46 serv1vvc systemd[1]: Started vbox@VM_1.service.
вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
lines 1-17/17 (END) Ответить
Виртуализация средствами AstraLinux 1.6 SE
В руководстве администратора к AstraLinux 1.6 SE присутствует лишь описание пакетов и параметров.
Согласно данной статье на АстраВики https://wiki.astralinux.ru/pages/viewpage.action?pageId=27363213 — сделать не получается:
1) Пока не выполнил пункт 2 по включению пользователя в группы (даже для пользователя root !) при регистрации ВМ выпадает ошибка.
2) Упомянутый в статье пакет gvncviewer отсутствует в AstraLinux 1.6 SE.
3) После успешной регистрации ВМ — при запуска выдает ошибку «unable to set PDP label ‘0:63:0 on ‘/kvm/123.qcow2’: Отказано в доступе‘»
в /var/log/libvirt/qemu/123.log содержится следующее
«warning : virExec:744 : Setting child security label to 0:63:0
warning : virExec:752 : CAPS on start: PARSEC capabilities eip(80c,80c,80c) euid 0
libvirt: error : libvirtd quit during handshake: Ошибка ввода/вывода «
Подскажите пожалуйста, имеется ли возможность создавать и управлять виртуальными машинами (не покупая средства виртуализации Брест) имея только AstraLinux1.6 SE?
И если да — то как?
oko
New member
1) Пока не выполнил пункт 2 по включению пользователя в группы (даже для пользователя root !) при регистрации ВМ выпадает ошибка.
Что логично. Для этого данный пункт и был добавлен сразу после установки необходимых пакетов.
Вообще, если нужен условный гипервизор без поддержки режима «Мандатного контроля целостности», то делается все довольно просто:
1. Ставим Astra Linux в обычном варианте без выбора каких-либо доп.флагов (затирание, киоск, ALD и проч.) и без графики. Затирание не рекомендуется по причине его бессмысленности — вся защищаемая информация будет крутиться в qcow2-образе. Киоск и ALD по понятным причинам. Но рекомендуется отключить вывод загрузчика и использовать ядро hardened по умолчанию.
2. Заводим пользователя-администратора. Все действия будет совершать от его лица. При входе в консоли всегда выбираем Integrity level: 0
3. Отключаем нафиг мандатный контроль целостности:
sudo astra-mic-control disable
4. Отключаем NetworkManager:
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
5. Правим конфиг-файл сетевых интерфейсов с целью создания сетевого моста для виртуальных машин и нашей сети:
(в примере только 1 сетевая карта — eth0) и создаем сетевой мост (к примеру, с ip-адресом 192.168.12.110 из подсети 192.168.12.0/24, где шлюз по умолчанию и DNS — роутер выхода вовне — 192.168.12.1)
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.12.110
netmask 255.255.255.0
gateway 192.168.12.1
dns-nameservers 192.168.12.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
6. Ставим пакеты поддержки KVM:
sudo apt install libvirt-daemon-system libvirt0 qemu-kvm bridge-utils virt*
7. Добавляем нашего пользователя-администратора в группы поддержки kvm:
sudo adduser libvirt-admin
sudo adduser kvm
sudo adduser libvirt-qemu
8. Механизм мандатных меток (даже отключенный) запрещает создание вирт.машин в любом каталоге кроме /var/lib/libvirt/images (или я пока не
нашел, как его обойти), поэтому размечаем пространство в формате QCOW2 (можно и в RAW, но он более «сырой», ага) для файл-образа вирт.машины
нужного объема (в пример, 20 Гигабайт):
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/ИМЯ-МАШИНЫ.img 20G
9. Создаем виртуальную машину (в примере ниже Windows, для Linux будут иные параметр os-type и кое-что еще):
sudo virt-install —connect qemu:///system -n win8 -r 2048 —cdrom «/mnt/Win81_64.iso» —arch=x86_64 —vcpus 2 —os-type windows —network=bridge:br0,model=e1000 —hvm —accelerate —graphics vnc,password=password,listen=0.0.0.0,port=5903 —disk «/var/lib/libvirt/images/ИМЯ-МАШИНЫ.img»,size=20,bus=sata,format=qcow2,cache=none
Если команда как бы подвисла, завершаем ее сочетанием Ctrl+C.
Проверяем командой sudo netstat -tpl, что *:5903 порт прослушивается — виртуальная машина создана и готова к работе.
10. Подключаемся к виртуальной машине через любой VNC-viewer на ip-адрес нашего сетевого моста, порт 5903. Вводим пароль (в примере
конфигурации, password). Инсталлируем гостевую ОС из выбранного ранее источника (в примере, /mnt/Win81_64.iso). Дожидаемся окончания установки
11. Средствами самой виртуальной машины смотрим MAC-адрес. При необходимости, выставляем статический IP либо на самой виртуальной машине, либо на DHCP-сервере, обслуживающем сеть нашего гипервизора.
12. Проверяем устойчивость работы виртуальной машины и радуемся жизни! Конфигурационный файл виртуальной машины лежит по адресу:
/etc/libvirt/qemu/ИМЯ_МАШИНЫ.xml (редактируется тем же sudo nano).
13. Добавляем виртуальную машину в автозапуск:
sudo ln -s /etc/libvirt/qemu/ИМЯ-МАШИНЫ.xml /etc/libvirt/qemu/autostart/ИМЯ-МАШИНЫ.xml
14. Завершить работу вирт.машины (в Астре по умолчанию не работает, ошибка PolKit, поэтому либо машину тушим изнутри, либо убиваем процесс командой sudo kill -9 номер_процесса. Поиск номера процесса — в качестве домашнего задания). Аналогично с system reboot — перезагрузка
вирт.машины:
virsh -c qemu:///system shutdown ИМЯ_МАШИНЫ
15. Редактировать конфигурацию, чтобы не лазить в файл постоянно
virsh -c qemu://system edit ИМЯ_МАШИНЫ
По вкусу настраиваем /etc/libvirt/libvirtd.conf — основные настройки гипервизора в части подключения администраторов, аудита и проч.
Доп.настройку хостовой ОС гипервизора проводим согласно Red Book или же без нее (в зависимости от требуемого уровня защищенности).