LinuxForum.Fans
Тема

Запуск VirtualBox'а как сервиса

Автор: Cruiser78 22 сообщений 18089 просмотров
#30641

Добрый день!

Есть RFRemix12.x64. Есть сановский VirtualBox (http://www.thg.ru/software/linux_windows_xp_virtualbox/index.html). Ставится, настраивается и работает безпроблемно. Есть несколько приложений серверного класса под Windows, отказываться от которых нет возможности. Есть лицензионной сервер Win 2000 SMB (small bisnes чего-то там). Естественное решение - Вынь 2000 сервер ставим в VirtualBox. С этим проблем не жду. Но пока непонятно следующее - как сделать так, чтобы сантехнический VirtualBox поднимался как сервис при старте сервера (перезагрузки возможны, по питанию, например) на полном автомате и запускал в своих нутрях мой Windows... Естественно при штатном ребуте его аккуратно укладывал баиньки... Сервис vboxdrv по дефолту включен. А вот как стартовать сам VB? Точнее - что надо прописать в скрипте в /etc/init.d/ для автоматического старта и корректного останова этой службы? Задачка то типовая...

========================================
решения тут:

http://www.howtoforge.com/vboxheadless-running-virtual-machines-with-virtualbox-3.1.x-on-a-headless-fedora-12-server

#30649

Cruiser78,
А почему бы не заюзать VmWare Server? Он тоже бесплатный, работать может как сервис, поддерживает коннекты извне и т д, и т п

#30653
Hvzh написал:
Cruiser78,
А почему бы не заюзать VmWare Server? Он тоже бесплатный, работать может как сервис, поддерживает коннекты извне и т д, и т п

тяжёлый очень и неудобный.

#30656

запуск виртуальной машины в консоли:
see VBoxManage, VBoxHeadless
examples:
VBoxManage startvm -type=headless <vms name|id>

а так же здесь смотри и Оф.Док. Autostart a vm on startup

#30666
i2ks написал:
запуск виртуальной машины в консоли:
see VBoxManage, VBoxHeadless
examples:
VBoxManage startvm -type=headless <vms name|id>

а так же здесь смотри и Оф.Док. Autostart a vm on startup

Увы...

text
# VBoxManage startvm -type=headless WinXP
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

ERROR: Could not find a registered machine named 'WinXP' Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee nsISupports Context: "FindMachine(Bstr(VMName), machine.asOutParam())" at line 357 of file VBoxManageMisc.cpp

И что не так? Машина с именем WinXP создана и в гуях видна... И даже запускается. И в логах пишется имено с этим именем... Где собака зарылась?

#30667

покажите VBoxManage list vms

#30669
i2ks написал:
покажите VBoxManage list vms

Эту мысль я уже успел подумать. Показывать нечего. Ибо пусто.

text

# VBoxManage list vms
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

#

И как его насытить???

#30671

Это говорит о том что не зарегистрированно ни одной машинки в системе. # VBoxManage list vms Вы от root запускаете все свои ВМ? oO


$VBoxManage list vms
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.


"WinXPSP2" {5fb086a1-d0ee-4d10-8db4-70d71e6ea3c5}


VBoxManage showvminfo WinXPSP2

text

$ VBoxManage showvminfo WinXPSP2
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Name: WinXPSP2 Guest OS: Windows XP UUID: 5fb086a1-d0ee-4d10-8db4-70d71e6ea3c5 Config file: /Users/nb-bv/Library/VirtualBox/Machines/WinXPSP2/WinXPSP2.xml Hardware UUID: 5fb086a1-d0ee-4d10-8db4-70d71e6ea3c5 Memory size: 256MB VRAM size: 32MB Number of CPUs: 1 Synthetic Cpu: off CPUID overrides: None Boot menu mode: message and menu Boot Device (1): HardDisk Boot Device (2): DVD Boot Device (3): Not Assigned Boot Device (4): Not Assigned ACPI: on IOAPIC: off PAE: off Time offset: 0 ms Hardw. virt.ext: on Hardw. virt.ext exclusive: off Nested Paging: off VT-x VPID: off State: saved (since 2010-04-21T09:02:42.000000000) Monitor count: 1 3D Acceleration: on 2D Video Acceleration: on Teleporter Enabled: off Teleporter Port: 0 Teleporter Address: Teleporter Password: Storage Controller Name (0): IDE Controller Storage Controller Type (0): PIIX4 Storage Controller Instance Number (0): 0 Storage Controller Max Port Count (0): 2 Storage Controller Port Count (0): 2 Storage Controller Name (1): Floppy Controller Storage Controller Type (1): I82078 Storage Controller Instance Number (1): 0 Storage Controller Max Port Count (1): 1 Storage Controller Port Count (1): 1 IDE Controller (0, 0): /Users/nb-bv/Library/VirtualBox/HardDisks/WinXPSP3.vdi (UUID: ff02031d-b9aa-49a0-9008-64e6cd19cdaa) IDE Controller (1, 0): /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso (UUID: 49ef5429-5035-4ab6-95c4-ee18eb4491ee) Floppy Controller (0, 0): Empty NIC 1: MAC: 080027E67732, Attachment: Bridged Interface 'en0: Ethernet', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps NIC 2: disabled NIC 3: disabled NIC 4: disabled NIC 5: disabled NIC 6: disabled NIC 7: disabled NIC 8: disabled UART 1: disabled UART 2: disabled Audio: enabled (Driver: CoreAudio, Controller: AC97) Clipboard Mode: Bidirectional VRDP: disabled USB: enabled

USB Device Filters:

<none>

Shared folders:

Name: 'tmp', Host path: '/Users/nb-bv/tmp' (machine mapping), writable

Guest:

Statistics update: disabled

#30679
i2ks написал:
Это говорит о том что не зарегистрированно ни одной машинки в системе. # VBoxManage list vms Вы от root запускаете все свои ВМ? oO

1.Конечно от рута. Разве по символу # это не видно?
2. То, что оно не зарегестрировано - понятно. Непонятно почему оно не регистрируется на автомате, когда в гуях машина создается и имя ей определяется... Зарегистрировал руками:

text

VBoxManage createvm --name "WinXP" --register

Сам VB стартовать начал, а вот дальше - не может ось загрузить... Ну, направление поиска решения понятно...

Решение почти найдено. В непонятно пока мне где хранящемся конфиге путь к образу виртуальной машины определен как ~\.VirtualBox.... То есть идет от домашнего каталога текущего пользователя. Если я рут, то от /root, если alex, то от /home/alex.

Крайний вопрос совсем простой - как научить "загрузчик" (/etc/init.d) запускать VB с нужной машиной из фиксированного места. Ведь если запускать VB на старте оси, то юзера еще нет и неизвестно, когда он (и кем) придет. И потом - как в то гуевое окно переключиться, когда юзер с консоли зарегистрируется?

#30680

Cruiser78, вы в gui так же под root работаете? :[

Cruiser78 написал:
Сам VB стартовать начал, а вот дальше - не может ось загрузить... Ну, направление поиска решения понятно...

от пользователя дайте вывод команд то что я вам привел

#30729
i2ks написал:
Cruiser78, вы в gui так же под root работаете? :[
...
от пользователя дайте вывод команд то что я вам привел

1. Естественно не от root'a работаю. Просто по потребности переключаюсь через su. Так что root не гуевый, а консольный.
2. У меня не такой большой опыт работы в юниксе, чтобы сообразить, как сделать вывод команд от нужного юзера. Как запустить процесс от юзера в кроне - знаю. А вот как из скрипта - нет. Прошу помощи зала :-)

#30730
Cruiser78 написал:
А вот как из скрипта - нет. Прошу помощи зала :-)
text
NAME=evil-daemon
DAEMON=/usr/bin/$NAME
USER=system-root

. /lib/lsb/init-functions

start_daemon () { if [ $ENABLE_DAEMON != 1 ]; then log_progress_msg "(disabled, see /etc/default/${NAME})" else start-stop-daemon --start \ --chuid $USER \ --exec $DAEMON -- $OPTIONS fi }

как то так.

#30742
system-root написал:
как то так.

Нашел вариант много проще:

text
su Username -c JOB

То есть пишем в /etc/rc5.d/S99...

text

su alex -c "VboxManage startvm WinXP"

И вроде должны иметь удовольствие. Но имеем в boot.log следующее:

text
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Waiting for the remote session to open... ERROR: Virtual machine 'WinXP' has terminated unexpectedly during startup Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine, callee <NULL>

Итак, как запусить этот самый VirtualBox не руками, а автоматом, при загрузке операционной системы? Как отвязать этот VB от сеанса конкретного юзера?

#30795

Cruiser78, вы не понимаете то что вы делаете, у вас етсь виртуальная машинка, вы создали ее? где она? покажите ее свойства? я пример уже привел то что должно получится

#30919
i2ks написал:
Cruiser78, вы не понимаете то что вы делаете, у вас етсь виртуальная машинка, вы создали ее? где она? покажите ее свойства? я пример уже привел то что должно получится

Я прекрасно понимаю, что делаю. Так как если я чего не понимаю, то того и не делаю :-). Ибо можно работающую систему сломать так, что с нуля переустанавливать придется. Это первое. Второе - виртуальная машина создана. В неё накачена WindowsXP. И проверена её работоспособность путем запуска в ней задачи 1С-Предприятие на весьма тяжелой базе (как стендовой, так и находящейся в промышленной эксплуатации).
Третье. Проблемы заключаются в том, что в моем (возможно уникальном) случае при создании виртуальной машины она не зарегистрировалась там, где ждет её регистрации VBoxManage. То есть его регистрационная база оказалась пуста. Но эта засада была быстро преодолена явной регистрацией в этой базе созданной гуевым "мастером" виртуальной машины. Таким образом виртуальную машину стало возможно поднимать "с руки", прописав её запуск и корректный останов в какой-либо скрипт. Это проверено и работает.

