Запуск virtualbox при старте windows в фоне

Не давал мне покоя один вопрос – как автоматически запускать в фоновом режиме виртуальную машину из VirtualBox 6.1-7.x в случае непредвиденного отключения света или перезагрузке ОС Windows при каких-либо сбоях?

Если вопрос автоматического запуска ПК после отключении света решился простой настройкой BIOS(а), то вот запуск виртуальной машины в фоновом режиме никак был мне не понятен.

Пользовался я до недавнего времени следующим вариантом автоматического запуска ВМ:

  1. В открытом окне VirtualBox жал на раздел “Машина” – “Создать ярлык на рабочем столе“.
  2. После, нажав на WIN+R, вводил shell:startup и переходил в каталог “C:\Users\Имя пользователя\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup“.
  3. В открытый каталог закидывал вновь созданный ярлык виртуальной машины.

Данный способ рабочий, но жутко раздражает открывающимся окном виртуальной машины. И в случае, если кто-то кроме вас пользуется ПК, то есть вероятность, что надоедливое окно, если не специально, то случайно – обязательно закроют. А машина должна работать 24/7. Отсюда и появился вопрос запуска ВМ в фоновом режиме после старта Windows 10.

В поиске мне попалось несколько вариантов фонового запуска с использованием сторонних разработок и программ. И описывать я их не буду. Ставить что-то еще на ПК мне, конечно же, не захотелось, поэтому поиски продолжились. И вот на каком-то из сайтов я все же нашел корректное описание автоматического запуска ВМ в фоновом режиме, коим и спешу поделиться с вами, да и оставлю заметку, чтобы самому не забыть.

Использовать для автоматического запуска ВМ в фоновом режиме мы будем часть первого описания в шапке, совместно с использованием не ярлыка, помещенного в автозагрузку, а *.bat файла. Данный *.bat файл будет запускать нашу ВМ именно в фоновом режиме сразу же после запуска ОС Windows.

Итак, поэтапно делаем следующие шаги:

  1. Идем в окно VirtualBox, выделяем необходимую виртуальную машину и жмем на раздел “Машина” – “Создать ярлык на рабочем столе“. Ярлык по умолчанию создается на рабочем столе.
  1. Жмем правой кнопкой мыши по вновь созданному ярлыку на рабочем столе и переходим в пункт Свойства
  1. В открывшемся окне свойств переходим на вкладку Ярлык и оттуда из поля Объект копируем значение в скобках { }. В нашем случае это {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c}
  1. Теперь нам необходимо открыть блокнот и в него вставить код ниже. Смотрите внимательно описание и скриншоты под пунктом. После вставки кода в блокнот и внесения всех необходимых изменений в соответствии со своей виртуальной машиной – жмем на Файл Сохранить как. Теперь нам осталось только в поле Тип файла: – указать Все файлы, а в поле Имя файла: – внести свое название и в конце добавить .bat, чтобы наш сохраненный файл стал исполняемым. Данный файл будет запускать нашу ВМ в фоновом режиме.
@echo off
cd C:\Program Files\Oracle\VirtualBox
VBoxManage.exe startvm {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} --type headless
  • @echo on / off – включить / выключить режим отображения вводимых команд на экране.
  • cd C:\Program Files\Oracle\VirtualBox – переходит в каталог с установленной программой VirtualBox
  • VBoxManage.exe startvm {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} –type headless – здесь у нас VBoxManage.exe из папки с программой VirtualBox запускает нашу ВМ с ранее скопированным идентификатором {6e860d8a-346e-4b4a-97ee-a1dc0a8b0a7c} (вы указываете соответственно свой) и параметр –type headless – указывает ВМ на запуск в фоновом режиме.
  1. Виртуальная машина через *.bat файл теперь у нас запускается в фоновом режиме – осталось дело за малым – поместить файл в автозагрузку при запуске ОС Windows. Жмем WIN+R, вводим shell:startup и жмем ОК. У нас откроется каталог автозагрузки программ, в который мы и скинем наш *.bat файл. Каталог находится по следующему пути: “C:\Users\Имя пользователя\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  1. Ну и чтобы все это дело проверить – перезагружаем ПК и проверяем запустилась ли наша ВМ в фоновом режиме. Проверить запуск ВМ можно будет в окне с программой VirtualBox, в диспетчере задач или любым другим из удобных способов известных вам. Если все пункты выполнены правильно – всё без проблем сработает.

Полный список различных вариантов запуска и управления виртуальной машиной на базе VirtualBox

Команды запуска виртуальной машины:

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

VBoxManage.exe startvm {57d9539c-a235-4fef-9232-530e7e7958cc} --type gui

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

VBoxManage.exe startvm {57d9539c-a235-4fef-9232-530e7e7958cc} --type headless

