Автозапуск virtualbox на windows server

virtualbox_logo

Есть у одних моих клиентов хитрая программа, защита которой привязана к аппаратной части пк. Мы посадили эту программу на виртуальную машину virtualbox, а виртуалбокс установили на один из виндовых серверов. Все бы ничего, но при перезагрузке физического сервера приходилось логиниться на него, запускать виртуальную машину и оставлять все это добро работать в терминальной сессии. Неудобно.

Оказалось, что можно запросто организовать автоматический запуск виртуальных машин при загрузке сервера через VirtualboxVmService. Качаем программу отсюда http://sourceforge.net/projects/vboxvmservice/ Инсталлируем, чуть подправляем конфиг, перезагружаемся  — и все работает (в идеале).

Нюанс: у нас установлен Virtualbox устаревшей версии. При попытке старта созданной программой службы мы получили в логе VBoxVmService.log сообщение:

Error creating VirtualBox instance! rc = 0x80004002

Погуглил. Наткнулся на предложение обновить версию VirtualboxVmService в соответствии с версией самого виртуалбокса. Догадался, что у нас с точностью до наоборот: для старой версии виртуалбокса нужен старый VirtualboxVmService. Скачал устаревшую версию и все заработало с полпинка!


Документация на VirtualboxVmService.

На всякий случай приведу перевод документации текущей версии 4.1

##############################################################################
#
# ЧАСТЬ 1 — SETUP
#
##############################################################################

Шаг 1.
Убедитесь что Virtualbox установлен и ваши виртуальные машины могут стартовать с помощью менеджера virtualbox без каких либо проблем. Выключите виртуальные машины и закройте VirtualBox Manager.
ВАЖНО: Если вы хотите управлять вашей виртуальной машиной с помощью VRDP, Включите поддержку удаленного монитора в настройках display settings и определите соответствующий порт для каждой виртуальной машины индивидуально (т.е 3010 для Vm0, 3020 для Vm1, и т.д). Не используйте для этих целей стандартный порт 3389!

Шаг 2.
Скачайте и распакуйте последний релиз VBoxVmService в c:\vms.

Шаг 3
Откройте VBoxVmService.ini в любом текстовом редакторе и отредактируйте под ваши нужды. Этот файл содержит пример установки с двумя виртуальными машинами.

Ключ / Значение Описание
——————————————————————————
[Settings]
ServiceName=VBoxVmService Имя службы
RunAsUser=DomainName\UserName Имя пользователя под которым сервис будет стартовать. Процесс службы залогинится под этим пользователем. Если пользователь принадлежит к встроенному домену (т.е локальный) вы должны определить как .\UserName.
UserPassword=xxxxxxxx ДОЛЖЕН БЫТЬ ОПРЕДЕЛЕН! УСТАНОВИТЕ INI ФАЙЛУ ДОСТУП НА ЧТЕНИЕ ТОЛЬКО ДЛЯ ВАС И СИСТЕМЫ
VBOX_USER_HOME=C:\Users\YOUR_NAME_HERE\.VirtualBox Путь к дирректории .VirtualBox для вашего профиля. Она обычно располагается в персональной папке пользователя.
RunWebService=no Стартовать или нет VBoxWebSrv.exe, VirtualBox HTTP веб сервер автоматически. Может быть «yes» или «no». Оставьте ее в «no» если вы не знаете что это.
PauseShutdown=5000 Параметр используется для замедления выключения компьютера чтобы предотвратить крах виртуальной машины при выключении или перезагрузке. (5000=5 секунд) Заметте что Windows имеет ограниченя как долго контроллер сервиса будет ждать когда система перезагрузится. Лимит времени определен в переменной WaitToKillServiceTimeout в следующей ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Ваше значение PauseShutdown не должно превышать это значение в реестре.

[Vm0]
VmName=ubuntu Имя для запуска VM (Чуствительно к регистру!)
ShutdownMethod=savestate Метод выключения («savestate», или «acpipowerbutton»). Когда используется «savestate», состояние машины сохраняется и может быть возобновлено когда она старует в следующий раз. Когда используется «acpipowerbutton» , VM просто выключится. Если ваша VM долго выключается рекомендуется использовать savestate, который завершает намного быстрее.
AutoStart=yes Будет или нет VM стартовать автоматически когда VBoxVmService работает. По умолчанию установлено в «yes».

