ITСooky

IT-рецепты съедобные и не очень!

Запускаем VirtualBox на FreeBSD c phpVirtualBox!

дата 10.08.2013

Да я даже больше скажу запускаем VirtualBox на FreeBSD c phpVirtualBox, чтобы запустить в нем FreeBSD!!! Прогресс не стоит на месте (и чего ему не стоится то) и все обновляется, да так что то, что нужно и устраивает тебя перестает работать и единственное смысл гнаться за прогрессом — только чтобы задействовать возможности нового железа, а программы не так часто обновляется, а мой любим SAMS так вообще не обновляется!

itcooky_virtualbox_03

Маленькое отступление. Для установки всех компонетов надо чтобы FreeBSD был не ниже версии 8.2, раньше этого не требовалось но компонеты обновились 🙁

===>  virtualbox-ose-kmod-4.2.6_1 is marked as broken: Does not compile on FreeBSD < 8.2.

Обновлять FreeBSD я даже врагу не пожелаю, так что описывать не буду. Скажу только, что происходит(пометка для себя надо еще откатится к ядру GENERIC) следующее — сначала все идет по написанному, но потом ОС предлагает вручную отредактировать пол сотни файлов с которыми она не может справиться сама, ВОТ ТАК всё сообщество пишущее FreeBSD не может справиться, а пользователю предлагает справится одному!!! И ладно бы оно просто предлагало, так оно в каждый такой файл вписывает «>>>>>>>>>>>» такие символы за которыми пишет что нового хочет добавить! И ВНИМАНИЕ затруднения в основном возникают у него на первой строке где написана версия — оно не знает как быть со строкой в которой написана информация версии файла!!!!!!!!!!!!!!!!!!! Если все это пропускать на автомате энное количество раз нажимая [Enter] [ESC] [:] [q] [Enter] естественно после перезагрузки все мягко говоря перестает работать — первым отлетает аутентификация.

Чтобы пробиться на сервер перезагружаемся в одиночном режиме
Выполняем

mount -w -u /
mount -w -a

Правим файл паролем то есть удаляем все что между чужеродными кавычками и их самих тоже

vipw

Также выполняем

cap_mkdb /etc/login.conf

Перезагружаемся и дальше смотрим в логах загрузки на что еще ругается. Привести в рабочее состоянии систему можно!

Приступаем к установке. PHP установлено без поддержки SOAP надо его удалить и собрать с SOAP. Тут решил написать подробно, чтобы удалить и пересобрать ищем из какой папки мы ставили! Набираем первое что приходит в голову:

whereis php

Получаем

manpath: unable to make sense of the file /etc/manpath.config
whereis: error processing manpath results: No such file or directory

Не пужайтесь граждане, это последствия обновления идем в файл /etc/manpath.config и удаляем козявки оставленные процессом обновления.

Версию PHP можно узнать просто набрав:

php -v

Но конкретно на моем сервере не показало, много текста — версии нет. Зато версию всегда можно узнать в тестовом файле phpinfo.php делал его в начале начал — всегда пригождается.

Выбираем SOAP

cd /usr/ports/lang/php5-extensions
make clean config
make clean install

VirtualBox 4.3.18 не ставится на FreeBSD 9.3
Почему не изветсно но вот тут описан способ как его деградировать до устаналиваемой версии forums.freebsd.org
Сначала установим svn
cd /usr/ports/devel/subversion
make
make install

Теперь выполняем
cd /tmp
mkdir virtualbox
cd virtualbox
svn checkout svn://svn0.us-west.FreeBSD.org/ports/head/emulators/virtualbox-ose@367888 emulators/virtualbox-ose
svn checkout svn://svn0.us-west.FreeBSD.org/ports/head/emulators/virtualbox-ose-kmod@367888 emulators/virtualbox-ose-kmod
cd emulators/virtualbox-ose-kmod
make

Если тут на чтото ругаемся удаляем папку
rm -R /tmp/virtualbox/emulators/virtualbox-ose-kmod/.svn
и повторяем
make
pkg delete virtualbox-ose-kmod
Тут удаляем ненужную новую версию
make install
cd /tmp/virtualbox/emulators/virtualbox-ose
make config
make

Если тут на чтото ругаемся удаляем папку
rm -R /tmp/virtualbox/emulators/virtualbox-ose/.svn
и повторяем
make
pkg delete virtualbox-ose
make install

Устанавливаем компоненты

cd  /usr/ports/emulators/virtualbox-ose-kmod
make install

А также

cd /usr/ports/emulators/virtualbox-ose
make config