Запуск виртуальной машины с отсоединенным пользовательским интерфейсом. Технически это безголовая виртуальная машина с пользовательским интерфейсом в отдельном процессе. Это экспериментальная функция, поскольку в ней отсутствуют определенные функции, например ускорение 3D.

VBoxManage.exe startvm {57d9539c-a235-4fef-9232-530e7e7958cc} --type separate

Команды управления виртуальной машиной:

Временный перевод виртуальной машины в режим ожидания без постоянного изменения ее состояния. Окно виртуальной машины окрашено в серый цвет, что указывает на то, что в настоящее время виртуальная машина приостановлена. Это эквивалентно выбору пункта «Пауза» в меню «Машина» графического интерфейса.

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} pause

Отмена предыдущей команды «Пауза». Это эквивалентно выбору пункта «Возобновить» в меню «Машина» графического интерфейса.

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} resume

Перезагрузка виртуальной машины – команда равносильна нажатию кнопки Reset на реальном компьютере. Делается холодная перезагрузка виртуальной машины, которая сразу перезагружает ВМ и перезагружает гостевую операционную систему. Состояние ВМ заранее не сохраняется, и данные могут быть потеряны. Это эквивалентно выбору пункта «Сброс» в меню «Машина» графического интерфейса.

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} reset

Отключение виртуальной машины сравнимое с отключением кабеля питания на реальном компьютере. Состояние ВМ заранее не сохраняется, и данные могут быть потеряны. Это эквивалентно выбору пункта «Закрыть» в меню «Машина» графического интерфейса или щелчку по кнопке закрытия окна виртуальной машины, а затем выбору «Выключить машину» в отображаемом диалоговом окне. После этого состояние виртуальной машины будет выключено. Из этого состояния его можно запустить снова командами запуска виртуальной машины, описанными выше.

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} poweroff

Сохранение текущего состояния виртуальной машины на диск, а затем остановка виртуальной машины. Это эквивалентно выбору пункта «Закрыть» в меню «Машина» графического интерфейса или щелчку по кнопке закрытия окна виртуальной машины, а затем выбору «Сохранить состояние машины» в отображаемом диалоговом окне. После этого состояние ВМ будет сохранено. Из этого состояния его можно запустить снова командами запуска виртуальной машины, описанными выше.

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} savestate

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

VBoxManage.exe controlvm {57d9539c-a235-4fef-9232-530e7e7958cc} acpipowerbutton

Надеюсь данная статья поможет сэкономить вам достаточно времени и нервов. Отблагодарить можно по ссылке СПАСИБО!

5
11
Голосов

Рейтинг записи

О себе:

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

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:

  1. Identify your virtual machine name
  2. Create a task in Task Scheduler

1. Identify your virtual machine name

Navigate to C:\Users\YourUserNameHere\VirtualBox VMs

VirtualBox VMs Folder

The folder name above generally reflects the virtual machine name. You can confirm this by checking VirtualBox Manager itself:

VirtualBox GUI

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:

Task Scheduler Search

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…:

Task Scheduler 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):

Name New Folder

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…:

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:

Create Task: General

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:

New Trigger

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 Files\Oracle\VirtualBox. Highlight VBoxManage.exe and left-click Open:

Browse to VBoxManage

Copy everything except the executable and the quotation marks from Program/script: into Start in (optional)::

Copy Directory Path

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

Enter Arguments

My Conditions tab is generally set to the following:

Conditions Tab

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 prerequisite 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 three 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:

Settings Tab

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:

Running VM

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):

Task Scheduler Success

Testing My Actual Use Case

On another machine, I set up my Linux server as a virtual machine with its 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
  • Созданная, настроенная и остановленная виртуальная машина VirtualBox

Путь к папке автозагрузки текущего пользователя в Windows 10:

%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

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

shell:startup

Путь к папке автозагрузки всех пользователей в Windows 10:

%allusersprofile%\Microsoft\Windows\Start Menu\Programs\StartUp

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

shell:common startup

Обратите внимание, что если вы используете проводник Windows для доступа к папке Автозагрузка, папка APPDATA «скрыта», вам придется включить скрытые файлы, чтобы ее увидеть. Если вы вводите путь к папке в командной строке CMD или в сценарии, скрытая папка APPDATA не будет проблемой.

Шаг 2. Создать файл в автозагрузке

В автозагрузке создаем файл с наименованием <имя_файла>.bat (напр. Debian-10.5.0-Netinst-Terminal.bat). В нем прописываем команду:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm <имя_виртуальной_машины> --type headless

Например:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "Debian-10.5.0-Netinst (Terminal)" --type headless

Скрипт проверен на VirtualBox версии 6.1.16.

Перезагружаем Windows 10, чтобы проверить результат.