[Vm1]
VmName=winxp Как в можете видеть значения ниже почти повторяются для каждой [VmX]-секции файла
ShutdownMethod=acpipowerbutton
AutoStart=no Эта VM не будет стартовать автоматически.
##############################################################################
#
# ЧАСТЬ II — INSTALLATION
#
##############################################################################
Шаг 1. (для WINXP / SERVER2003) Запустите CMD (Командная строка) из вашего старт меню.
Шаг 1. (для VISTA / SERVER2008 / WIN7) Кликните правой кнопкой мыши по CMD (командная строка) и выберете «Запуск от имени администратора» в контекстном меню.
Step 2. Инсталируйте сервис. В терминальном окне наберите:
cd C:\vms [ENTER]

VmServiceControl.exe -i [ENTER]

Шаг 3. Перезагрузите вашу систему.
Если все сделано правильно, вы сможете подключиться к вашей VM с помощью VRDP клиента (или ssh клиента, если вы сконфигурировали ssh сервер внутри вашей VM). Если нет то обратитесь к секции TROUBLESHOOTING которая расположена ниже для отладки.
##############################################################################
#
# ЧАСТЬ III — UNINSTALL
#
##############################################################################

Шаг 1. (для WINXP / SERVER2003) Запустите CMD (Командная строка) из вашего старт меню.
Шаг 1. (для VISTA / SERVER2008 / WIN7) Кликните правой мышкой по CMD (Командная строка) и выберете «Run as Administrator» из контекстного меню.
Шаг 2.[/b] Остановите VBoxVmService сервис. Внутри терминального окна наберите:
cd C:\vms [ENTER]
VmServiceControl.exe -k [ENTER]
Замечание: вы можете также остановить сервис из консоли управления компьютером.
Шаг 3. Удалите сервис . продолжайте в терминальном окне набирать:
VmServiceControl.exe -u [ENTER]
Шаг 4. Удалите директорию с программой(В этом примере «c:\vms»).
Шаг 5. Вы удалили VBoxVmService из вашей системы.
##############################################################################
#
# ЧАСТЬ IV — TROUBLESHOOTING
#
##############################################################################

Если сервис не поднимает вашу VM как вы хотите, попробуйте следующее:
Осторожно перепроверьте настройки которые вы сделали в «VBoxVmService.ini».
Уменьшите количество ваших виртуальных машин до одной (= только [Settings] и секция [Vm0] в вашем ini файле) в вашем ini файле , для отладки
Переключитесь в командную строку, cd в VBoxVmService директорию и наберите:
VmServiceControl.exe -su 0 [ENTER]
чтобы поднять VM которую вы определили в секции [Vm0] файла «VBoxVmService.ini».
Если вы успешно подняли VM, вы увидите в диспетчере задач запущенный процесс «VBoxHeadless.exe» под определенным пользователем
Комманда:
VmServiceControl.exe -sd 0 [ENTER]
может быть использована для проверки вывода во время падения процесса[Vm0]. После этого, не должно быть запущенного «VBoxHeadless.exe» процесса. В дополнении, вы должны увидеть то что процесс «VBoxSVC.exe» завершится в скором времени после успешного завершения «VBoxHeadless.exe».
И команда:
VmServiceControl.exe -st 0 [ENTER]
может быть использована для проверки статуса целевой VM [Vm0].
Читайте лог файл!
Если вы видите «Could not find a registered machine named…», проверьте переменную среды VBOX_USER_HOME которая должна быть корректно установлена.
Если вы сделали ошибку в VBOX_USER_HOME, какбы то ни было, исправление ее в VBoxVmService.ini не достаточно. Потому что значения были записаны в переменные среды во время инсталляции. Вы должны открыть Панель управления->Система->Расширенные настройки системы->Дополнительно-Переменные среды, и пофиксить их здесь. Пожалуйста также убедитесь что VBOX_USER_HOMЕ установлена как системная переменная, а не как пользовательская.
После установки и каждый раз когда вы изменяете VBOX_USER_HOME, требеется перезагрузка системы для того чтобы VBoxVmService работал корректно.
Если проблема не устранена, опишите ее здесь на форуме, может кто и поможет.

  • Home
  • Products
  • AlwaysUp
  • Applications
  • VirtualBox

How to Run a VirtualBox Virtual Machine as a Windows Service with AlwaysUp

