Служба управления виртуальными машинами VirtualBox
↓ Настройка ↓ Установка ↓ Принцип работы ↓ Загрузка [English version]
Программа является win32 службой, которая позволяет автоматически при старте системы стартовать виртуальные машины VirtualBox и останавливать (выключать, сохранять состояние, переводить в режим сна) при выключении.
Настройка
Конфигурирование производится из .ini файла с таким же именем, как и имя запускного файла службы. Пример конфигурации есть в архиве дистрибутива.
Параметры:
| VboxInstallPath | Директория в которую установлен VirtualBox |
| VboxUserHome | Расположение домашней директории .VirtualBox |
| VmName | Имя виртуальной машины, которой будет управлять служба |
| ShutdownCommand | Команда выключения: poweroff, savestate, acpipowerbutton, acpisleepbutton |
| ServiceName | Описание службы |
| Loglevel | Журнал: 0=Выключен, 1=Включен, 2=Отладочный |
| Priority | Приоритет процесса виртуальной машины: Idle, Below Normal, Normal, Above Normal, High |
Перед установкой службы конфигурационный файл должен быть настроен. Также подразумевается, что все виртуальные машины уже были созданы и сконфигурированы через интерфейс VirtualBox.
Конфигурирование панели управления (vboxctrltray) производится из файла vboxctrltray.ini. Для каждой службы vboxctrl добавьте новую секцию с названием по усмотрению и с помощью параметра ConfigFile задайте расположение файла конфигурации службы. См. пример конфигруации в дистрибутиве.
Установка
Поместите vboxctrl.exe и vboxctrl.ini в любое место по усмотрению.
Для установки службы выполните:
vboxctrl -i
Для удаления службы выполните:
vboxctrl -u
Имя для службы берется из имени запускного файла. Параметр ServiceName задает описание службы.
Для управления несколькими виртуальными машинами сделайте копии файлов vboxctrl.exe и
vboxctrl_copy -iили
vboxctrl_copy -uдля установки или удаления новой службы.
Поместите файлы vboxctrltray.exe и vboxctrltray.ini в любое место по усмотрению. Добавьте в конфигурационный файл vboxctrltray.ini установленные службы управления виртуальными машинами VirtualBox.
При обновлении предыдущей версии обязательно замените все файлы vboxctrl.exe и переустановите службы.
Принцип работы и ограничения
Поскольку VirtualBox запускает виртуальные машины с правами и окружением текущего пользователя, то для запуска его как службы под учетной записью SYSTEM вам пришлось бы создавать и конфигурировать виртуальные машины с помощью интерфейса VirtualBox, запущенного под той же учетной записью SYSTEM. Это не совсем удобно, и простое решение скопировать вашу директорию .VirtualBox (%USERPROFILE%\.VirtualBox) в системный профиль (%SYSTEMROOT%\system32\config\systemprofile) после того, как были созданы и сконфигурированы все виртуальные машины. Но на самом деле, расположение директории .VirtualBox устанавливается с помощью переменной окружения %VBOX_USER_HOME% и если переопределить эту переменную для учетной записи SYSTEM, то копировать директорию .VirtualBox будет не нужно. Это и делает данная служба управления виртуальными машинами.
Но так как VirtualBox блокирует настройки пользователя при запуске, то как только вы стартовали хотя бы одну виртуальную машину с помощью этой службы, любые изменения в конфигурации VirtualBox (например, создание новых или переименование машин) должны производиться от учетной записи SYSTEM. Изменения же, проведённые от текущего пользователя, для службы будут доступны только после останова всех виртуальных машин (выключения или сохранения состояния).
Если необходимо добавить или настроить виртуальную машину, но нет возможности остановить все работающие в этот момент машины, вам нужно будет запустить интерфейс VirtualBox из под учетной записи SYSTEM с помощью программы psexec. Более того, для этого вам необходимо, чтобы хотя бы одна служба управления виртуальными машинами была запущена, чтобы была правильно установлена переменная %VBOX_USER_HOME%. Таким образом, использовать этот метод нужно в том и только том случае, когда запущена хотя бы одна служба управления виртуальными машинами.
Для Windows XP/2003 выполните:
psexec -sdi "%VBOX_INSTALL_PATH%\VirtualBox.exe"
В Windows Vista и Windows 7 появилась изоляция сеанса, в котором работают системные службы от сеанса пользователя (Session 0 Isolation), так что команда будет другая:
psexec -sd -i 0 "%VBOX_INSTALL_PATH%\VirtualBox.exe"после чего нужно нажать на кнопку «Просмотреть сообщение» в диалоговом окне «Обнаружение интерактивных служб».
Примечание для пользователей Windows XP/2003. Если для выключения или сохранения состояния виртуальной машины требуется слишком много времени, Windows завершит сервис, не дожидаясь его корректного завершения. Время, через которое Windows насильно завершает сервис зависит от многих факторов и может быть весьма мало. Если ваши виртуальные машины не успевают остановиться, вам нужно будет вручную останавливать все сервисы управления виртуальными машинами перед выключением или перезагрузкой системы.
Лицензионное соглашение
Это программа является свободным программным обеспечением. Вы можете распространять и/или модифицировать её согласно условиям Стандартной Общественной Лицензии GNU, опубликованной Фондом Свободного Программного Обеспечения, версии 3 или, по Вашему желанию, любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ ВСЯКИХ ГАРАНТИЙ, в том числе подразумеваемых гарантий ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОГО ПРИМЕНЕНИЯ. Смотрите Стандартную Общественную Лицензию GNU для получения дополнительной информации.
Загрузка
Версия 0.4.2 (для VirtualBox 4.1.x):
32-bit: vboxctrl-0.4.2.zip [43.6 КБ] (sha1: 87d7254851b320972c23f63ed1301c53e3212179)
64-bit: vboxctrl64-0.4.2.zip [46.0 КБ] (sha1: 4305ee1d241cbfe0d00ea3bc560970f662aac989)
source: vboxctrl-0.4.2-src.zip [197.6 КБ] (sha1: 000746373121ecfcdf1dfc85207e6d75ea1c4a61)
Версия 0.4.1 (для VirtualBox 4.0.x):
32-bit: vboxctrl-0.4.1.zip [43.3 КБ] (sha1: 67741ca0daab8d9900c6d314c6a1e25c7d96b9e8)
64-bit: vboxctrl64-0.4.1.zip [45.8 КБ] (sha1: b01e371c569cd15969d0fc11b5e191dc48a63337)
source: vboxctrl-0.4.1-src.zip [189.2 КБ] (sha1: b3cbbfdb07e8b039460a29095fb923dade4f73fc)
Версия 0.3.3 (для VirtualBox 3.2.x):
32-bit: vboxctrl-0.3.3.zip [40.6 КБ] (sha1: 68efbc4b17ec8b9c6783fb25c8315225b53546ec)
64-bit: vboxctrl64-0.3.3.zip [43.0 КБ] (sha1: f55f281f3ea864aea5a7313928ae401118e54fd5)
source: vboxctrl-0.3.3-src.zip [153.5 КБ] (sha1: c0dd797dee86a46b8973db32cff93a8ebe001850)
Версия 0.2.0 (для VirtualBox 3.1.8 и ниже):
32-bit: vboxctrl-0.2.0.zip [12.8 КБ] (sha1: 04ea7a9c830e870f430639a12ed44c44e22873be)
64-bit: vboxctrl64-0.2.0.zip [14.6 КБ] (sha1: 0cc3b8f011895d0218f739b24d161bc9a6e147aa)
добавьте пожалуйста tray icon для удобного управления: например запуск\останов\конфиг для каждой ВМ
Добавлено в версии 0.3.0 (работает с VirtualBox 3.2.0 и выше)
Супер, спасибо. Намного удобней VBoxVmService (тем более что у меня этот монстр так и не запустился).
у меня ничо не получилось, хотя она говорит саксесфули, а в логе перед “саксесфулу” пишет:
error updating DACL
версия ОС и полный лог?
Я два дня потратил чтоб добиться работы virtualbox как сервиса. Везде в сети я встречал что профиль систеной учетки лежит вот там %SYSTEMROOT%\system32\config\systemprofile. Но в итоге я понял что профиль таки в другом месте, вон там C:\Documents and Settings\Default User. Скопировав (или можно сделать hardlink) в папку .virtualbox файл VirtualBox.xml всё заработало.
Я не знаю почему все указывают неверный профиль (может вы знаете?). Проверить профиль можно так
psexec -i -d -s cmd
Потом ввести команду set и посмотреть переменную USERPROFILE.
PS
ОС на которой я запустил virtualbox как сервис – windows 2k3 r2 x64.
Не знаю почему и зачем, но на всех 2k3, что я видел, переменная %USERPROFILE% действительно указывает в Default User.
Попробовал использовать вашу софтину. Сервис стартует нормально. А вот управлять сервисом не представляется возможным через иконку в трее. Вот что появляется в логе:
[08/17/10 13:00:54] ERROR opening session (0×80070057)
Если зайти под системную учётку и проверить статус или сделать savestate – всё работает.
Есть еще один вопрос. Я попробовал поднять сервис используя Srvany.exe и Instsrv.exe из Windows Resource Kit. В принципе всё работает. В gpedit.msc я прописал скрипт который должен завершать (savestate) работу виртуалки. Но проблема в том, vboxmanage не видит работу виртуалки. Если зайти под системного пользователя и и выполнить:
vboxmanage showvminfo win2k3dc
То статус – power off. Хотя на самом деле машина работает и по rdp я могу спокойно зайти. Но если запустить ваш сервис и проверить статут – running. Вот и вопрос: что нужно поменять или добавить чтоб vboxmanage из под системной учётки увидел работающую виртуалку под той же учеткой? Ну, если конечно это связано не с программирование. Я не работал с %VBOX_USER_HOME%, т.к. не могу ее где либо встретить… Как ее переопределить? (возможно из-за этого мой вариант не работает).
Как я писал уже у меня у системной учётки профайл лежит -> C:\Documents and Settings\Default User.
Очистите лог файл, установите LogLevel=3 в vboxctrl.ini, переустановите сервис и попробуйте стартануть/остановить его из трея. Ну и лог сюда.
Проблема раз
Установил по новой сервис. Запустил управляющую утилиту. Из нее запустил виртуалку. Запустилась. Потом через нее запустил остановку. В сервисе висит статус “останавка”. Но ничего не происходит.
[08/18/10 04:07:04] ERROR updating service DACL
[08/18/10 04:07:04] Service VB: DC (vboxctrl) installed successfully.
[08/18/10 04:07:15] VirtualBox Control Service v0.3.1.88 started
[08/18/10 04:07:15] Initializing VirtualBox interface
[08/18/10 04:07:15] VirtualBox Interface v3.2.8 initialized
[08/18/10 04:07:15] Using VBOX_USER_HOME: C:\Documents and Settings\Default User\.VirtualBox
[08/18/10 04:07:15] ERROR creating session instance (0×80040154)
[08/18/10 04:07:15] Starting VM ‘dc’
[08/18/10 04:07:15] VM ‘dc’ started
[08/18/10 04:14:17] Stopping (savestate) VM ‘dc’
[08/18/10 04:14:17] ERROR opening session (0×80070057)
Надо зайти удаленно на гостевую ОС и завершить ее. Если запускать и останавливать гостевую ОС через сервис – та же проблема.
Проблема два
Я так понимаю она связана с vrdp. Есть автозапуск VB. Перезагружаю сервер (хост) и как обычно пытаюсь зайти по rdp на хост. И тут я вижу загрузку самого хоста, а может и гостевой ОС. Понять сложно. И там и там одна ОС. Вид такой как быд-то я напрямую работаю с компом, а не через rdp. Только я не знаю как в этом случае передать ctrl+alt+del чтоб в систему зайти. Подождав немного, зайдя на гостевую ОС (через rdp) и вырубя её и после этого уже зойдя на хост начинает работать нормально rdp на хосте.
В сурсах я увидел, что vboxheadless запускается с ключём -v config. Может надо с off? Или дать возможность в конфиге прописать как запускать.
1.1. Какая используется версия vboxctrl? Для 64-битного хоста, естественно, нужно использовать 64-битную.
1.2. Что стоит в vboxctrl.ini для VboxUserHome? Если …\Default User\.VirtualBox, то это не правильно. Весь смысл моего сервиса в том, чтобы держать это в директории пользователя.
1.3. Из под какой учетной записи производилась установка?
2. Порт для VRDP нужно ставить отличный от 3389, и всё будет нормально.
1.1. Ошибся, не то скачал, не обратил внимание с чем работаю…
1.2. Ок, поправил. Хотя можно сделать hardlink на конфиг у себя в профиле туда, в системный профиль. Но конечно проще в конфиге утилиты прописать.
1.3. Администратор домена.
4. теперь понятно.
Просто не той битности использовал в начале софтину. Теперь всё встало на свои места.
У вас ссылка на исходники ведёт на софтину.
спасибо.
большое спасибо за tray icon!
еще сделайте пожалуйста:
- значки вм запущен\остановлен в меню плохо различимы, поярче бы зеленый и черный, или красный;
- нотификацию об ошибках при запуске\работе\останове вм, можно MessageBox или Baloon, например убили процес vboxctrl64.exe с работавшей вм и появляется сообщение;
- Changelog в руской версии;
- пункт меню конфиг для каждой вм, или общий пункт для запуска VirtualBox.exe под правильным профилем;
Супер вещь! Спасибо!
У меня windows 7 я Администратор. vboxctrltray.exe работает только когда “Запуск от имени администратора”… Иначе пишет, “No VirualBox machines running” > “Service access denied”. Что делать? Руками запускать неудобно :(
Очистить лог файл, установить LogLevel=3 в vboxctrl.ini, переустановить сервис(ы). Запустить vboxctrltray.exe без “Запуск от имени администратора”. Показать лог.
[08/25/10 12:32:35] Service VirtualBox for win2003 (vboxctrl64) uninstalled successfully.
[08/25/10 12:32:39] ERROR updating service DACL
[08/25/10 12:32:39] Service VirtualBox for win2003 (vboxctrl64) installed successfully.
А теперь то же самое, но с этой версией. В ней добавлено более информативное журналирование. Ну и лог сюда.
P.S. И так, на всякий случай, хост семерка 64-бит? Находится ли в домене?
[08/26/10 12:57:09] Service VirtualBox for win2003 (vboxctrl64) uninstalled successfully.
[08/26/10 12:57:19] ERROR creating ACL (0x000c0037)
[08/26/10 12:57:19] ERROR updating service DACL
[08/26/10 12:57:19] Service VirtualBox for win2003 (vboxctrl64) installed successfully.
1. Хост 64-бит.
2. Не в домене.
Прошу прощения, допустил ошибку в той тестовой версии. Ещё раз то же самое. Ссылка та же.
[08/31/10 02:38:26] Service VirtualBox for win2003 (vboxctrl64) uninstalled successfully.
[08/31/10 02:38:42] ERROR creating ACL (0×00000534, 0×00000534)
[08/31/10 02:38:42] ERROR updating service DACL
[08/31/10 02:38:42] Service VirtualBox for win2003 (vboxctrl64) installed successfully.
ок, спасибо.
Протестируйте, пожалуйста, новую версию: vboxctrl64-0.3.2.zip. В ней это должно быть исправлено.
Спасибо!
Работает!
не нужно менять номер порта RDP. надо просто прописать жестко IP адрес в виртуальном хосте и все будет подключаться без проблем.
это к чему вообще? Если к тому, что VRDP порт можно оставить 3389, то это таки не правильно. И какое отношение к нему имеет IP адрес виртуальной машины? В виртуальной машине вообще может не быть ни одного сетевого адаптера, они для VRDP не нужны.
Здравствуйте!
Не могу настроить vboxctrltay.
Вроде все правильно настроено, но в меню vboxctrltay на против каждого сервиса пишется “Not configured”.
На что мне обратить внимание?
vboxctrltay.ini:
[VirtualBOX Windows]
ConfigFile=vboxctrl64.ini
[VirtualBOX AltLinux]
ConfigFile=vboxctrl64_altlinux.ini
Обратить внимание на пример конфигурационного файла, в котором указан полный путь к конфигурационным файлам vboxctrl, а не просто имя.
После установки 4 версии virtualbox имею следующую ошибку в логе:
ERROR creating VirtualBox instance (rc = 0×80004002)
До этого все работало как часы.
Похоже, что-то поменяли в параметрах запуска машины из VBoxHeadless.
Сильно поменялся API. На то оно и major update.
С 4-й версией пока не совместимо.
Жаль…
Можно надеяться на новую версию в ближайшее время?
Весьма вероятно, что в этом году не успеется.
А надеяться то всегда можно ;)
После более детального изучения, оказалось что старые грязные хаки, к моему удивлению, продолжают работать и в 4.0.
Так что надежды оправдались, обновлено до 0.4.
Для VirtualBox 3.2.х следует по прежнему использовать vboxctrl 0.3.3.
Огромное спасибо за оперативность!
И вообще за программку, очень полезная штука!
Имеется следующая проблема – при работе сервиса через некоторое время (ориентировочно неск. минут) ОС перестает определять изменение состояния USB устройств, т.е. если сразу после загрузки было подключено любое USB устройство, то через 10 минут ОС перестает определять факт его извлечения, а также новые вставленные устройства. При этом если устройства не трогать, то они функционируют нормально. При попытке безопасного извлечения ОС пишет, что устройство используется. После остановки службы и перезагрузки проблема исчезает.
ОС: Windows 7 HP 64
Virtualbox – 3.2, 4.0
Просто спасибо! :) Пользуюсь уже более полугода, никаких проблем не встечал ни в XP, ни в Vista, ни в W7 :)
Добавьте пожалуйста сброс\перезагрузку виртуалки в меню.
У меня стоит сохранение состояния при выключении, и если в виртуалке виснет винда то ни AcpIPower ни PowerOff не сбрасывают ее – после включения вижу тот же зависший экран.
При этом в родном менеджере тоже не могу сбросить состояние:
- если запускать под собой то он даже не видит что она запущена;
- если запускать psexec -sdi “%VBOX_INSTALL_PATH%\VirtualBox.exe” то видит что запущена, но кнопка Сбросить неактивна, активна только Пауза;
- если запускать psexec -sd -i 0 “%VBOX_INSTALL_PATH%\VirtualBox.exe” то процесс появляется но вообще никаких окон нет… хотя это вроде рекомендованный способ для вин7.
vboxctrl64-0.4.1
VirtualBox-4.0.4-70112
Win 7 x64
Если проблема есть даже с родной оболочкой, то проблема с самим вбоксом, а не с vboxctrl. И при возникновении подобных проблем нужно остановить все сервисы vboxctrl. Подождать 10 секунд (или для пущей надежности перезагрузится, отключив автозапуск сервисов vboxctrl) и запустить родной интерфейс VirtualBox. Оттуда уже посбрасывать состояния машин, которые не запускаются и вообще проверить что машинки работают. Потом закрыть VirtualBox и снова минимум через 10 секунд можно запускать службы.
win7 x64 / vboxctrl 0.1.4.112 / VB 4.0.8 r71778
Не могу настроить. Установил сервис, если попробовать запустить из “Службы” то пишет “Не удалось запустить службу VirtualBox Mps-server на Локальный компьютер. Ошибка 5: Отказано в доступе”. Запуск из vboxctrltray ни к чему не приводит.
Первое что нужно сделать — переустановить сервис (очистив предварительно лог):
vboxctrl -u
vboxctrl -i
И показать что в логе, если это не решит проблему.
(ну и убедиться, что используется 64-битная версия vboxctrl)
Еще все действия желательно выполнять в привилегированном режиме (запустить от Администратора, в нашем случае нужно запускать консоль от администратора и в ней набирать команды).
1. Версия для x64 (Windows 7 у меня x64)
2. Консоль запустил от администратора
—-
D:\mps-server\vboxctrl>vboxctrl64_mps_server -i
VirtualBox Mps-server (vboxctrl64_mps_server) service installed successfully.
—-
3. Запустил vboxctrltray, там пробую запустить. И тишина.
4. Лог
—-
[06/02/11 15:42:04] Service VirtualBox Mps-server (vboxctrl64_mps_server) installed successfully.
—-
Больше в лог ни чего не пишет вообще. Пробовал с разными Loglevel.
Далее ini:
<<>>
[mps-srv]
ConfigFile=D:\mps-server\vboxctrl\vboxctrl64_mps_server.ini
<<>>
[VBoxCtrl]
VboxInstallPath=C:\Program Files\Oracle\VirtualBox
VboxUserHome=C:\Users\Толя\.VirtualBox
VmName=mps_server
ShutdownCommand=savestate
ServiceName=VirtualBox Mps-server
Loglevel=3
Priority=Normal
Пользователь, который запускает vboxctrltray имеет доступ на запись в D:\mps-server\vboxctrl\ ?
Что есть по поводу vboxctrl в Event Log?
Переложил все на C: (C:\Program Files\vboxctrl) и вот:
[06/02/11 16:30:52] Service VirtualBox Mps-server (vboxctrl64_mps_server) installed successfully.
[06/02/11 16:30:56] VirtualBox Control Service v0.4.1.112 (x64) started
[06/02/11 16:30:56] Initializing VirtualBox interface
[06/02/11 16:30:57] VirtualBox Interface v4.0.8 initialized
[06/02/11 16:30:57] Using VBOX_USER_HOME: C:\Users\
[06/02/11 16:30:57] Starting VM ‘mps-server’
[06/02/11 16:30:57] VM ‘mps-server’ started
[06/02/11 16:30:58] VM ‘mps-server’ stopped by itself
[06/02/11 16:30:58] Closing VirtualBox interface
PS в прошлых экспериментах по мимо другого диска была ошибка “mps_server” вместо “mps-server”.
похоже ему не нравятся русские буквы в “C:\Users\Толя\.VirtualBox”…
На сколько я понимаю, это он только в логе обрезает. Во всяком случае у меня всё запустилось с русским логином нормально.
А с родного VirtualBox GUI эта машина стартует? При «VM ‘mps-server’ stopped by itself» в логе обычно этого не происходит. Плюс в Event Log чего-то пишет.
Через GUI стартует.
Event Log (XML):
-
-
7036
0
4
0
0
0×8080000000000000
21612
System
t
-
VirtualBox Mps-server
Остановлена
760062006F0078006300740072006C00360034005F006D00700073005F007300650072007600650072002F0031000000
Настроил запуск сервиса от своего имени, и стало работать!
Ну это как бы не совсем правильно.
Впечатление, что у SYSTEM нет доступа каким-то файлам сервиса/виртуальной машины.
покажите вот этот конфиг D:\mps-server\vboxctrl\vboxctrl64_mps_server.ini
vu1tur, перемести пожалуйста этот коммент под коммент o08.ya.ru/ (2011-06-02 15:15:50 )
теперь экспериментирую на C:
[VBoxCtrl]
VboxInstallPath=C:\Program Files\Oracle\VirtualBox
VboxUserHome=C:\Users\Толя\.VirtualBox
VmName=mps-server
ShutdownCommand=savestate
ServiceName=VirtualBox Mps-server
Loglevel=3
Priority=Normal
скачав это ПО, я настроил все конфиги, получаю такой вот лог
[06/25/11 00:41:39] Service VirtualBox ubuntu-server (vboxctrl) installed successfully.
[06/25/11 00:41:54] VirtualBox Control Service v0.4.1.112 (x64) started
[06/25/11 00:41:54] Initializing VirtualBox interface
[06/25/11 00:41:54] VirtualBox Interface v4.0.8 initialized
[06/25/11 00:41:54] Using VBOX_USER_HOME: C:\Users\daedra\.VirtualBox
[06/25/11 00:41:54] Starting VM ‘ubuntu-server’
но почему, я не могу подключиться, используя RDP ?
хотя, если я запускаю виртуальные машины через сам VirtualBox, то коннект через RDP проходит на ура.
Как можно объяснить сей факт?
Подскажите что делаю не так
Система Windows 2003 r2 установлен VirtualBox 4.0.8 установлена и настроена виртуальная машина. Запуск через интерфейс VB проблем не испытывает.
Установлен сервис
vboxctrl_copy -i
через трей пытаюсь запустить вываливается ошибка
[07/01/11 15:32:35] VirtualBox Control Service v0.4.1.112 started
[07/01/11 15:32:35] Initializing VirtualBox interface
[07/01/11 15:32:35] VirtualBox Interface v4.0.8 initialized
[07/01/11 15:32:35] Using VBOX_USER_HOME: C:\Documents and Settings\
[07/01/11 15:32:35] ERROR: Could not find registered VM ‘win2003_sdo’
[07/01/11 15:32:35] Closing VirtualBox interface
содержание vboxctrl.ini
[VBoxCtrl]
VboxInstallPath=c:\Program Files\Oracle\VirtualBox\
VboxUserHome=C:\Documents and Settings\Администратор\.VirtualBox
VmName=win2003_sdo
ShutdownCommand=poweroff
ServiceName=VirtualBox VirtualMachineName
Loglevel=3
Priority=Normal
Как мне указать где находиться виртуальная машина?
Во-первых, VmName=win2003_sdo — это должно быть в точности именем виртуальной машины, как указано через интерфейс VirtuallBox
Во-вторых, если сервис установлен как «vboxctrl_copy -i», то конфигурационный файл должен называться vboxctrl_copy.ini
В-третьих, нужно не забывать что интерфейс VirtualBox содзает блокировки, и соответственно перед запуском через tray helper выгружать его (и остановить все виртуальные машины, запущенные через него).
Уже отстроенная виртуальная машина в вашем сервисе останавливается еще на старте.
[07/24/11 18:28:15] VirtualBox Control Service v0.4.2.114 (x64) started
[07/24/11 18:28:15] Initializing VirtualBox interface
[07/24/11 18:28:15] VirtualBox Interface v4.1.0 initialized
[07/24/11 18:28:15] Using VBOX_USER_HOME: C:\Documents and Settings\alto\.VirtualBox
[07/24/11 18:28:15] Starting VM ‘VPC’
[07/24/11 18:28:15] VM ‘VPC’ started
[07/24/11 18:28:16] VM ‘VPC’ stopped by itself
[07/24/11 18:28:16] Closing VirtualBox interface
Хотя в родной консоли стартует и работает на ура. На хосте живет win2008 R2, соответствено там x64.Гостевая winXP SP3 x32.
Стартово ставил VirtualBox-4.0.12-72916-Win.exe и vboxctrl64-0.4.1.zip, с аналогичным логом запуска вашей программы выше и самого бокса:
VirtualBox 4.1.0 r73009 win.amd64 (Jul 19 2011 13:05:53) release log
00:00:00.093 Log opened 2011-07-24T11:12:29.331343100Z
00:00:00.093 OS Product: Windows 7
00:00:00.093 OS Release: 6.1.7601
00:00:00.093 OS Service Pack: 1
00:00:00.113 DMI Product Name: System Product Name
00:00:00.119 DMI Product Version: System Version
00:00:00.124 Host RAM: 8183MB RAM, available: 5677MB
00:00:00.124 Executable: C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe
00:00:00.124 Process ID: 1508
00:00:00.124 Package type: WINDOWS_64BITS_GENERIC
00:00:00.124 Installed Extension Packs:
00:00:00.124 Oracle VM VirtualBox Extension Pack (Version: 4.1.0 r73009; VRDE Module: VBoxVRDP)
00:00:00.127 SUP: Opened VMMR0.r0 (C:\Program Files\Oracle\VirtualBox\VMMR0.r0) at 0xfffff8800a601000.
00:00:00.127 SUP: windbg> .reload /f C:\Program Files\Oracle\VirtualBox\VMMR0.r0=0xfffff8800a601000
00:00:00.167 File system of ‘C:\Users\alto\VirtualBox VMs\VPC\Snapshots’ (snapshots) is ntfs
00:00:00.193 File system of ‘D:\VBox\XP\XP.vdi’ is ntfs
00:00:00.405 AssertLogRel E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3893) Console::configNetwork:
00:00:00.405 NetworkAttachmentType_Bridged: FindByName failed, rc=E_INVALIDARG (0×80070057)VMSetError: E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3894) Console::configNetwork; rc=VERR_INTERNAL_ERROR
00:00:00.405 VMSetError: Nonexistent host networking interface, name ‘Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)’
00:00:00.531 ERROR [COM]: aRC=E_FAIL (0×80004005) aIID={1968b7d3-e3bf-4ceb-99e0-cb7c913317bb} aComponent={Console} aText={Nonexistent host networking interface, name ‘Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)’ (VERR_INTERNAL_ERROR)}, preserve=false
00:00:00.595 Power up failed (vrc=VERR_INTERNAL_ERROR, rc=E_FAIL (0X80004005))
На свежих версиях, как видно невооруженным глазом, ситуация не изменилась. Вывод ipconfig /all говорит о нужном мне интерфейсе вот так:
Description . . . . . . . . . . . : Сетевая карта Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
Разница в “описании” сетевой карты “описания” самой машины, на любых других интерфейсах (англоязычных) свободно стартует. Но родная консоль вполне себе ест свое же описание из выпадающего списка настроек самой машины и работает. Вылечилось ручной правкой настроек самой виртуальной машины:
т.е. я дописал руками “Сетевая карта” в utf8 описание машины. У Вас где-то пропущен момент с локалью или кодировкой строк, чем могу, помогу, что донастроить?
Как-то я не понял вашего «фикса». У меня нет русскоязычных сетевых интерфейсов, да и серваки под руками все английские, сам не могу сейчас смоделировать.
Вот если с нуля — создаем виртуальную машину через GUI, добавляем виртуальную сетевую, выбираем, скажем, Bridged Adapter и линкуем её с «Сетевая карта…». Сохраняем машинку, закрываем GUI и смотрим в .xml файл виртуальной машины — как выглядит <BridgedInterface …>? Если его имя хоть как-то не совпадает с реальным именем интерфейса, то машина даже через GUI стартовать не сможет. Потому я не могу понять, как дописывание туда чего-либо может что-то исправить. По-моему только сломать.
В выпадающем списке настроек машины нужный интерфейс стоит без этой приписки, соответственно и в описание машины попадает вот так:
и с этим описанием машина нормально стартует из родного графического интерфейса. В случае запуска из под сервиса сразу получаем завершение работы машины с логом, что я привел выше (хотя с другими полностью англоязычными интерфейсами все работает нормально). Танцы с бубном привели к тому, что заработала машина под сервисом только после того как я привел описание к виду:
в utf8
Поело текст из-за скобок.
В выпадающем списке настроек машины нужный интерфейс стоит без этой приписки, соответственно и в описание машины попадает вот так:
BridgedInterface name=”Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)”
и с этим описанием машина нормально стартует из родного графического интерфейса. В случае запуска из под сервиса сразу получаем завершение работы машины с логом, что я привел выше (хотя с другими полностью англоязычными интерфейсами все работает нормально). Танцы с бубном привели к тому, что заработала машина под сервисом только после того как я привел описание к виду:
BridgedInterface name=”Сетевая карта Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)”
в utf8
По поводу сломать, забыл сказать, что через GUI теперь действительно машина не стартует с обратным логом:
VirtualBox 4.1.0 r73009 win.amd64 (Jul 19 2011 13:05:53) release log
00:00:00.547 Log opened 2011-07-25T03:50:35.227889700Z
00:00:00.547 OS Product: Windows 7
00:00:00.547 OS Release: 6.1.7601
00:00:00.547 OS Service Pack: 1
00:00:00.551 Host RAM: 8183MB RAM, available: 5859MB
00:00:00.551 Executable: C:\Program Files\Oracle\VirtualBox\VirtualBox.exe
00:00:00.551 Process ID: 5624
00:00:00.551 Package type: WINDOWS_64BITS_GENERIC
00:00:00.551 Installed Extension Packs:
00:00:00.551 Oracle VM VirtualBox Extension Pack (Version: 4.1.0 r73009; VRDE Module: VBoxVRDP)
00:00:00.564 SUP: Loaded VMMR0.r0 (C:\Program Files\Oracle\VirtualBox\VMMR0.r0) at 0xfffff8801e8cc000 – ModuleInit at fffff8801e8e2940 and ModuleTerm at fffff8801e8e29d0 using the native ring-0 loader
00:00:00.564 SUP: VMMR0EntryEx located at fffff8801e8e3970, VMMR0EntryFast at fffff8801e8e2bc0 and VMMR0EntryInt at fffff8801e8e2bb0
00:00:00.564 SUP: windbg> .reload /f C:\Program Files\Oracle\VirtualBox\VMMR0.r0=0xfffff8801e8cc000
00:00:00.597 File system of ‘C:\Users\dpn\VirtualBox VMs\VPC\Snapshots’ (snapshots) is ntfs
00:00:00.598 File system of ‘D:\VBox\XP\XP.vdi’ is ntfs
00:00:00.866 AssertLogRel E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3893) Console::configNetwork:
00:00:00.866 NetworkAttachmentType_Bridged: FindByName failed, rc=E_INVALIDARG (0×80070057)VMSetError: E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3894) Console::configNetwork; rc=VERR_INTERNAL_ERROR
00:00:00.866 VMSetError: Nonexistent host networking interface, name ‘Сетевая карта Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)’
00:00:00.992 ERROR [COM]: aRC=E_FAIL (0×80004005) aIID={1968b7d3-e3bf-4ceb-99e0-cb7c913317bb} aComponent={Console} aText={Nonexistent host networking interface, name ‘Сетевая карта Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)’ (VERR_INTERNAL_ERROR)}, preserve=false
00:00:01.064 Power up failed (vrc=VERR_INTERNAL_ERROR, rc=E_FAIL (0X80004005))
но зато работает под сервисом:
[07/25/11 10:52:43] VirtualBox Control Service v0.4.2.114 (x64) started
[07/25/11 10:52:43] Initializing VirtualBox interface
[07/25/11 10:52:44] VirtualBox Interface v4.1.0 initialized
[07/25/11 10:52:44] Using VBOX_USER_HOME: C:\Documents and Settings\dpn\.VirtualBox
[07/25/11 10:52:44] Starting VM ‘VPC’
[07/25/11 10:52:44] VM ‘VPC’ started
лог самого бокса имеет смысл приводить? он здоровый при успешном запуске.
Нет, успешный лог не нужен.
Какой родной язык хоста? Какой язык интерфейса стоит у пользователя? Если я правильно понял проблему, то скорее всего язык системы русский (соответственно локаль учетки SYSTEM тоже русская), а язык интерфейса пользователя английский. Потому машина отстроенная от учетки пользователя не запускается от SYSTEM. Если это так, то я склонен считать это не глюком, а недофичей. Выходов два — настраивать виртуальную машину из под SYSTEM (через psexec) или иметь одинаковые языковые настройки с системой.
И действительно.
Control panel -> Region and language -> Keyboards and Languages -> Display language
Панель управления -> Язык и региональные стандарты -> Языки и клавиатуры -> Язык интерфейса
В моем случает действительно стояла английская локаль, а системная русская. Переключил и перелогинился. Теперь в настройке сетевой карты виртуальной машины появилась:
‘Сетевая карта Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)’
И виртуальная машина ведет себя адекватно и при запуске в родном гуи и при запуске через ваш сервис.
Спасибо Вам большое.
Обновился, и все перестало работать. при старте винды выпадает ошибка что память не может быть read.
windows xp sp3
в логах:
[07/26/11 10:27:02] ERROR creating VirtualBox instance (rc = 0×80004002)
пришлось откатиться до предыдущей версии
Там выше указано — Версия 0.4.2 (для VirtualBox 4.1.x)
Т.е. если используется предыдущая ветка VirtualBox 4.0.x, то следует оставаться на vboxctrl 0.4.1.
Здраствуйте, такая проблема: настроил две виртуалки, длительное время все работало отлично. Вот где-то с неделю назад начала одна виртуалка падать, вторая работает по прежнему без сбоев. Может что подскажете куда копать, что смотреть? win 2008×32
Доброго времени суток.
У меня проблема почти как у Альт’а.
Интерфейс называется “Адаптер мини-порта виртуального WiFi Microsoft” в гуе и в конфиге прописывается верно. Через гуй всё стартует. Так же если запускать VBoxHeadless.exe” -s “vmubuntu_1″ тоже всё работает.
А вот после vboxctrl в логе появляется
00:00:00.399 AssertLogRel E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3903) Console::configNetwork:
00:00:00.399 NetworkAttachmentType_Bridged: FindByName failed, rc=E_INVALIDARG (0×80070057)VMSetError: E:\tinderbox\win-rel\src\VBox\Main\src-client\ConsoleImpl2.cpp(3904) Console::configNetwork; rc=VERR_INTERNAL_ERROR
00:00:00.399 VMSetError: Nonexistent host networking interface, name ‘Адаптер мини-порта виртуального WiFi Microsoft’
00:00:00.401 ERROR [COM]: aRC=E_FAIL (0×80004005) aIID={1968b7d3-e3bf-4ceb-99e0-cb7c913317bb} aComponent={Console} aText={Nonexistent host networking interface, name ‘Адаптер мини-порта виртуального WiFi Microsoft’ (VERR_INTERNAL_ERROR)}, preserve=false
00:00:00.443 Power up failed (vrc=VERR_INTERNAL_ERROR, rc=E_FAIL (0X80004005))
00:00:00.620 VRDP: TCP server closed.
Запарился :(((((
—————————-
[VBoxCtrl]
VboxInstallPath=”C:\Program Files\Oracle\VirtualBox”
VboxUserHome=”c:\Users\BlackWarrior\.VirtualBox\
VmName=jetSurf
ShutdownCommand=acpipowerbutton
ServiceName=JetSurf4Twinkli
Loglevel=3
Priority=Below Normal
——————————-
[11/30/11 12:37:02] Service JetSurf4Twinkli (vboxctrl64) installed successfully.
[11/30/11 12:37:36] VirtualBox Control Service v0.4.2.114 (x64) started
[11/30/11 12:37:36] Initializing VirtualBox interface
[11/30/11 12:37:36] ERROR creating VirtualBox instance (rc = 0×80004005)
—————————————
Windows7 x64
VirtualBox 4.1.6r74713
Где я косячу?
А в EventLog что?
[11/30/11 12:37:02] Service JetSurf4Twinkli (vboxctrl64) installed successfully.
[11/30/11 12:37:36] VirtualBox Control Service v0.4.2.114 (x64) started
[11/30/11 12:37:36] Initializing VirtualBox interface
[11/30/11 12:37:36] ERROR creating VirtualBox instance (rc = 0×80004005)
Это лог vboxctrl. А я про Event Log (Administrative Tools\Event Viewer).
Имя сбойного приложения: vboxctrl64.exe, версия: 0.4.2.114, отметка времени: 0x4e2858e8
Имя сбойного модуля: msvcrt.dll, версия: 7.0.7600.16385, отметка времени 0x4a5bdfbe
Код исключения: 0xc0000409
Смещение ошибки: 0x000000000004623b
Идентификатор сбойного процесса: 0×1570
Время запуска сбойного приложения: 0x01ccdb3550dbbf30
Путь сбойного приложения: d:\MySoftware\Tools\VBoxCtrl\vboxctrl64.exe
Путь сбойного модуля: C:\Windows\system32\msvcrt.dll
Код отчета: 8e91cf90-4728-11e1-93ca-001d92320933
Не факт что эта ошибка относится именно к ERROR creating VirtualBox instance (rc = 0×80004005).
В Event Log может быть много всяческого, что может подсказать в чем дело. И искать нужно что-то относящееся скорее к VirtualBox, а не vboxctrl. Можно попробовать переустановить VirtualBox, чтобы он перерегил свои COM интерфейсы.
Сегодня схема моей сети немного изменилась. Пропал “Адаптер мини-порта виртуального WiFi Microsoft” + обновил вируалюлкс.
Програмка заработала. Думаю помогло первое.
Скажите, пожалуйста, а зачем vboxctrltray.exe лазит на ip 80.91.191.101?
http://s017.radikal.ru/i442/1201/b7/022e149764cf.png
Это проверка наличия обновлений. Обращается по адресу http://vu1tur.eu.org/updatecheck/vboxctrl