VirtualBox – отличная платформа виртуализации, но в ней совершенно не заложен механизм автозапуска виртуальных машин. Иногда критически необходимо автоматизировать запуск виртуальной машины. В качестве примера разберем автостарт виртуальной машины при запуске Windows. Это отлично пригодится для того, чтобы автоматически запускать виртуальные машины после аварийной перезагрузки.

Режимы запуска виртуальных машин в VBoxManage

VBoxManage – консольное приложение для управления виртуальными машинами.
По умолчанию, менеджер обычно находится в папке: C:\ProgramFiles\Oracle\VirtualBox\VBoxManage.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.

Autologon

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

Настройка автоматической блокировки Windows 10

Чтобы не оставлять компьютер разблокированным, настроим автоматическую блокировку сеанса.
Для этого опять открываем планировщик заданий Windows и добавляем действие в задание по запуску виртуальной машины. rundll32.exe user32.dll,LockWorkStation.

Запуск блокировки сеанса

Это действие должно находится после действия по запуску машины.

Задача в диспетчере задач

i am running windows 7 x64 (host). i want to setup a ubuntu/apache/mysql/php stack as a test/development web server in virtual box.

is there a way i can start virtual box in the background? (with guest as ubuntu — used as a development web server)

if i start on virtual box on startup i guess it might slow down my system considerably? maybe not advisable?

the reason why i am thinking of starting up vbox+guest linux this way is so that i dont have to manually start it up if i use it often. and if it runs in the background, it will seem transparent to me. no need for the extra icon clutter in my taskbar. plus if its in the bg, and windows is setup to give priority to «Programs» over «Background tasks» maybe it will provide better performance? for «foreground» programs?

asked Jul 22, 2010 at 4:55

Jiew Meng's user avatar

2

You can start a virtual machine in headless mode to prevent it from creating the full display window, but it still creates a command window.

There seems no be no way to get virtualbox to run completely silently on windows. However, it should be possible to minimize the command window to the system tray to get it out of the way. In any event, it seems to take fewer resources than a full-on vm.

The command is:
vboxheadless -startvm "$VMNAME$"
To save the vm state:
vboxmanage controlvm "$VMNAME$" savestate
(Quotes are only required if the vm name has spaces)

All vm modifying commands have to be done through vboxmanage, unfortunately. While the GUI doe update to show the machine state, it cannot modify it at all.

I use vboxheadless to run multiple vm’s on a second computer, and connect to them using RDP. If you want to get to the desktop on the headless vm, (rather than something like X) you need to enable RDP in the vm’s settings. You can do it through vboxmanage, but using the GUI while the vm is stopped is far easier.

answered Jul 22, 2010 at 7:24

Fake Name's user avatar

Fake NameFake Name

2,5392 gold badges19 silver badges27 bronze badges

I found a away to launch a VM silently using hstart.
Create a .bat containing the following line:

"c:\your\hstart\path\hstart64.exe" /NOCONSOLE /SILENT "C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe --startvm putyourvmnamehere"

That way you won’t have any window open but the VM will be running in the background.
You can even put this .bat in the startup folder so the VM starts when Windows starts.

Then I use SSH to connect to the headless machine. (but you can use RDP depending on how you configured your VM)

answered Sep 25, 2014 at 11:44

5moufl's user avatar

5moufl5moufl

1421 silver badge9 bronze badges

I’m running Windows 10 with Oracle VirtualBox 5.0.2. It’s not Windows 7, but this should work with a newer VirtualBox release for Windows…

In VirtualBox Manager, click the drop-down arrow next to the Start arrow and select «Detachable Start». That will allow you to open or close a local display without having to shutdown the server.

Next, go get: RBTray, move it to Program Files, add a shortcut to your startup folder, and go ahead and run it.

Now you should be able to right-click the minimize «-» on the VirtualBox Manager window and it will minimize to the system tray without a taskbar icon staying around all the time.

It’s not the same as starting the servers in the background, but it’s a heck of a lot easier to work with for devel and home networks.

answered Sep 12, 2015 at 17:02

Brian Chandler's user avatar

1

Use vbscript to hide console. From http://ss64.com/vb/run.html

Save file as name.vbs. eg: vboxservice1.vbs

Set objShell = WScript.CreateObject("WScript.Shell")
vmname = "some.name.dns"
Return = objShell.Run("vboxheadless --startvm " chr(34) & vmname & chr(34), 1, false)
'1 is to show. change to 0 do hide
'false is to continue. change to true to wait for process execution 
'before continuing the script.

answered Aug 27, 2014 at 1:21

careto's user avatar

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

Другие наши интересноые статьи:

  • Запуск iis на windows 10
  • Запуск jar на windows из командной строки
  • Запуск windows 10 в безопасном режиме с флешки
  • Запуск iso файлов на windows 11
  • Запуск windows 10 в безопасном режиме при запуске компьютера

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии