Не давал мне покоя один вопрос — как автоматически запускать в фоновом режиме виртуальную машину из VirtualBox 6.1 в случае непредвиденного отключения света или перезагрузке ОС Windows при каких-либо сбоях?
Если вопрос автоматического запуска ПК после отключении света решился простой настройкой BIOS(а), то вот запуск виртуальной машины в фоновом режиме никак был мне не понятен.
Пользовался я до недавнего времени следующим вариантом автоматического запуска ВМ:
- В открытом окне VirtualBox жал на раздел «Машина» — «Создать ярлык на рабочем столе«.
- После, нажав на WIN+R, вводил shell:startup и переходил в каталог «C:UsersИмя пользователяAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup«.
- В открытый каталог закидывал вновь созданный ярлык виртуальной машины.
Данный способ рабочий, но жутко раздражает открывающимся окном виртуальной машины. И в случае, если кто-то кроме вас пользуется ПК, то есть вероятность, что надоедливое окно, если не специально, то случайно — обязательно закроют. А машина должна работать 24/7. Отсюда и появился вопрос запуска ВМ в фоновом режиме после старта Windows 10.
В поиске мне попалось несколько вариантов фонового запуска с использованием сторонних разработок и программ. И описывать я их не буду. Ставить что-то еще на ПК мне, конечно же, не захотелось, поэтому поиски продолжились. И вот на каком-то из сайтов я все же нашел корректное описание автоматического запуска ВМ в фоновом режиме, коим и спешу поделиться с вами, да и оставлю заметку, чтобы самому не забыть.
Использовать для автоматического запуска ВМ в фоновом режиме мы будем часть первого описания в шапке, совместно с использованием не ярлыка, помещенного в автозагрузку, а *.bat файла. Данный *.bat файл будет запускать нашу ВМ именно в фоновом режиме сразу же после запуска ОС Windows.
Итак, поэтапно делаем следующие шаги:
- Идем в окно VirtualBox, выделяем необходимую виртуальную машину и жмем на раздел «Машина» — «Создать ярлык на рабочем столе«. Ярлык по умолчанию создается на рабочем столе.
- Жмем правой кнопкой мыши по вновь созданному ярлыку на рабочем столе и переходим в пункт Свойства
- В открывшемся окне свойств переходим на вкладку Ярлык и оттуда из поля Объект копируем значение в скобках { }. В нашем случае это {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c}
- Теперь нам необходимо открыть блокнот и в него вставить код ниже. Смотрите внимательно описание и скриншоты под пунктом. После вставки кода в блокнот и внесения всех необходимых изменений в соответствии со своей виртуальной машиной — жмем на Файл — Сохранить как. Теперь нам осталось только в поле Тип файла: — указать Все файлы, а в поле Имя файла: — внести свое название и в конце добавить .bat, чтобы наш сохраненный файл стал исполняемым. Данный файл будет запускать нашу ВМ в фоновом режиме.
@echo off
cd C:Program FilesOracleVirtualBox
VBoxManage.exe startvm {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} --type headless
- @echo on / off — включить / выключить режим отображения вводимых команд на экране.
- cd C:Program FilesOracleVirtualBox — переходит в каталог с установленной программой VirtualBox
- VBoxManage.exe startvm {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} —type headless — здесь у нас VBoxManage.exe из папки с программой VirtualBox запускает нашу ВМ с ранее скопированным идентификатором {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} (вы указываете соответственно свой) и параметр —type headless — указывает ВМ на запуск в фоновом режиме.
- Виртуальная машина через *.bat файл теперь у нас запускается в фоновом режиме — осталось дело за малым — поместить файл в автозагрузку при запуске ОС Windows. Жмем WIN+R, вводим shell:startup и жмем ОК. У нас откроется каталог автозагрузки программ, в который мы и скинем наш *.bat файл. Каталог находится по следующему пути: «C:UsersИмя пользователяAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup«
- Ну и чтобы все это дело проверить — перезагружаем ПК и проверяем запустилась ли наша ВМ в фоновом режиме. Проверить запуск ВМ можно будет в окне с программой VirtualBox, в диспетчере задач или любым другим из удобных способов известных вам. Если все пункты выполнены правильно — всё без проблем сработает.
Надеюсь данная статья поможет сэкономить вам достаточно времени и нервов. Отблагодарить можно по ссылке СПАСИБО!
5
7
Голосов
Рейтинг записи
О себе:
Системное администрирование, подключение и настройка оборудования, планирование и монтаж локальных сетей, внедрение и настройка 1С Розница.
Необходимо для выполнения пунктов
- Установленная и настроенная программа VirtualBox
- Созданная, настроенная и остановленная виртуальная машина VirtualBox
Путь к папке автозагрузки текущего пользователя в Windows 10:
%userprofile%AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
Вы можете открыть папку автозагрузки текущего пользователя через проводник Windows, командную строку или щелкнув правой кнопкой мыши Пуск > Выполнить:
shell:startup
Путь к папке автозагрузки всех пользователей в Windows 10:
%allusersprofile%MicrosoftWindowsStart MenuProgramsStartUp
Вы можете открыть папку автозагрузки всех пользователей через проводник Windows, командную строку или щелкнув правой кнопкой мыши Пуск > Выполнить:
shell:common startup
Обратите внимание, что если вы используете проводник Windows для доступа к папке Автозагрузка, папка APPDATA «скрыта», вам придется включить скрытые файлы, чтобы ее увидеть. Если вы вводите путь к папке в командной строке CMD или в сценарии, скрытая папка APPDATA не будет проблемой.
Шаг 2. Создать файл в автозагрузке
В автозагрузке создаем файл с наименованием <имя_файла>.bat (напр. Debian-10.5.0-Netinst-Terminal.bat). В нем прописываем команду:
"C:Program FilesOracleVirtualBoxVBoxManage.exe" startvm <имя_виртуальной_машины> --type headless
Например:
"C:Program FilesOracleVirtualBoxVBoxManage.exe" startvm "Debian-10.5.0-Netinst (Terminal)" --type headless
Скрипт проверен на VirtualBox версии 6.1.16.
Перезагружаем Windows 10, чтобы проверить результат.
The truly most-consistent option is to use Task Scheduler.
Implementing the solution
This requires a couple of pretty easy steps, but I will explain them in detail to ensure anyone from with any technical background can set this up:
- Identify your virtual machine name
- Create a task in Task Scheduler
1. Identify your virtual machine name
Navigate to C:UsersYourUserNameHereVirtualBox VMs
The folder name above generally reflects the virtual machine name. You can confirm this by checking VirtualBox Manager itself:
The machine name is WindowsXPSP3
.
2. Create a task in Task Scheduler
First click the start button and type «task scheduler» without the quotes. Then open the Task Scheduler:
Inside the task scheduler, we’re going to see a structure tree on the left side. Right-click on Task Scheduler Library
. Left-click on New Folder...
:
Name the folder something memorable, like User Custom
and hit OK (if you already have an existing folder that you would prefer to use, that’s fine as well, skip to the next paragraph instead):
Click your newly created folder, in my case User Custom
, to highlight it. Right-click in the empty list to the right and Left-click on Create New Task...
:
Now comes the tricky stuff. Follow my instructions verbatim. If you feel like downvoting because it didn’t work, or say «this didn’t work for me» in the comments, I’m betting you skipped a step here. Come back and try it again.
The Name
and Description
can be whatever you like, it is merely aesthetic and will not affect functionality. I’m going to name mine after my virtual machine and put a brief description. What IS important is that you choose Run whether user is logged on or not
and Run with highest privileges
:
Switch to the Triggers
tab at the top and Left-click New...
. Switch the Begin the task:
combination box to At Startup
and then Left-click OK:
Switch to the Actions
tab at the top and Left-click New...
. Click browse (do not try to type this manually, you will cause yourself headaches) and navigate to C:Program FilesOracleVirtualBox
. Highlight VBoxManage.exe
and Left-click Open
:
Copy everything except the executable and the quotation marks from Program/script:
into Start in (optional):
:
Finally, put the following line into Add arguments (optional):
and hit OK:
startvm "YourVirtualMachineNameFromStep1" --type headless
in my case, I will use:
startvm "WindowsXPSP3" --type headless
My Conditions
tab is generally set to the following:
Make sure your Settings
tab looks like the following, but absolutely ensure you have set the items marked in yellow to match mine. This will make sure that if some pre-requisite wasn’t ready yet that it will retry a few times to start the virtual machine and that the virtual machine won’t be terminated after 3 days. I would leave everything else as default unless you know what you are doing. If you don’t do what I show you here, and it ends up not working, it’s your problem:
Finally, hit OK at the bottom of the Create Task
window. You are done!
Testing the solution
Testing My Fake Scenario Above (and how you can test yours)
When I restart my computer, I can log in and open the VirtualBox Manager and see that my VM is running:
I can also open Task Scheduler back up, and verify that it ran successfully, or see what the error was if it did not (most errors will be directory errors from people trying to manually enter where I told them not to):
Testing My Actual Use Case
On another machine, I set up my Linux Server as a virtual machine with it’s own raw solid-state hard drive. I wanted that Server to boot back up if the machine got restarted (crash, windows update, etc) automatically, without the user having to log in. I set that one up exactly as I described above and restarted that machine. I know it worked successfully because I was able to access my Samba share (laymens: a folder with stuff in it that I share over my network to my other computers) from another computer WITHOUT having first logged into the machine that runs the Server VM. This 100% confirms that it does start on system boot and not after the user logs in.
The truly most-consistent option is to use Task Scheduler.
Implementing the solution
This requires a couple of pretty easy steps, but I will explain them in detail to ensure anyone from with any technical background can set this up:
- Identify your virtual machine name
- Create a task in Task Scheduler
1. Identify your virtual machine name
Navigate to C:UsersYourUserNameHereVirtualBox VMs
The folder name above generally reflects the virtual machine name. You can confirm this by checking VirtualBox Manager itself:
The machine name is WindowsXPSP3
.
2. Create a task in Task Scheduler
First click the start button and type «task scheduler» without the quotes. Then open the Task Scheduler:
Inside the task scheduler, we’re going to see a structure tree on the left side. Right-click on Task Scheduler Library
. Left-click on New Folder...
:
Name the folder something memorable, like User Custom
and hit OK (if you already have an existing folder that you would prefer to use, that’s fine as well, skip to the next paragraph instead):
Click your newly created folder, in my case User Custom
, to highlight it. Right-click in the empty list to the right and Left-click on Create New Task...
:
Now comes the tricky stuff. Follow my instructions verbatim. If you feel like downvoting because it didn’t work, or say «this didn’t work for me» in the comments, I’m betting you skipped a step here. Come back and try it again.
The Name
and Description
can be whatever you like, it is merely aesthetic and will not affect functionality. I’m going to name mine after my virtual machine and put a brief description. What IS important is that you choose Run whether user is logged on or not
and Run with highest privileges
:
Switch to the Triggers
tab at the top and Left-click New...
. Switch the Begin the task:
combination box to At Startup
and then Left-click OK:
Switch to the Actions
tab at the top and Left-click New...
. Click browse (do not try to type this manually, you will cause yourself headaches) and navigate to C:Program FilesOracleVirtualBox
. Highlight VBoxManage.exe
and Left-click Open
:
Copy everything except the executable and the quotation marks from Program/script:
into Start in (optional):
:
Finally, put the following line into Add arguments (optional):
and hit OK:
startvm "YourVirtualMachineNameFromStep1" --type headless
in my case, I will use:
startvm "WindowsXPSP3" --type headless
My Conditions
tab is generally set to the following:
Make sure your Settings
tab looks like the following, but absolutely ensure you have set the items marked in yellow to match mine. This will make sure that if some pre-requisite wasn’t ready yet that it will retry a few times to start the virtual machine and that the virtual machine won’t be terminated after 3 days. I would leave everything else as default unless you know what you are doing. If you don’t do what I show you here, and it ends up not working, it’s your problem:
Finally, hit OK at the bottom of the Create Task
window. You are done!
Testing the solution
Testing My Fake Scenario Above (and how you can test yours)
When I restart my computer, I can log in and open the VirtualBox Manager and see that my VM is running:
I can also open Task Scheduler back up, and verify that it ran successfully, or see what the error was if it did not (most errors will be directory errors from people trying to manually enter where I told them not to):
Testing My Actual Use Case
On another machine, I set up my Linux Server as a virtual machine with it’s own raw solid-state hard drive. I wanted that Server to boot back up if the machine got restarted (crash, windows update, etc) automatically, without the user having to log in. I set that one up exactly as I described above and restarted that machine. I know it worked successfully because I was able to access my Samba share (laymens: a folder with stuff in it that I share over my network to my other computers) from another computer WITHOUT having first logged into the machine that runs the Server VM. This 100% confirms that it does start on system boot and not after the user logs in.
VirtualBox – отличная платформа виртуализации, но в ней совершенно не заложен механизм автозапуска виртуальных машин. Иногда критически необходимо автоматизировать запуск виртуальной машины. В качестве примера разберем автостарт виртуальной машины при запуске Windows. Это отлично пригодится для того, чтобы автоматически запускать виртуальные машины после аварийной перезагрузки.
Режимы запуска виртуальных машин в VBoxManage
VBoxManage – консольное приложение для управления виртуальными машинами.
По умолчанию, менеджер обычно находится в папке: C:ProgramFilesOracleVirtualBoxVBoxManage.exe
Для запуска машины необходимо отправить ему команду startvm "Имя машины" --type headless
.
Режимы запуска:
gui
— запуск виртуальной машины с окном графического интерфейса, режим по умолчанию.
headless
— запуск виртуальной машины в фоновом режиме. Графический интерфейс, при необходимости, возможно открыть.
separate
— тоже самое, что и headless, но графический интерфейс запускается в отдельном процессе. Это экспериментальная функция, в этом режиме не работает 3D ускорение.
Настройка автозапуска виртуальных машин
Запускаем Планировщик заданий, для Windows 10 проще всего запустить через комбинацию «Win+R», затем taskschd.msc
.
Создаем задачу для пользователя. Выбираем пункт «Выполнять только для пользователей, вошедших в систему» и — Настроить для Windows 10.
Далее настраиваем триггер. Лучше включить отложенный запуск, чтобы вход в систему полностью завершился.
Затем настраиваем действие «Запуск программы». В аргументах к запуску указываем команду с именем виртуальной машины. startvm "Name VM" --type headless
.
На этом настройка задачи завершена.
Настройка автовхода в Windows 10
Скачиваем с сайта Microsoft программу Autologon.
Вводим свой пароль и жмем «Enable». В отличии от включения автовхода через ручную правку реестра, эта утилита сохраняет пароль пользователя в зашифрованном виде.
Настройка автоматической блокировки Windows 10
Чтобы не оставлять компьютер разблокированным, настроим автоматическую блокировку сеанса.
Для этого опять открываем планировщик заданий Windows и добавляем действие в задание по запуску виртуальной машины. rundll32.exe user32.dll,LockWorkStation
.
Это действие должно находится после действия по запуску машины.
Содержание
- Запустить VirtualBox в фоновом режиме, без окна?
- Автозапуск виртуальной машины VirtualBox
- Автозапуск виртуальной машины в VirtualBox
- Выводы
- Оцените статью:
- Об авторе
- 9 комментариев
Запустить VirtualBox в фоновом режиме, без окна?
Мне было интересно, можно ли запустить виртуальную машину Ubuntu, используя VirtualBox в фоновом режиме, я имею в виду, без какого-либо открытого окна.
Идея состоит в том, чтобы подключиться через SSH к хосту Linux, который будет работать в фоновом режиме.
Кто-нибудь когда-нибудь делал что-то подобное? Является ли это возможным?
Чтобы закрыть его, запросите отключение от гостя.
Это встроено в VirtualBox 4.2.
Просто удерживайте Shift при запуске виртуальной машины из диспетчера.
Абсолютно! Вы ищете безголовую установку (Virtualbox). Способ запуска машины из командной строки выглядит примерно так:
Однако вам понадобится какой-то способ подключения. Что я делаю, так это сопоставление портов между гостем и хостом. При такой конфигурации ваш порт 2222 хоста будет сопоставлен с портом 22 вашей гостевой машины.
После этого вы можете войти через:
Достаточно забавно, но я только что понял, как запустить виртуальную машину без головы, по RDP.
Примечание. По крайней мере в окнах оно заблокирует командное окно. Если вам нужно продолжить использовать консольное окно, откройте другое, чтобы запустить виртуальную машину в.
Я использую VBoxTool от http://vboxtool.sourceforge.net/, и он отлично работает для меня. Он может автоматически запускать виртуальные машины при загрузке и останавливать / сохранять виртуальные машины при завершении работы и обеспечивает простой интерфейс командной строки.
Я бы порекомендовал спросить об этом на форумах virtualbox. На самом деле, сначала выполните поиск, так как я ожидаю, что об этом уже спрашивали.
VBoxManage был правильным, извините. Ссылка информация в руководстве http://www.virtualbox.org/manual/ch08.html
Для запуска в автономном режиме с использованием графического интерфейса пользователя:
Удерживайте клавишу Shift при запуске виртуальной машины.
Я обнаружил, что режим автономной работы, кажется, отлично работает при фоновом режиме в Linux (CentOS 5.6), но вы теряете доступ к функциональности RDP, пока процесс является фоновым. Сделайте ‘fg’, чтобы вернуть процесс на передний план, и функциональность RDP восстановится. Похоже, что запуск vm headless лучше всего выполнить через скрипт init, где интерактивность с консолью не требуется.
Вы можете использовать VBoxHeadless или (и мне интересно, почему никто не упомянул об этом до меня), вы можете просто выбрать один из вариантов запуска, который будет запускать ВМ без какого-либо графического интерфейса.
Удерживайте клавишу shift и запустите машину, или щелкните правой кнопкой мыши машину и найдите что-то вроде «Запуск без вывода» в пункте «Выполнить».
Для доступа по ssh вам не нужно изменять конфигурацию, просто сохраняйте NAT, и вы можете настроить таблицу переадресации портов следующим образом:
Когда вы вставите localhost: 8080 в браузер вашего компьютера, откроется страница с VM (на порту 80).
Если виртуальная машина работает и отображается экран, вы можете скрыть ее, выполнив следующие действия.
Источник
Автозапуск виртуальной машины VirtualBox
Если вы запускаете виртуальные машины VirtualBox на сервере, то скорее всего, захотите, чтобы они оставались запущенными даже после неожиданной перезагрузки сервера.
В этой небольшой статье мы рассмотрим как настроить автозапуск виртуальной машины VirtualBox с помощью системы инициализации systemd, которая сейчас используется повсеместно.
Автозапуск виртуальной машины в VirtualBox
Давайте создадим файл юнита, который будет управлять автозагрузкой. Для этого выполните такую команду:
В открывшемся редакторе вставьте такой текст:
С помощью этого юнита мы и будем делать автозапуск virtualbox linux. В этом примере я запускаю виртуальную машину от имени пользователя root, но вам нужно запускать её от того пользователя, к которому добавлены виртуальные машины и от имени которого VirtualBox обычно работает.
Сохраните изменения в файле и выполните следующую команду, чтобы система инициализации перечитала конфигурационные файлы с диска:
В нашем юнит файле мы предусмотрели возможность использования параметра, в котором передается имя или UUID идентификатор виртуальной машины. Если в имени машины есть пробел, то лучше использовать UUID, а иначе можно и имя.
Смотрим список виртуальных машин:
VBoxManage list vms
Теперь давайте запустим машину 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. Как видите, всё очень просто и удобно. Теперь ваши виртуальные машины будут всегда запущены.
Нет похожих записей
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
9 комментариев
добрый день сделал все как у вас, но при перезагрузки не запускается что может быть не подскажите?
Почему, после того, как я перенес систему с HDD на SSD виртуальная машина перестала автоматически запускаться?
Скорее всего сменился UUID
класс
работает
СПС
Спасибо за статью, очень пригодилось. Ещё нашёл в интернетах, что в ExecStop можно вместо acpipowerbutton указать savestate
В таком случае вместо выключения виртуальной машины, будет выполнено сохранение текущего состояния.
Все уже придумано ораклом, перевод выдержки из официального мануала:
9.21. Запуск виртуальных машин во время загрузки системы
Вы можете запускать виртуальные машины автоматически во время загрузки системы на платформах Linux, Oracle Solaris и Mac OS X для всех пользователей.
9.21.1. Linux: запуск службы автозапуска с помощью init
# Бобу разрешено запускать виртуальные машины, но запуск
# будет отложен на 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)
Источник