Ensure that your VirtualBox VM starts immediately when your PC boots and is available 24/7. No login necessary!

VirtualBox is a free, open-source virtualization platform that can host Windows, Linux, Mac OS and other operating systems.

To run your VirtualBox VM with AlwaysUp:

  1. Download and install VirtualBox if necessary.

    Create a virtual machine (VM) and ensure that everything works as you expect.

    Be sure to
    install the VirtualBox extension pack
    if you intend to use VirtualBox’s
    Remote Display feature to connect to your VM.

  2. Download and install AlwaysUp, if necessary.

  3. Start AlwaysUp.

  4. Select Application > Add to open the Add Application window:

    Add Application

  5. On the General tab:

    • In the Application field, enter the full path to the
      VBoxHeadless.exe application,
      which allows you to start a VM without a graphical interface.

      If you installed VirtualBox in the default location, this is:

      C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe

    • In the Arguments field, enter:

      -startvm «<VIRTUAL-MACHINE_NAME>»

      where <VIRTUAL-MACHINE_NAME> is the name of the VirtualBox VM you would like to start automatically.
      We have specified «Windows Server 2022» in this tutorial.

      Note: Instead of starting your VM by name, can launch it using the VM’s unique identifier (UUID).
      To do so, specify parameter -s <UUID> (instead of -startvm),
      where <UUID> is the identifier for your VM.
      You can list your VM’s UUIDs by running
      Vboxmanage.exe list vms
      from the VirtualBox installation folder.

    • In the Start the application field, select Automatically, but shortly after the computer boots.

      This setting — which delays VM startup by about 2 minutes — should ensure that critical system services
      (like networking and domain authentication) are ready and waiting when your virtual machine is launched in the background.

    • In the Name field, enter the name that you will call this application in AlwaysUp.
      We have specified «Windows Server 2022 VM» but you can enter virtually anything you like.

    VirtualBox Windows Service: General Tab

  6. Click over to the Logon tab.
    Enter the user name and password of the account in which you installed and run VirtualBox.
    AlwaysUp must run your VM must in this account so that it can find its settings:

    VirtualBox Windows Service: Logon Tab

  7. Move to the Startup tab and check the Ensure that the Windows Networking components have started box.
    This informs AlwaysUp that VirtualBox needs the TCP/IP networking stack to operate.

    VirtualBox Windows Service: Startup Tab

  8. And finally, on the Extras tab, let’s ensure that your VM shuts down smoothly when its stopped.

    • Check the Use this special command to stop the application box.
      Enter the full path to the VBoxManage.exe application along with a few arguments:

      «C:\Program Files\Oracle\VirtualBox\VBoxManage.exe» controlvm <VIRTUAL-MACHINE-NAME> savestate

      where <VIRTUAL-MACHINE-NAME> is the name of your VM.

      See the VBoxManage.exe command line arguments for stopping a VM if you wish to stop without saving state, etc.

      Note: VirtualBox user Jesse Connor prefers to use ACPI shutdown instead of savestate because his Linux boxes
      don’t seem to recover smoothly from saved states.
      For the stop command, he specifies:

      «C:\Program Files\Oracle\VirtualBox\Vboxmanage.exe» controlvm <UUID> acpipowerbutton

      where <UUID> is the identifier for his VM.

    • Check the Wait for up to box and enter 30 in the accompanying field.
      This tells AlwaysUp to wait for up to 30 seconds for VirtualBox to exit properly before forcibly closing it.

    VirtualBox Windows Service: Extras Tab

  9. Click the Save button. In a couple of seconds, your new application will show up in the AlwaysUp window.
    It’s not yet running though:

    VirtualBox Windows Service: Created

  10. To start your VirtualBox VM, choose Application > Start «Windows Server 2022 VM» (your application name will be different though).

    In a few seconds, the entry’s state will transition to «Running» and your VM will be chugging away in the background
    (in the isolated Session 0):

    VirtualBox Windows Service: Running

    At this point, please connect to your VM and ensure that it works as expected.

    For example, if you set up the Remote Display feature,
    now would be a good time to open an RDP session to your VM.

  11. That’s it! Next time your computer boots, your VirtualBox virtual machine will start up immediately, before anyone logs on.

    We encourage you to edit your VirtualBox entry in AlwaysUp and explore the many other settings that may be appropriate for your environment.
    For example, send an email if VirtualBox stops unexpectedly, boost the priority of the VM process, and much more!