А вот четвертое - самое мне пока непонятное: у меня стоит задача не просто запустить виртуальную машину, а запустить её на СЕРВЕРЕ, то есть компьютере, к которому мало кто подходит (даже ремутно). Причем запустить её таким образом, чтобы после внештатного рестарта (ИБП скомандует, например) эта виртуальная машина полностью поднялась в автоматическом режиме. И вот как это сделать - я пока не понимаю. Как запустить гуевую задачу, внутри которой крутится тоже не терминал, как демона. И при необходимости вывести эту задачу в foreground, чтобы поуправлять теми гуями, что в ней крутятся, тем же Win2000-сервером. Ну нужен он мне для поддержки нескольких задач. А компьютер отдельный под это дело выделять не хочу. Как не хочу запускать эту виртуальную машину с сервером руками... Этот сервер должен быть "малообслуживаемым". Остановить её по команде с ИБП, с NUT'а я понимаю как (просто надо написать простой скрипт в две строчки:

text

service vboxdrv stop_vm # как-то так, точнее сейчас не скажу
poweroff 

А вот как её стартовать корректно?... Особенно когда к "консоли" никто оперативно не подойдет.

=================================
Решение, похоже, нашел. Английским по понятному. Завтра протестирую...

http://www.howtoforge.com/vboxheadless-running-virtual-machines-with-virtualbox-3.1.x-on-a-headless-fedora-12-server