│ │ [ ] QT4 Build with QT4 Frontend │ │
│ │ [ ] DEBUG Build with debugging symbols │ │
│ │ [X] GUESTADDITIONS Build with Guest Additions │ │
│ │ [X] DBUS Build with D-Bus and HAL support │ │
│ │ [ ] PULSEAUDIO Build with PulseAudio │ │
│ │ [ ] X11 Build with X11 support │ │
│ │ [ ] VDE Build with VDE support │ │
│ │ [X] VNC Build with VNC support │ │
│ │ [X] WEBSERVICE Build Webservice │ │
│ │ [ ] NLS Native language support

make install

Еще

cd /usr/ports/net/libvncserver
make install

Устанавливаем вебморду

cd /usr/ports/www/phpvirtualbox
make install

Добавляем пользователя

adduser vbox 
pw groupmod vboxusers -m vbox

Правим конфиг пишем туда пользователя и его пароль

cd /usr/local/www/phpvirtualbox/
cp config.php-example config.php
vi config.php

Пищим своё

[...]
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'secret';
[...]

Копируем файл в папку apache для сайта

cp -R /usr/local/www/phpvirtualbox /usr/local/www/apache22/data/

Добавляем в /etc/rc.conf

vboxnet_enable="YES"
vboxwebsrv_enable="YES"
vboxwebsrv_user="vbox"
vboxwebsrv_flag="-P /home/vbox/vbox.pid -F /home/vbox/vbox.log -R 5"

Перегружаемся и он запсукается

Заходим по ссылке http://ip_server/phpvirtualbox вводим имя пароль admin admin и видим Virtualbox работающий как веб страница!!!

Теперь в сервер втыкаем флешку с виртуальной машиной в формате .ova
Примонтируем её

mount_msdosfs /dev/da0s1 /mnt/usb

На вебстаринеце phpvutrualbox жмем File > Import applaence
Виртуальная машина добавилась идем в настройки у отключаем USB во первых он не нужен и во вторых он не установлен!
itcooky_virtualbox_01

Там же правим сетевые настройки выбираем тип Bridged Adapter и вторую Etehrnet карту у меня это re1 и это не просто так!
itcooky_virtualbox_02

Я запускаю на Virtualbox виртуальный сервер FreeBSD с настроенным Squid,Sams,NetAMS,DHCPD. К сожалению Virtulbox у меня не заработал напрямую с Wi-Fi адаптером (есть мнение что он не умеет этого делать). Но виртуальный сервер отлично работает если в сервера два адаптера Ethernet один из которых повешен в режиме моста Wi-Fi адаптер!

Делаем мост из Wi-Fi адаптера wlan0 на Ethernet re0, для его в rc.conf меняем на

wlans_ath0="wlan0"
create_args_wlan0="wlanmode hostap country RU"
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 192.168.1.98 netmask 255.255.255.0 addm wlan0 addm re0 up"

Там же сторчки Ehetrnet адаптеров выглядят так

ifconfig_re0="inet 192.168.1.100  netmask 255.255.255.0"
ifconfig_re1="inet 192.168.1.99  netmask 255.255.255.0"

Также на железном сервере выключаем IPFW, его можно настроить чтобы он пропускал нужный виртуальный трафик но у меня это не получилось. В rc.conf закрываем строки вот так

#firewall_enable="YES"
#firewall_type="/etc/rc.firewall"
#firewall_logging="YES"

DHCP если был запушен на железном сервере, так же отключаем.

Чтобы ваше виртуальная машина запускалась автоматически при загрузке железного сервера добавляем в rc.d строчки — в последней указано имя виртуальной машины.

vboxheadless_enable="YES"
vboxheadless_user="vbox"
vboxheadless_stop="poweroff"
vboxheadless_delay="0" 
vboxheadless_machines="ITCooky_1_0_rc2"

Перезагружаемся.

Получаем следующее. На железном сервере у нас поднята точка доступа Wi-Fi(установленная ранее) она связано мостом с Etherhet адаптером re0, на Etherhet адаптером re1 у нас запускается сам виртуальный сервер ITCooky_1_0_rc2, которы раздает IP по DHCP, считает трафик пользователей NetAMS, и занимается цензурой SUID-SAMS, на нем же файрволл IPFW.

Для редактирования VirtualBox заходим на железный сервер по ссылке http://ip_server/phpvutrualbox для редактирования сервисов на виртуальном сервере заходим на его http://ip_server/ !!! По моему очень удобно, отказоустойчиво, легко оживляется! И главное не зависит от платформы можно запустить в любой среде где работает VirtualBox — Windows,MacOS,Linux!

itcooky_virtualbox_04

Пару слов о железе. У меня данный процесс опробован на Intel Atom 330 два ядра 1,6 mHz RAM 1GB DDR2 и Intel Core Duo E8400 два ядра 3 mHz 2GB DDR2, никаких затруднений с достаточной производительностью не возникает. Так что лучше использовать Atome с потребляемой мощностью 8w, чем Intel Core Duo с 65w — незабываем о грабительской реформе оплаты за электроэнергию.

Схема сети которая получилась в результате
scheme_vps_net