включить редактирование

VirtualBox Ubuntu

Создан:

Cделаем хост машинку с запущеным VirtualBox с дополнительными пакетами, система запуска ядер, система загрузки терминалов промежуточной ОС. Ставить будем на Ubuntu 12.04 Server.

Исходное состояние – свежеустановленный Ubuntu 12.04 Server с ip 192.168.0.250
1 На сайте VirtualBox заходим в https://www.virtualbox.org/wiki/Linux_Downloads.
Выбираем свой дистрибутив и добавляем в /etc/apt/sources.list нужную строку:
deb http://download.virtualbox.org/virtualbox/debian precise contrib
Скачиваем, сохраняем и устанавливаем публичный ключ Oracle:

$ wget q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc O | sudo aptkey add

Обновляем репозитории и устанавливаем dkms и virtualbox:

$ sudo apt-get update
$ sudo apt-get install dkms virtualbox-4.2

Переходим на https://www.virtualbox.org/wiki/Downloads, копируем ссылку на текущую версию Oracle VM Virtualbox Extention Pack и закачиваем его:

$ wget http://download.virtualbox.org/virtualbox/4.1.26/Oracle_VM_VirtualBox_Extension_Pack-4.1.26-84997.vbox-extpack

Этот пакет позволяет использовать RDP и USB 2.0.

$ sudo vboxmanage extpack install ~/Oracle_VM_VirtualBox_Extension_Pack-4.1.26-84997.vbox-extpack

Во время установки VirtualBox добавится новая группа vboxusers. Пользователя, от имени которого будет запускаться VirtualBox, нужно добавить в эту группу, иначе запуск будет невозможен:

$ useradd -g vboxusers djek

Здесь мы добавили в группу vboxusers пользователя djek.

2 Устанавливаем unzip, Apache и пакет для поддержки PHP:

$ sudo aptget install unzip apache2 libapache2modphp5

После установки в Ubuntu Apache должен запуститься сразу.
Проверим статус если

$ sudo apachectl status
w3m: Can't load http://localhost:80/server-status.
то запускаем
$ sudo apachectl start

3 Переходим на http://code.google.com/p/phpvirtualbox/, скачиваем и распаковываем phpvirtualbox необходимой версии:

$ wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip

В архиве имеется папка phpvirtualbox­-4.2-4 – эту папку переносим в /var/www и переименовываем
в /var/www/phpvirtualbox. Переименовываем внутри этой папки
файл config.php­example в config.php и редактируем его – надо указать логин пользователя c правами администратора, от имени которого будет запускаться VirtualBox, а также его пароль:
var $username = 'djek'
var $password = 'pass'
и выбрать русский язык для интерфейса:
var $language = ‘ru’

4 Создаем конфигурационный файл для запуска vboxweb-service:

$ sudo touch /etc/default/virtualbox

Его минимальное содержание –
VBOXWEB_USER=djek
а именно логин пользователя, имеющего административные права, от имени которого будет запускаться VirtualBox.
Описание других опций можо посмотреть на http://code.google.com/p/phpvirtualbox/wiki/vboxwebServiceConfigLinux.

5 Стартуем сервис:

$ sudo /etc/init.d/vboxwebservice start

Открываем браузер на своем компьютере и пишем в адресной
строке: http://имя_сервера/phpvirtualbox. Логин и пароль по умолчанию – admin и опять же admin.
Обязательно устанавливаем дополнения гостевой системы.

6 Организуем автозапуск некоторых виртуальных машин одновременно с host­сервером и автоматическое корректное выключение виртуалок вместе с сервером.

Этот скрипт:

открыть

Сохраняем его в /etc/init.d под именем
vboxcontrol и делаем исполняемым:

$ sudo chmod +x /etc/init.d/vboxcontrol

Создаем конфигурационные файлы /etc/virtualbox/config
и /etc/virtualbox/machines_enabled.
В первом указывается пользователь, от имени которого запускается скрипт (с административными привилегиями):
VM_USER=djek
Во втором перечисляются виртуальные машины, которые будут автоматически стартовать вместе с хостом (по имени машины, каждая с новой строки):
server_1
server_2
server_3
Осталось обновить скрипты init.rc –

$ sudo updaterc.d vboxcontrol defaults 99 10

после чего становятся доступны команды service vboxcontrol
start|stop|status|savestate|poweroff (для виртуальной машины из списка), а также service vboxcontrol vm­start|vm­stop|vmpoweroff|vm­savestate|vm­reset VM_NAME (для конкретной виртуальной машины).

Настройка тонких клиентов

По большому счету надо только включить настройку по сети в BIOS.
Теперь настроим загрузки по сети в сервере виртуальных машин.

1 Установим на сервер виртуальных машин демон TFTP:

$ sudo aptget install tftp tftpd

По умолчанию TFTP­сервер настроен на использование директории /srv/tftp. Мы перестроим его на использование /tftpboot:
в этой директории будут храниться файлы, которые мы можем
скачать с сервера или закачать в него.

Отредактируем файл /etc/inetd.conf, найдя строки такого вида:
#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers".
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
Последняя строка должна получиться такой:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
Создадим рабочую директорию и поменяем права доступа:

$ sudo mkdir /tftpboot
$ sudo chown R nobody /tftpboot

Перезапустим сервер inetd:

$ sudo /etc/init.d/openbsdinetd restart

Поместим в директорию /tftpboot какой­нибудь файл (myfile)
и выполним команду

$ tftp localhost
На приглашение TFTPсервера введем
tftp> get myfile
Если файл получен, значит, все правильно, и перед вами появится сообщение
Received 168 bytes in 0.1 seconds

Если вы не видите этого сообщения, проверяйте все заново.

2 Установим сервер DHCP и настроим его для удаленной загрузки терминалов.

$ sudo aptget install dhcp3server

Отредактируем /etc/dhcp3/dhcpd.conf:

ddnsupdatestyle none;
defaultleasetime 600;
maxleasetime 7200;
authoritative;
logfacility local7;
servername "192.168.0.200";
subnet 192.168.0.0 netmask 255.255.255.0 {
pool {
range 192.168.0.170 192.168.0.190; # Диапазон работы DHCP,
nextserver 192.168.0.250; # Адрес tftp сервера с загрузчиком
filename “pxelinux.0”; # Имя файла с загрузчиком
}
}

Перезапустим DHCP­сервер:

$ sudo /etc/init.d/dhcp3server restart



3 Наполняем директорию /tftpboot: заходим на http://www.kernel.org/pub/linux/utils/boot/syslinux/, забираем и распаковываем syslinux, оттуда будем брать необходимые файлы. Создадим директорию /tftpboot/boot и загрузим в нее файл
vesamenu.c32 (для создания и редактирования загрузочного
меню). В директорию /tftpboot загрузим файл pxelinux.0 (сетевой
загрузчик). Создадим директорию /tftpboot/pxelinux.cfg, а в ней – файл default следующего содержания:

default /tftpboot/boot/vesamenu.c32
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color disabled 0 #ffffffff #00000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu background #1F45A5
menu title PXE Network Boot Menu
prompt 0
timeout 20
label Thinstation
kernel /tftpboot/pxe/thinstation/vmlinuz
append ramdisk_blocksize 4096 initrd=/tftpboot/pxe/thinstation/
initrd root=/dev/ram0 ramdisk_size=524288 splash=silent vga=791
console=ttyS3
label Boot from first hard disk
localboot 0x80
menu end

Заходим на http://www.thinstation.org/, забираем и распаковываем дистрибутив Thinstation.

Создадим директорию /tftpboot/pxe/thinstation, загрузим в нее файлы initrd и vmlinuz из выбранного дистрибутива Thinstation.
В директории /tftpboot создадим файл thinstation.hosts соответствия имен и MAC­адресов для всех тонких клиентов, следующего содержания:

#Имя_компьютера Mac_адрес Имя_группы Коментарии
terminal1 006008C7A3D8 Firma #
terminal2 000000000000 Firma #
terminal3 000000000000 Firma #
terminal4 000000000000 Firma #
terminal5 000000000000 Firma #
terminal6 000000000000 Firma #

Для каждого выбранного вами имени тонкого клиента (первый столбец) создайте в директории /tftpboot собственный конфигурационный файл (thinstation.conf­terminal1 для имени terminal1 и подобные файлы для других терминалов):

AUTOSTART=On
SCREEN_RESOLUTION="1024x768"
SCREEN_COLOR_DEPTH="16"
RDESKTOP_COMPRESSION=On
RDESKTOP_COLOR_DEPTH="16"
KEYBOARD_MAP=en_us # Раскладка клавиатуры
TIME_ZONE="Europe/Moscow"
USB_ENABLED=On # Включение драйверов USB, нужно для
клавиатуры и мыши
AUDIO_LEVEL=67
SESSION_0_TITLE="Terminal 1"
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=192.168.0.250:3391 # RDPпорт виртуальной машины
SESSION_0_RDESKTOP_OPTIONS=”u user z”# user – под этим
логином будет предпринята попытка входа в сессию RDP
виртуальной машины

Обратите внимание на предпоследнюю строку: данный порт надо будет прописать в свойствах нужной вам виртуальной машины.
Если все сделано верно, то можно пробовать запускать терминалы. Первым пойдет загрузка PXE, определится сервер DHCP, терминал получит IP, затем пойдет загрузка из /tftpboot, на 2 секунды выскочит загрузочное меню и начнется загрузка Thinstation. Поскольку RDP в виртуальных машинах еще не включен, загрузка закончится серым экраном с двумя опциями: Shutdown и Reconnect.