#244923

Всем привет.
Ребят прошу у вас помощи, у меня установлена Win7 , на ней virtualbox с debian.

задача такая. у нас часто выключают свет, а я порой в командировках , купил сетевую карту с поддержкой Wake on. да бы через телефон(инет) включить комп.

требуется что бы virtualbox запускался сам и стартовал тот самый debian до ввода пароля в систему win7 . как это осуществить? видел тему http://kosmoflyko.blogspot.com/2010/05/virtualbox-service.html ну к сожалению там ничего не понял

#246923

Cruiser78
Интересно, какое решение было?

#246965
Ka3aH6ac написал:
Cruiser78
Интересно, какое решение было?

Само рассосалось. Сейчас виртуалки стартуют из rc.local командами:

nice -n NN su vbxuser -c "nohup VBoxHeadless --startvm VMName &"

#247201

Все замечательно работает.
Только вот скрипта автозапуска не хватает.

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

#247216
Ka3aH6ac написал:

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

А зачем грубо отключать то? Есть стандартный механизм S- и K-файлов /etc/rcX.d Запускать - через rc.local. Останавливать - через нужный K-файл в /etc/rcX.d. В нем тоже всё просто:

text
#!/bin/sh
#

VMS="WinXP mailCentOS TerminalSRV FreePBX" #VMmodeoff=savestate VMmodeoff=poweroff for VM in $VMS do echo $VM stopping su alex -c "VBoxManage controlvm $VM $VMmodeoff" logger -t VirtualBox "VirtualBox $VM $VMmodeoff "$? done

Войдите или зарегистрируйтесь, чтобы ответить.