Задача: запустить виртуальную машину с win2k3 на хосте с freebsd без установленого Х-сервера.Имеем:
FreeBSD 7.2-RELEASE-p3,
virtualbox-3.0.51.r22226 (WITHOUT_QT4=true WITHOUT_DEBUG=true WITH_GUESTADDITIONS=true
WITHOUT_DBUS=true WITHOUT_PULSEAUDIO=true WITH_NLS=true)Сразу хочу заметить, что поскольку протокол VRDP в virtualbox под freebsd пока не реализован,
то для первоначальной инсталяции виртуальной машины нам все же понадобится другой хост
с установленным окружением X11. Установка win2k3 в виртуальное окружение - задача весьма тривиальная,
поэтому её описание я опущу...Итак, мы имеем установленную виртуальную систему, которую нам необходимо пренести на
другой хост и попытаться там запустить. Для этого экспортируем виртуальную машину на хосте,
где мы ее устанавливали:VBoxManage export WIN2003STD -o ~/WIN2003STD.ovf
где WIN2003STD - имя виртуальной машины,
~/WIN2003STD.ovf - файл, в котором будут храниться экспортируемые параметры виртуальной машины.В итоге имеем 3 файла, которые нам необходимо перенести на удаленный хост:
WIN2003STD.mf - файл, содержащий контрольные суммы двух последующих файлов
WIN2003STD.ovf - файл параметров экспортируемой машины
WIN2003STD.vmdk - упакованный файл-образ жесткого диска виртуальной машины.Повторюсь, что поскольку реализации протокола VRDP в virtualbox для freebsd нет,
то изначально перед экспортом виртуальной машины нам необходимо будет дать удаленный доступ
внутрь гостевого окружения с помощью RDP или VNC. В моем случае я сделал доступ через
удаленный рабочий стол win2k3.На удаленном хосте я создал для запуска виртуального окружения отдельного пользователя
vbox с группой vboxusers, которому запретил вход через ssh. Файлы WIN2003STD.mf, WIN2003STD.ovf
и WIN2003STD.vmdk я положил в его домашнюю директорию и сделал их владельцем пользователя vbox.Далее от пользователя vbox делаем импорт виртуальной машины:
VBoxManage import ~/WIN2003STD.ovf
Далее нам необходимо пробросить внутрь виртуальной машины tcp-порт 3389 для доступа к удаленному рабочему столу win2k3:
VBoxManage setextradata WIN2003STD "VBoxInternal/Devices/pcnet/0/LUN#0/Config/RDP/HostPort" 3389
VBoxManage setextradata WIN2003STD "VBoxInternal/Devices/pcnet/0/LUN#0/Config/RDP/GuestPort" 3389
VBoxManage setextradata WIN2003STD "VBoxInternal/Devices/pcnet/0/LUN#0/Config/RDP/Protocol" tcpВсе, виртуальную машину можно запускать:
VBoxManage startvm WIN2003STD --type headless
"--type headless" позволяет запутить виртуальную машину в фоновом режиме.
О том, что проброс tcp-порта выполнен свидетельствуют строки в логе вмртуальной машины и sockstat:
$ grep -i nat ~/.VirtualBox/Machines/WIN2003STD/Logs/VBox.log
00:00:00.535 Driver = "NAT" (cch=4)
00:00:00.538 AIS - Alternate Instruction Set = 0 (1)
00:00:00.942 NAT: ICMP/ping not available (could open ICMP socket, error VERR_ACCESS_DENIED)
00:00:00.942 NAT: value of BindIP has been ignored
00:00:35.141 NAT: set redirect TCP hp:3389 gp:3389
00:01:05.062 NAT: old socket rcv size: 64KB
00:01:05.062 NAT: old socket snd size: 64KB$ sockstat -4 -l | grep 3389
vbox VBoxHeadle 982 32 tcp4 :3389 :*
Следует заметить, что icmp во внешний мир из виртуальной машины работать не будет, это требует прав суперпользователя,
о чем нам сказано в логе - "00:00:00.942 NAT: ICMP/ping not available (could open ICMP socket, error VERR_ACCESS_DENIED)",
поэтому проверять работоспособность сети внутри виртуального хоста с помощью ping не стоит. Все, задачу можно считать выполненной.P.S. После выключения удаленной виртуальной машины через сеанс RDP, система выпадает в BSOD и
дальше возможен вход только в безопасном режиме, что в нашем случае уже не возможно. Беглый поиск
в google дает нам такое решение - необходимо предварительно в ветке реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\intelppm\Start
выставить значение 4.P.P.S. Для автоматического старта виртуальной машины при старте системы я в /usr/local/etc/rc.d/ создал скрипт вида:
#!/bin/sh
echo "Starting VirtualBox..."
su vbox -c '/usr/local/bin/VBoxManage startvm WIN2003STD --type headless'
URL: http://shurik.kiev.ua/blog/index.php?/archives/10-Zapusk_win...
Обсуждается: http://www.opennet.me/tips/info/2144.shtml
А как оно по скорости получается? Если сравнивать с тем же ESX server-ом
эээ.. и зачем все это? в чем выхлоп?
да действительно, статья хорошая ИМХО, пригодитьсятолько вот вопрос в зачем Вы используете эту схему?
Ну какбы есть у меня личный сервант на колокейшене на freebsd, хостит несколько доменов моих знакомых. А тут один из личных клиентов спросил можно ли на этом сервере организовать работу в 1с (2-3 человека), дабы не покупать железку в офис. Вот так и появилась идея опробовать это ибо в qemu оно тормозит довольно ощутимо, а в виртуалбоксе работает практически без заметных тормозов. Конечно правильно было бы заюзать xen или kvm, но перебивать ради этого настроенную железку на линукс я не хочу, тем более фря мне как-то роднее :)
>Ну какбы есть у меня личный сервант на колокейшене на freebsd, хостит
>несколько доменов моих знакомых. А тут один из личных клиентов спросил
>можно ли на этом сервере организовать работу в 1с (2-3 человека),
>дабы не покупать железку в офис. Вот так и появилась идея
>опробовать это ибо в qemu оно тормозит довольно ощутимо, а
>в виртуалбоксе работает практически без заметных тормозов. Конечно правильно было бы
>заюзать xen или kvm, но перебивать ради этого настроенную железку на
>линукс я не хочу, тем более фря мне как-то роднее :)
>обидно только, то, что sun против нативной поддержки freebsd ;(
> обидно только, то, что sun против нативной поддержки freebsd ;(Sun _против_? Каким образом Sun может быть против?
>> обидно только, то, что sun против нативной поддержки freebsd ;(
>
>Sun _против_? Каким образом Sun может быть против?ну это же символически было сказано!
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\intelppm\Start
вот за это спасибо.
А можно под виндовым virtualbox создать образ, а потом во freebsd подпихнуть. будет работать?
Я так и сделал - всё ок =) Экспорт-импорт и готово
экспорт импорт не нужен.достаточно образ диска и файл настроек поправленный.
А у меня так и не получилось отмапить порты для rdp. Сам virtualbox запускается, но вот порт 3389 не появляется при sockstat. Куда копать?
А вы привидите пожалуйста результат выполнения VBoxManage showvminfo <your_vm_name>|grep -i nic и содержимое ~/.VirtualBox/Machines/<your_vm_name>/Logs/VBox.log
>А вы привидите пожалуйста результат выполнения VBoxManage showvminfo <your_vm_name>|grep -i nic и содержимое ~/.VirtualBox/Machines/<your_vm_name>/Logs/VBox.logNIC 1: MAC: 080027F2E351, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps
остальные дизабледVBox.log
целиком кидать не буду
присутствуют строки
00:00:00.077 [/Devices/pcnet/0/LUN#0/] (level 4)
00:00:00.077 Driver <string> = "NAT" (cch=4)
00:00:00.077
00:00:00.077 [/Devices/pcnet/0/LUN#0/Config/RDP/] (level 6)
00:00:00.077 GuestPort <integer> = 0x0000000000000d3d (3389)
00:00:00.077 HostPort <integer> = 0x0000000000000d3e (3389)
00:00:00.077 Protocol <string> = "tcp" (cch=4)
Меня смущает вот это:
>00:00:00.077 HostPort <integer> = 0x0000000000000d3e (3389)d3e - это 3390, у меня в этой части выглядит так:
00:00:00.535 [/Devices/pcnet/0/LUN#0/Config/RDP/] (level 6)
00:00:00.535 GuestPort <integer> = 0x0000000000000d3d (3389)
00:00:00.535 HostPort <integer> = 0x0000000000000d3d (3389)
00:00:00.535 Protocol <string> = "tcp" (cch=4)
>Меня смущает вот это:
>>00:00:00.077 HostPort <integer> = 0x0000000000000d3e (3389)
>
>d3e - это 3390, у меня в этой части выглядит так:
>00:00:00.535 [/Devices/pcnet/0/LUN#0/Config/RDP/] (level 6)
>00:00:00.535 GuestPort <integer> = 0x0000000000000d3d (3389)
>00:00:00.535 HostPort <integer> = 0x0000000000000d3d (3389)
>00:00:00.535 Protocol <string> = "tcp" (cch=4)Это я нечаянно исправил.
Решение нашлось. Очень простое. Удаляем папку .VirtualBox (У меня /root/.VirtualBox)
Импортим заново, прописываем три строки для запуска и запускаем виртуальную машину.
Сокет появляется
спасибо. пригодилось
Пробую 2008 винду и вылетает с такой вот ошибкой:ERROR: Virtual machine '2008' has terminated unexpectedly during startup
Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine, callee <NULL>сначало не был подгружен драйвер vboxdrv.ko, подгрузил kldstat:
Id Refs Address Size Name
1 12 0xc0400000 648544 kernel
2 1 0xc0a49000 6a5d4 acpi.ko
3 1 0xcc419000 3000 ng_tee.ko
4 1 0xcd0ed000 4000 ng_pptpgre.ko
5 1 0xcd1dd000 5000 ng_ksocket.ko
6 1 0xccf81000 3000 ng_tcpmss.ko
7 1 0xcd811000 26000 vboxdrv.koсмысл не поменялся - ошибка такая же ...
может кто знает как лечить ? Google - не помог ...
Точнее вот полный вывод:su vbox -c 'VBoxManage startvm 2008 --type headless'
VirtualBox Command Line Management Interface Version 3.0.51_OSE
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.Waiting for the remote session to open...
ERROR: Virtual machine '2008' has terminated unexpectedly during startup
Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine, callee <NULL>
А в обычном режиме (без headless) стартует нормально?
нет, если без headless,то вот:VirtualBox Command Line Management Interface Version 3.0.51_OSE
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.ERROR: Invalid session type: 'gui'
Details: code NS_ERROR_INVALID_ARG (0x80070057), component Machine, interface IMachine, callee nsISupports
Context: "OpenRemoteSession(a->session, uuid, sessionType, env, progress.asOutParam())" at line 532 of file VBoxManage.cppя вот грешу на то, что я не настраивал в свойствах машины (когда ее создавал) "Удаленный дисплей"...
у меня строка RemoteDisplay в файле ~/.VirtualBox/Machines/2008/2008.xml вот такого вида:
<RemoteDisplay enabled="true" port="0" authType="Null" authTimeout="5000"/>если подставить в port 3389 - не помогает, но в виндовом VirtualBox опция authType может принимать 3 значения, а вот какие они, точнее какие значения они принимают в файле ? Может быть кинете мне эту строку сюда - попробую ... Просто машина, на которой все это делается - на работе и снова лить по Инету несколько Гб не очень прельщает ... Заранее благодарен!
authType="Null"
authType="External"
authType="Guest"
Спасибо, но не спасло ... =( таже самая ошибка ...
Да, у меня такая же фигня. Win2003Ent.
Кстати вот это выполнил?% mount -t procfs proc /proc
% kldload vboxdrvу меня после этого вроде поперло
Waiting for the remote session to open...
Remote session has been successfully opened.
Да, вот про это то и забыли ... =)
Вот такая лажа получается00:00:00.071 VirtualBox 3.0.51_OSE r22185 freebsd.x86 (Aug 27 2009 22:18:55) release log
00:00:00.071 Log opened 2009-08-28T03:23:00.245725000Z
00:00:00.071 OS Product: FreeBSD
00:00:00.071 OS Release: 7.2-RELEASE-p3
00:00:00.071 OS Version: FreeBSD 7.2-RELEASE-p3 #0:
00:00:00.071 Host RAM: 1010MB RAM, available: 22MB
00:00:00.071 Executable: /usr/local/lib/virtualbox/VBoxHeadless
00:00:00.071 Process ID: 30491
00:00:00.071 Package type: BSD_32BITS_GENERIC (OSE)
00:00:00.082 pdmR3LoadR0U: pszName="VMMR0.r0" rc=VERR_NO_MEMORY
00:00:00.082 ERROR [COM]: aRC=NS_ERROR_FAILURE (0x80004005) aIID={0a51994b-cbc6-4686-94eb-d4e4023280e2} aComponent={Console}aText={Failed to load VMMR0.r0 (VERR_NO_MEMORY).
00:00:00.082 Unknown error creating VM (VERR_NO_MEMORY)} aWarning=false, preserve=false
00:00:00.086 Power up failed (vrc=VERR_NO_MEMORY, rc=NS_ERROR_FAILURE (0X80004005))
> 00:00:00.071 Host RAM: 1010MB RAM, available: 22MBНе маловато ли свободной памяти?
Блин, глянул, действительно из free memory все сьелось.
у меня вот такое в логах:00:00:00.070 ******************** End of CPUID dump **********************
00:00:00.072 REM: VBoxREM32
00:00:00.088 TM: GIP - u32Mode=1 (SyncTSC) u32UpdateHz=100
00:00:00.121 TM: cTSCTicksPerSecond=0x8abbe204 (2 327 568 900) fTSCVirtualized=true fTSCUseRealTSC=false
00:00:00.121 TM: fMaybeUseOffsettedHostTSC=true TSCTiedToExecution=false TSCNotTiedToHalt=false
00:00:00.121 CoreCode: R3=48cef000 R0=e7c45000 RC=a03b7000 Phys=000000001d7cc000 cb=0x2000
00:00:00.127 AIO: Async I/O manager not supported (rc=VERR_NOT_SUPPORTED). Falling back to failsafe manager
00:00:00.130 ERROR [COM]: aRC=NS_ERROR_FAILURE (0x80004005) aIID={0a51994b-cbc6-4686-94eb-d4e4023280e2} aComponent={Console} aText={Unknown error creating VM (VERR_CFGM_NOT_ENOUGH_SPACE)} aWarning=false, preserve=false
00:00:00.131 Power up failed (vrc=VERR_CFGM_NOT_ENOUGH_SPACE, rc=NS_ERROR_FAILURE (0X80004005))хотя под виртуалку - 519 метров выделяется по конфигу, свободных 1390 ...
есть идеи ?
> 00:00:00.131 Power up failed (vrc=VERR_CFGM_NOT_ENOUGH_SPACE, rc=NS_ERROR_FAILURE (0X80004005))Вот что на этот счет в исходниках:
/** The specified string / bytes buffer was to small. Specify a larger one and retry. */
#define VERR_CFGM_NOT_ENOUGH_SPACE (-2109)Покажите свой конфиг ВМ, может что увидим
вот конфиг:/home/vbox/.VirtualBox/Machines/2008# cat 2008.xml
<?xml version="1.0"?>
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.8-freebsd">
<Machine uuid="{bdcdf06d-3c45-49fa-8db1-35babd3b64b2}" name="2008" OSType="Windows2008" lastStateChange="2009-08-28T11:11:56Z">
<ExtraData>
<ExtraDataItem name="VBoxInternal/Devices/HostInterfaceNetworking-vboxnet0/0/LUN#0/Config/RDP/GuestPort" value="3389"/>
<ExtraDataItem name="VBoxInternal/Devices/HostInterfaceNetworking-vboxnet0/0/LUN#0/Config/RDP/HostPort" value="3389"/>
<ExtraDataItem name="VBoxInternal/Devices/HostInterfaceNetworking-vboxnet0/0/LUN#0/Config/RDP/Protocol" value="tcp"/>
</ExtraData>
<Hardware>
<CPU count="1">
<HardwareVirtEx enabled="true"/>
</CPU>
<Memory RAMSize="519"/>
<Boot>
<Order position="0" device="Floppy"/>
<Order position="1" device="DVD"/>
<Order position="2" device="HardDisk"/>
<Order position="3" device="None"/>
</Boot>
<Display VRAMSize="12" monitorCount="1" accelerate3D="false" accelerate2DVideo="false"/>
<RemoteDisplay enabled="false" port="0" authType="Null" authTimeout="5000"/>
<BIOS>
<ACPI enabled="true"/>
<IOAPIC enabled="true"/>
<Logo fadeIn="true" fadeOut="true" displayTime="0"/>
<BootMenu mode="MessageAndMenu"/>
<TimeOffset value="0"/>
<PXEDebug enabled="false"/>
</BIOS>
<DVDDrive passthrough="false"/>
<FloppyDrive enabled="true"/>
<USBController enabled="false" enabledEhci="false"/>
<Network>
<Adapter slot="0" enabled="true" MACAddress="080027BEF6F4" cable="true" speed="0" type="82540EM">
<NAT/>
</Adapter>
<Adapter slot="1" enabled="false" MACAddress="080027008197" cable="true" speed="0" type="82540EM"/>
<Adapter slot="2" enabled="false" MACAddress="080027012EC5" cable="true" speed="0" type="82540EM"/>
<Adapter slot="3" enabled="false" MACAddress="080027ED9E41" cable="true" speed="0" type="82540EM"/>
<Adapter slot="4" enabled="false" MACAddress="0800273C9136" cable="true" speed="0" type="82540EM"/>
<Adapter slot="5" enabled="false" MACAddress="0800271BFA80" cable="true" speed="0" type="82540EM"/>
<Adapter slot="6" enabled="false" MACAddress="080027D42D59" cable="true" speed="0" type="82540EM"/>
<Adapter slot="7" enabled="false" MACAddress="080027995917" cable="true" speed="0" type="82540EM"/>
</Network>
<UART/>
<LPT/>
<AudioAdapter controller="AC97" driver="OSS" enabled="true"/>
<SharedFolders/>
<Clipboard mode="Bidirectional"/>
<Guest memoryBalloonSize="0" statisticsUpdateInterval="0"/>
<GuestProperties/>
</Hardware>
<StorageControllers>
<StorageController name="IDE" type="PIIX4" PortCount="2">
<AttachedDevice type="HardDisk" port="0" device="0">
<Image uuid="{4912d7cb-7593-4a05-8b44-c6c310dac87a}"/>
</AttachedDevice>
</StorageController>
</StorageControllers>
</Machine>
</VirtualBox>Буду благодарен, если кто поможет разобраться =)
А скриншоты можно?
Скриншоты чего? Это все в логах и конфигах ...
Странно у меня при импорте вылазит вот такая чепуха:ERROR: Could not create the clone hard disk '/home/vbox/.VirtualBox/HardDisks/2003R2.vmdk' (VERR_GENERAL_FAILURE)
Details: code NS_ERROR_FAILURE (0x80004005), component Appliance, interface IAppliance, callee <NULL>
Context: "ImportAppliance" at line 659 of file VBoxManageImport.cpp
Обновите статью, моя проблема решилась, решение описано в блоге оригинала.
а ссылочку на блог можно увидеть.
>а ссылочку на блог можно увидеть.прямо как в анекдоте ... =)
вот здесь все написано:
http://shurik.kiev.ua/blog/index.php?/archives/10-Zapusk_win...посмотрите под статьей - все ясно написано URL: ...
>а ссылочку на блог можно увидеть.прямо как в анекдоте ... =)
вот здесь все написано:
http://shurik.kiev.ua/blog/index.php?/archives/10-Zapusk_win...посмотрите под статьей - все ясно написано URL: ...
Однако работает, самое смешное что в виртуалке вантуз корябается быстрее, чем на реальном железе. Но есть один прикол.
При перезапуске он в какой-то момент виснет. Если "выключить" и потом снова запустить VM, то всё нормально, а если перезагружать гостевую ОС, то остаётся её только прибить по
VBoxManage controlvm w2k3 poweroff
и снова запустить.