VirtualBox not working properly as a Windows Service?

  • Please ensure that the VirtualBox commands work as expected on your system.

    For example, does this command start your virtual machine?

    C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe -startvm «<VIRTUAL-MACHINE_NAME>»

    VirtualBox Windows Service: Created

    And does this command stop your VM?

    «C:\Program Files\Oracle\VirtualBox\VBoxManage.exe» controlvm <VIRTUAL-MACHINE-NAME> savestate

    If not, you should adjust your AlwaysUp settings to use alternate commands that work for you.
    Please get in touch if you need help doing that.

  • Visit the AlwaysUp Troubleshooter — our online tool
    that can help you resolve the most common problems encountered when running VirtualBox as a windows service.

  • From AlwaysUp, select Application > Report Activity > Today… to bring up a HTML report detailing the
    interaction between AlwaysUp and VirtualBox.
    The AlwaysUp Event Log Messages page explains the more obscure messages.

  • Consult the AlwaysUp FAQ for answers to commonly
    asked questions and troubleshooting tips.

  • Contact us and we will be happy to help!

Автозапуск гостевой виртуальной машины VirtualBox после загрузки хостовой машины на базе Windows реализуется следующим образом.

  1. Узнаем uid гостевой машины, в этом нам поможет файл VBoxManage.exe , который запускаем со следующими атрибутами :

VBoxManage list vms

В командной строке это выглядит следующим образом:

Собственно, данной командой мы вывели список гостевых операционных систем, созданных в VirtualBox’е. В данном случае их две. Рамкой обозначена та машина, для которой необходимо сделать автостарт:

2. Создаем ярлык для автостарта.

Для этого создаем ярлык для VirtualBox.exe и добавляем —startvm с указанием uid гостевой системы. Полностью команда в строке «Объект» будет выглядеть следующим образом:

«C:\Program Files\Oracle\VirtualBox\VirtualBox.exe» —comment «asterisk» —startvm «7c864814-257f-464f-a2d2-cef676a82b73»

3. Добавляем созданный ярлык в автозапуск и радуемся автоматической загрузке гостевых операционных систем VirtualBox!

Вы можете заказать данную услугу, а так же весь спектр услуг по IT-сопровождению вашей компании по телефону: +375 44 7688419 ИП Архипович Виталий Владимирович.

Реализация DI в PHP

Jason-Webb 13.05.2025

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

Обработка изображений в реальном времени на C# с OpenCV

stackOverflow 13.05.2025

Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

CQRS (Command Query Responsibility Segregation) на Java

Javaican 12.05.2025

CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .

Шаблоны и приёмы реализации DDD на C#

stackOverflow 12.05.2025

Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .

This article explains How to Run a Oracle VM Virtualbox in the background in Windows. I have created a virtual machine and has installed nextcloud on it. In this example I will configure the nextCloud Server to automatically start after Windows boots.

To do this we will be creating a simple CMD file and placing it into the startup folder.

Create a CMD file

Right click «Oracle VM VirtualBox» and select «Properties«.

Autostart a Oracle VM Virtualbox during Windows startup

Click «Open File Location«. Virtualbox should be running at C:\Program Files\Oracle\VirtualBox. Inside that folder is a VBoxManage.exe.

Autostart a Oracle VM Virtualbox during Windows startup

We will create a simple CMD file using Notepad. Next Step you define the virtual machine name. You’ll have to change it for your instance. Open virtualbox and find it. In my example the virtual machine is named nextcloud.

Autostart a Oracle VM Virtualbox during Windows startup

The type headless at the end to make it run in the background. Remember to save the file with the extension cmd. For example name it nextcloud.cmd.

C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm NextCloud --type headless

Autostart a Oracle VM Virtualbox during Windows startup

Run a Virtualbox VM in the background

Next open run and type shell:startup.

Autostart a Oracle VM Virtualbox during Windows startup

Then drag-and-drop the your file into startup folder.

Autostart a Oracle VM Virtualbox during Windows startup

At this point nextcloud server should now run during Windows startup.

Facebook: https://www.facebook.com/routerbest

Twitter: https://twitter.com/routerbestcom

Tags: Virtualbox nextcloud Oracle

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Family link for windows
  • Агент windows update уже установлен
  • Почему windows vista провалилась
  • Windows server 2016 сделать сеть частной
  • Veeam agent for windows установка