Задача: запустить виртуальную машину с 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...
Обсуждается: https://www.opennet.ru/tips/info/2144.shtml