Будем считать, что все сказанное выше прошло успешно, и вирту­альные машины в потребном количестве успешно инсталлирова­
ны через phpvirtualbox. Остановлюсь на активации RDP. Для него обязателен пакет расширения Oracle VM Virtualbox Extention Pack.
Обратите внимание, что IP при обращении по RDP у виртуальных машин тот же, что и у сервера виртуальных ма­
шин, но порт у каждой свой.
Все, перезагружаем сервер виртуальных машин. Проверяем (заходом на http://ip_сервера/phpvirtualbox), стартовали ли ма­шины из списка. Если да – перезагружаем тонкие клиенты, для которых настроены конфигурационные файлы. У меня через 65 секунд после включения питания появляется окно приглашения входа в Windows.

Дополнения и замечания


1 На сервере виртуальных машин запущена Samba для совместного пользования документами. Поскольку физически операционная система и документы находятся на одной машине, открытие документов происходит в разы быстрее, чем с физической машины, подключенной к этому же серверу по локальной сети.

2 Доступ в Интернет регулируется совершенно так же, как для физических компьютеров: с помощью Squid и статических адре­
сов, которые прописаны в настройках самих виртуальных операционных систем.

3 Я не стал заморачиваться с пробросом портов принтеров и сканеров на терминалы. К двум имеющимся физическим машинам
подключил потребное количество периферии проводами по-длиннее, открыл к ним общий доступ, и все.

4 В crontab сервера виртуальных машин внесена следующая запись:
30 23 * * * /etc/init.d/vboxcontrol savestate
00 06 * * * /etc/init.d/vboxcontrol start
В 23:30 ежедневно виртуальные машины засыпают, в 6 утра просыпаются. В таком состоянии их можно клонировать или создать их резервные копии. Но поскольку у меня в заготовке есть настроенная полностью исправная машина, и время ее развертывания соизмеримо с развертыванием из ежедневной резервной копии, я не стал дополнительно нагружать crontab.

5 Если вы хотите удаленно помочь пользователю, можно поставить галочку «Разрешать несколько подключений» на свойствах дисплея в виртуальной машине.
Я пробрасываю порт в Shorewall внешнего сервера –в файле rules вписываю строку
DNAT net loc:192.168.0.250:3391 tcp 11011
#RDESKTOP
и обращением по внешнему IP сервера на порт 11011 попадаю на рабочий стол терминала одновременно с пользователем.

Также, изменяя /tftpboot/pxelinux.cfg/default, можно создать большое меню для загрузки других ядер виртуальных машин.

6 В качестве терминала можно использовать абсолютно любой компьютер с функцией загрузки по сети по спецификации PXE, нужно только вписать в общий конфиг MAC­адрес сетевой карты, жесткий диск на таком компьютере не обязателен.

7 Если вам попадется монитор с соотношением сторон 16:9, для нормального отображения придется немного изменить конфигурационный файл терминала:

AUTOSTART=On
X_MONITOR_MODELINE='"1366x768" 85.034880 1366 1424 1568
1776 768 772 776 798 HSync +VSync'
SCREEN_RESOLUTION="1366x768"
SCREEN_HORIZSYNC="31.581"
SCREEN_VERTREFRESH="5576"
I915RESOLUTION_ENABLED=On
I915RESOLUTION_OPTIONS="3c 1366 768 8"
#SCREEN_RESOLUTION="1024x768"
SCREEN_COLOR_DEPTH="16"
RDESKTOP_COMPRESSION=On
RDESKTOP_COLOR_DEPTH="16"
KEYBOARD_MAP=en_us # Раскладка клавиатуры
TIME_ZONE="Europe/Moscow"
USB_ENABLED=On # Включение драйверов USB
AUDIO_LEVEL=67
SESSION_0_TITLE="Terminal 1"
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=192.168.0.250:3391
SESSION_0_RDESKTOP_OPTIONS="u user z"

Кроме того, на сервере виртуальных машин надо явно задать разрешение для конкретной машины:
$ VBoxManage controlvm Terminal1 setvideomodehint 1366 768 16
Если у вас другие разрешение экрана и глубина цвета, поменяйте на свои (1366, 768 и 16) и после этого задайте нужные параметры экрана из виртуальной машины.
 

Автор: DJek Просмотров: 6584


Рейтинг статьи: 0

Общий рейтинг по отношению ко всем статьям автора :
{0 [0]}[max] [ - - - - - - - - - - ]

Общий рейтинг из всех статей на сайте :
{0 [888]} [ - - - - - - - - - - ]

[?]
Комментарии 1

Alex

Kruto! Spasibo tebe!

-1
Статистика комментария: Голосов: 1 Пользователей +/-: 0/0 Гостей +/-: 0/1

Добавить комментарий к статье


Ctrl+Enter

Для активации кнопки, введите символы, которые Вы видите на картинки.

новая

тема

Заметки на тему IT

Монитор поиска
[x]
Новое сообщение

Сообщения в чате

Вы спрашиваете у гостей/у зарегистрированных/ У Вас спрашивают
всем Ctrl+Enter
зарегистрированным Ctrl+Enter
Ctrl+Enter

Краткая инструкция по работе с чатом

  • Вы должны ввести имя, которое будет запомнено и применяться для чата и комментариев на сайте.
  • Выбрать одну из возможностей
    "Вы спрашиваете у гостей/
    у зарегистрированных/
    У Вас спрашивают"
  • Кликните на один из способов и появиться дополнительная информация