Иногда возникает острая необходимость работать в Linux-среде. Например, у меня накопился ряд приложений, которые минимизирует мои временные затраты в широком спектре  задач.  К сожалению, далеко не все они работают под FreeBSD. Это преимущественно предкомпилированные deb-пакеты, исходники к которым если и есть, то не собираются.  Разумеется, что вся рабочая среда должна быть гибкой, масштабируемой, портируемой, кроссплатформенной и доступной из любой точки нашей планеты. Соответственно это должны быть виртуальная машина, наиболее подходит virtualbox. В первой части поговорим о создании сервера virtualbox на машине с установленным FreeBSD.

Итак, для начала надо иметь исходники системы в директории /usr/src. Если система amd64, то необходимо еще и собрать 32-ухразрядные библиотеки:

# /usr/src
# make build32 install32
# /etc/rc.d/ldconfig restart

Далее собираем 2 порта: сам сервер и модуль ядра:

# /usr/ports/emulators/virtualbox-ose && make install clean
# /usr/ports/emulators/virtualbox-ose-kmod && make install clean

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

Для управления сервером рекомендую использовать web-интерфейс, для чего ставим порт phpvirtualbox

# /usr/ports/www/phpvirtualbox && make install clean

Далее следует создать пользователя, ну например phpvbuser. К php предъявляются некоторые требования, а именно должны быть установлены следующие расширения php:

  • php5-json
  • php5-mysql
  • php5-session
  • php5-soap
  • php5-sockets
  • php5-xml
  • php5-xmlrpc

На моем сервере эти расширения установлены и так, вам, возможно, придется ставить их. На этом с компиляции закончено, переходим к настройке. В файл /usr/local/www/phpvirtualbox/config.php добавляем строки настройки аутентификации:

/* Username / Password for system user that runs VirutalBox */
var $username = 'phpvbuser';
var $password = 'passwd';
var $location = 'http://127.0.0.1:18083/';

Где passwd - пароль созданного нами пользователя phpvbuser, которому также даем права к директории сервера:

# chown -R phpvbuser:vboxusers /usr/local/lib/virtualbox

Создаем скрипт автоматического запуска сервера /usr/local/etc/rc.d/phpvirtualbox.sh
следующего содержания:

#!/bin/sh
echo -n 'phpVirtualBox daemon'

case "$1" in
start)
su - phpvbuser -c "vboxwebsrv -t 0 -F /dev/null"
;;
stop)
killall vboxwebsrv
killall VBoxSVC
killall VBoxXPCOMI
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0

Выполняем настройку конфигурации сервера и запускаем его:

# su - phpvbuser -c "VBoxManage setproperty websrvauthlibrary null"
# su - phpvbuser -c "vboxwebsrv -H 127.0.0.1 -p 18083 -t 0 -F /dev/null"