Установка и настройка тонкого клиента Thinstation. Тонкие клиенты: установка и настройка

  • 04.05.2019

И не смотря на то, что в сети есть много примеров образов тонких клиентов, вряд ли всем они смогут подойти. Поэтому в этой статье рассмотрим процедуру сборки образа тонкого клиента. Для этого нам понадобится рабочая станция под управление ОС Linux (я буду использовать CentOS ) и платформу (последнюю версию можно взять ).

Скачанный архив распаковываем в любую папку. Установка платформы проходит автоматически. Для установки необходимо выполнить команду:

./setup-chroot

Сборка тонкого клиента происходит внутри платформы. Т.е. в случае если после установки вы выходили из «chrootsession », необходимо еще раз выполнить команду

./setup-chroot

Конфигурационные файлы, на основе которых будет собираться тонкий клиент, лежат по пути ts/2.5, там же лежит скрипт, который собирает тонкий клиент.

Т.е. выполняем команду:

cdts/2.5

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

Хочу обратить внимание на параметры:

paramdefaultconfigthinstation . conf . buildtime --- название файла с настройками по умолчанию;

parambasenamethinstation --- название файла; настроек, загружаемых по tftp -серверу.

parambasepathconfig --- название каталога на tftp -сервере, где искать конфигурационные файлы

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

NET_FILE_ENABLED=On

Таким образом, у нас появится возможность переопределять настройки тонкогоклиента в процессе его эксплуатации. Файл конфигурации должен называться basename.conf. Существует несколько типов таких файлов, а именно:

Network – настройки по умолчанию, которые загружаются с tftp-сервера.

User – конфигурационный файл находящийся на локальном хранилище.

- - специфический конфигурационный файл на tftp-сервере для терминального имени. Для его использования должен быть настроен thinstation.host

Group- - конфигурационный файл для группы тонких клиентов. Для его использования должен быть настроен thinstation.host

- - специфический конфигурационный файл, скачивающийся с tftp-сервера, для тонкого клиента с IP-адресом .

- - специфический конфигурационный файл, скачивающийся с tftp-сервера, для тонкого клиента с MAC-адресом .

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

./build –-buildtimethinstation.conf.buildtime

После выполнения скрипта в папке boot-images появятся необходимые образы. И в зависимости от выбранного варианта загрузки тонкого клиента выбрать свой. В нашем случае мы использовали PXE, и поэтому наш образ лежит в папке pxe.

Далее копируем все файлы, созданные в папке pxe, в нашу папку с tftp и настраиваем рабочую станцию, которая будет использоваться под тонким клиентом, для загрузки по tftp. Если необходимо провести дополнительные настройки, в корне папки tftp создаем папку config (это название мы указали в конфигурационном файле по умолчанию) и складываем туда специфические файлы настройки тонких клиентов, которые будут загружатся по tftp.

Финансовый кризис заставил IT-специалистов пересмотреть традиционный подход к
организации сети в сторону "тонких клиентов". В отличие от настольных компов,
они экономичны, потребляют мало энергии, просты в сопровождении, легко
адаптируются к любой среде. Сегодня доступно несколько десятков различных
решений для такой сети, а самым популярным представителем лиги терминальных
систем является опенсорсный мини-дистрибутив Thinstation.

Терминальная сеть

Вначале определимся с назначением тонких клиентов и местом Thinstation
в процессе организации подобного сервиса. В типичной сети компании применяется
схема, ставшая усилиями Microsoft уже стандартной: ОС загружается с локального
жесткого диска, там же могут храниться и все необходимые пользователю данные. Но
менеджеры, маркетологи, секретари и прочий офисный планктон, которым для работы
требуются средства интернета, текстовый редактор и пара программ для создания
отчетов и работы с базой данных, используют мощности современного компьютера
далеко не полностью (от силы на 10%). На этом можно и нужно экономить.

Архитектура тонких клиентов предусматривает загрузку ОС и всех необходимых
данных по сети. Такой подход имеет ряд преимуществ, которые становятся очевидны
уже в сетях среднего размера:

  • централизованное администрирование;
  • быстрое развертывание (рабочее место можно организовать буквально за
    5-10 минут);
  • повышение безопасности корпоративных данных (за счет того, что вся
    информация хранится на сервере, снижается риск хищения данных и вредоносного
    действия вирусов, кроме того, заметно упрощается процедура резервного
    копирования);
  • большее время наработки на отказ (в первую очередь, в связи с
    минимальным количеством механических компонентов);
  • снижение нагрузки на сеть (во время терминальной сессии передаются
    только данные о нажатии клавиш, движениях мыши и обновлениях экрана);
  • отсутствие привязки пользователя к конкретному рабочему месту, юзер
    может получить доступ к своему виртуальному рабочему столу с любого
    терминала, подключенного к серверу (даже из своего дома, используя VPN).

Основная экономия достигается за счет минимизации затрат на приобретение
лицензий на пользовательское программное обеспечение и выбора минимальной
аппаратной конфигурации клиентской части. На рабочем столе пользователя может
стоять как старый комп, по всем параметрам непригодный для большинства
повседневных задач (процессор не ниже Pentium 100, объем оперативной памяти не
менее 16 Мб), так и специализированное устройство (например, на базе процессора
VIA Eden или AMD Geode). Последние компактны, абсолютно бесшумны и потребляют
малую толику электроэнергии (кстати, это позволяет вешать на один бесперебойник
до 10 терминалов).

С вступлением и "железочными" делами закончили, перейдем к софту. Дистрибутив
Thinstation
разработан специально для создания тонких клиентов и оснащен всеми необходимыми
приложениями, обеспечивающими подключение к сервисам по основным протоколам
удаленной работы: Citrix ICA, Microsoft RDP, VNC, NX NoMachine, 2X ThinClient,
VMWare View Open client, X11, Telnet, SSH. Систему можно загружать по сети с
помощью Etherboot/PXE или внешнего носителя (FDD/CD/HDD/CF/USB-flash). Все
настройки производятся централизованно при помощи конфигурационных файлов, что
упрощает управление терминалами.

Знакомимся: Thinstation

Текущей стабильной версией Thinstation является 2.2.2 (от 10 августа
2008 года). Основу дистрибутива составляет ядро 2.6.16.5, XOrg 6.9/XFree86
4.3.99.902, Glibc 2.3.5, GCC 3.4.4, Вlackbox 0.70.1/IceWM 1.2.25, пакет
системных программ Busybox 1.1.3, набор драйверов для различных видео и сетевых
карт, прикладные программы RDesktop, Telnet, Citrix ICA, NoMachine NX, 2X
ThinClient, VMWare View Open client, SSH, OpenVPN. Помимо указанных пакетов,
есть возможность укомплектовать загрузочный образ дополнительными программами,
драйверами и патчами. Кстати, многие предпочитают использовать более ранние
версии Thinstation , поскольку они занимают меньше места и на старых
системах работают чуть быстрее. Единственный минус: для самостоятельной сборки
загрузочного образа понадобится старая версия Glibc.

Для закачки предлагаются уже готовые LiveCD образы для VMware (Linux и
Windows), которые позволяют обойтись без настройки DHCP/TFTP-серверов и
загружаться "напрямую" в виртуальной машине. После установки в vmview/CD найдем
нужный ISO-файл. При загрузке образ будет опрашивать сменные носители (HDD, CD,
USB, FDD) в поисках настроек — файла thinstation.conf.user (о нем ниже).

Как вариант, можно самостоятельно пересобрать образ при помощи скрипта
rebuild-iso или установить дистрибутив на хард/флешку (пример приведен в FAQ на
официальном сайте).

Архив Thinstation-2.2.2.tar.gz (~50 Мб) предназначен для конечного
пользователя (под пользователем подразумевается сисадмин) и содержит уже
скомпилированные, готовые к работе пакеты. Пользователь затем самостоятельно
выбирает, что ему необходимо, и собирает образ. Доступен еще один архив —
thinstation developer (~800 Мб), – он содержит исходные тексты проекта и
предназначен для разработчиков, а также специалистов, желающих скомпилировать и
добавить свою программу в образ, локализовать систему и произвести остальные
донастройки, которые не удается сделать/применить в пакете для конечного
пользователя.

Русификация в оригинальном Thinstation выполнена лишь частично, хотя
это легко исправить, пересобрав дистрибутив, воспользовавшись стандартными HOWTO
по локализации любого Linux. Но сегодня существуют проекты, в которых вопрос
русификации решен изначально —
nixts.org и
www.itadvisor.ru/downloads . Плюс, в этих решениях произведены мелкие
доработки. По ссылкам можно скачать варианты образов и дополнительные пакеты для
Thinstation . Пользователям платформы AMD Geode LX можно обратить внимание
на ThinTonk (www.tonk.ru/support/pxe)
— дистрибутив Thinstation , собранный специально для этих тонких клиентов.
В дальнейшем будем разбирать оригинальную версию.

Собираем свою версию Thinstation

Для сборки нам потребуется рабочий GNU/Linux, его необязательно устанавливать
на живую машину, достаточно и виртуальной. Забираем архив с сайта проекта и
распаковываем:

$ tar xzvf Thinstation-2.2.2.tar.gz
$ cd Thinstation-2.2.2

Конфигурация для сборки клиента находится в файле build.conf. Ничего сложного
файл собой не представляет, внутри находятся закомментированные строки,
соответствующие модулям (драйверам) и пакетам. Кто хоть раз собирал ядро Linux,
сразу поймет, что к чему. Причем, здесь все на порядок проще. Например:

Если требуется загрузить модуль с внешнего источника или создать динамически
загружаемый драйвер, то вместо "module" пишем "module_pkg". Для удобства все
записи разбиты по группам (видео, сетевые карты и т.п.) и детально
прокомментированы. Зная, какое оборудование установлено на клиентских
компьютерах, можно без труда отредактировать настройки. Смотрим на установки по
умолчанию:

$ cat build.conf | grep -v ^# | grep -v ^$
module pcm # PCMCIA Cards
module serial # Serial Device Support
module acpi # Advanced Configuration and Power Interface support
package rdesktop # X RDP client for Windows Terminal Services (ver 1.5)

В образ, созданный из дефолтного конфига, включена поддержка популярного
железа: сеть — Realtek 8139, SIS900, VIA Rhine, видео — VESA, S3, NVIDIA, ATI,
Vmware; из файловых систем доступны FAT32, NTFS, ext2, ext3. Для первого
знакомства с дистрибутивом этого вполне достаточно, но для применения в рабочей
среде его придется подгонять под себя.

Список параметров внутри достаточно большой, поэтому следует терпеливо и
внимательно пройтись по всем настройкам, разобраться и активировать только то,
что действительно необходимо. Лишнее включать не стоит, это увеличит размер
образа, а значит, система будет дольше распаковываться при загрузке и заберет
больше ОЗУ у клиентов. Чуть ниже в списке идут пакеты, включаемые в образ, –
здесь поступаем аналогично модулям. Если используется директива "package", пакет
будет включен в основной образ; если "pkg" — пакет собирается, но его нужно
подгружать отдельно.

Не забудь снять комментарий со строки "package keymaps-ru" и установить
приложения, при помощи которых будем подключаться к выбранному серверу —
rdesktop, vncviewer, nx, ica и т. д. Последним идет раздел "Miscellaneous
Parameters":

$ sudo vi build.conf

### Пароль root для консоли, доступа по telnet/ssh и VNC-сервису
param rootpasswd p@ssw0rd
param xorgvncpasswd p@ssw0rd
### Настройки логотипа и разрешение экрана
param bootlogo true
param bootresolution 1024x768
#param desktop ./background.jpg
### Файл с установками
param defaultconfig thinstation.conf.buildtime
### Имя машины для config/tftp/scp
param basename thinstation
param basepath .
### Файлы для закачки пакетов с помощью wget, данный параметр активируется, если
подключен нужный package, например, для "package ica" сработает:
param icaurl http://download2.citrix.com/files/en/products/client/ica/current/linuxx86.tar.gz
### HTTP-соединения можно устанавливать через прокси
#param httpproxy http://192.168.1.2:8080

Теперь, когда произведены все настройки, набираем:

По окончании выполнения команды результат сборки ищи в подкаталогах
boot-images/{etherboot, initrd, iso, loadlin, pxe, syslinux}.

Кто не хочет устанавливать Linux просто для того, чтобы создать образ
Thinstation
, может воспользоваться онлайн-сервисами, например TS-O-Matics (www.thinstation.net/TSoM).
Для русскоязычных пользователей предназначен ресурс
www.it-advisor.ru/TSoM ,
в котором приложения, входящие в состав Thinstation , изначально
локализованы. Просто заходим, выбираем/вводим параметры, меняем внешний вид
заставки и создаем образ. Правда, с его помощью не удастся добавить в образ свой
пакет, и придется ограничиться только тем, что предлагают разработчики.

Файлы настроек Thinstation

При загрузке клиент Thinstation считывает ряд конфигурационных файлов
(thinstation.conf.*). Параметры, которые в них описываются, в общем-то,
одинаковы, отличается лишь их назначение:

  • thinstation.conf.buildtime — задает параметры в загрузочном образе, его
    нужно подготовить до сборки;
  • thinstation.conf.network — настройки по умолчанию, получаемые с
    TFTP-сервера, этот конфиг используется для установки параметров для всех
    тонких клиентов;
  • thinstation.hosts — содержит данные о клиентах (имя компьютера,
    MAC-адрес, группа);
  • thinstation.conf.group- — совместно с thinstation.hosts
    используется для объединения клиентов в группы;
  • thinstation.conf- — файл для индивидуальной настройки клиента
    по имени компьютера, используется совместно с thinstation.hosts;
  • thinstation.conf- и thinstation.conf- — файл
    индивидуальной настройки клиента соответственно по IP- и MAC-адресу;
  • thinstation.conf.user — конфигурационный файл, сохраняемый на локальных
    носителях (FDD, HDD, USB-flash) в подкаталоге thinstation.profile.

При загрузке файлы с TFTP-сервера считываются в таком же порядке, как
показано выше, применяется первый подходящий клиенту загруженный файл.

В архиве имеется очень простой вариант шаблона thinstation.conf.buildtime,
более расширенную версию можно скачать с сайта проекта (thinstation.sf.net/docs/thinstation.conf.example)
или найти в образах, предлагаемых проектами
nixts.org и
www.it-advisor.ru .

Файл thinstation.hosts состоит из описания имени узла, МАС-адреса, группы и
необязательного комментария:

$ sudo vi thinstation.hosts

thinstation1 000c29d7a8e1 boss
thinstation2 000c00a5a8e2 assistant

Типичные network — user файлы выглядят следующим образом:

$ sudo vi thinstation.conf.network

### Не всегда нужна русская раскладка ("ru")
KEYBOARD_MAP=en_us
SYSLOG_SERVER=local
USB_ENABLED=On
### Имя компьютера, если не используется thinstation.hosts, символ "*"
автоматически заменяется на MAC-адрес
NET_HOSTNAME=ts_*
### Описание сессии
SCREEN=0
WORKSPACE=1
AUTOSTART=On
ICONMODE=AUTO
### Подключение при помощи rdesktop (файл может содержать описание нескольких
сессий)
SESSION_0_TITLE="Microsoft Terminal Server"
SESSION_0_TYPE=rdesktop
SESSION_0_SCREEN=0
SESSION_0_RDESKTOP_SERVER=192.168.1.100
SESSION_0_RDESKTOP_OPTIONS="-u user -a 16 -r sound"
### Настройки экрана
SCREEN_RESOLUTION="1024x768"
SCREEN_HORIZSYNC="30-65"
SCREEN_VERTREFRESH="75"
### Можно указать несколько вариантов, но удобнее зафиксировать оптимальный
# SCREEN_RESOLUTION="800x600 | 1024x768 | *"
### USB-мышь, дополнительно нужно активировать "usb-hid" в build.conf
X_MOUSE_DEVICE=/dev/input/mice

В параметрах RDESKTOP_OPTIONS следует учитывать версию сервера. Так, WinNT4 и
Win2k поддерживают только 8-битный цвет (-a 8), WinXP — 16-битный (-a 16),
Win2k3/Win2k8 — 24-битный (-a 24). Хотя использование "-a 24" на терминалах
часто не имеет смысла. Поддержка звука "-r sound" реализована, начиная с Win2k3.
Особого внимания заслуживают директивы STORAGE_PATH, STORAGE_SERVER и
STORAGE_PREFIX, при помощи которых указывается полный путь к сохраняемому
профилю (это может быть локальный диск или смонтированный NFS/SMB-ресурс). производится с жесткого или другого локального
диска, и используется thinstation.conf.user, сборку можно выполнить с
параметрами:

NET_FILE_ENABLED=Off
NET_USE_DHCP=Off

В этом случае не будет осуществляться DHCP-запрос и производиться попытка
получения конфигов с TFTP-сервера, что на порядок ускорит загрузку тонкого
клиента.

Настройка DHCP- и TFTP-сервера

Для загрузки PXE-образа с удаленной машины нам потребуется корректно
работающие DHCP- и TFTP-сервисы. ОС значения не имеет, – это может быть *nix или
Windows, главное, чтобы кто-то корректно ответил на DHCP-запрос, отправленный
сетевой картой, и выдал файлы по TFTP. Первым делом инсталлируем нужные пакеты
(пример для Ubuntu):

$ sudo apt-get install xinetd tftpd tftp

Затем обеспечиваем автозапуск сервисов. Для запуска TFTP через xinetd создаем
конфиг на основе шаблона:

$ sudo cp /etc/xinet.d/time /etc/xinet.d/tftp

$ sudo vi /etc/xinet.d/tftp

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
### Каталог с PXE-образом
server_args = -s /srv/tftp
disable = no
}

В /etc/xinetd.conf комментируем строку "only_from = localhost". Не забываем
по окончании настроек перезапустить xinetd:

$ sudo /etc/init.d/xinetd restart

Копируем PXE-образ, ядро, initrd и каталог с настройками, созданный по
окончании работы build скрипта, в /srv/tftp:

$ sudo mkdir /srv/tftp
$ sudo cp -vR boot-images/pxe/* /srv/tftp

Проверяем работоспособность TFTP:

$ tftp server.ru
tftp> get pxelinux.0
tftp> quit

Если файл получен, значит, все в порядке. Переходим к настройке DHCP:

$ sudo apt-get install dhcp3-server

В каталоге boot-images/pxe находится готовый шаблон dhcpd.sample, который
можно использовать при создании своего конфига DHCP-сервера:

$ sudo vi /etc/dhcp3/dhcpd.conf

### Описываем нашу подсеть
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}
### Если в сети объявится клиент с MAC-адресом 00:0C:29:d3:96:9b, назначим ему
IP 192.168.1.150 и подсунем загрузчик PXE
host term1 {
hardware ethernet 00:0C:29:d3:96:9b;
fixed-address 192.168.1.150;
filename "pxelinux.0";
}

Чтобы внесенные изменения вступили в силу, перезапускаем DHCP-сервер:

$ sudo /etc/init.d/dhcp3-server restart

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

Остался последний шаг — настроить сервис, к которому будем подключаться.
Установка роли службы терминалов производится через ссылку "Добавить роли" в
"Диспетчере сервера". Отмечаем "Службы терминалов", затем в списке необходимые
службы ролей, как минимум, "Сервер терминалов" и "Лицензирование служб
терминалов". Не забываем о новой фиче, которая появилась в Win2k8 – "Веб-доступ
к службе терминалов" (TS Web Access), при использовании которой пользователи
могут подключаться к TS, используя веб-браузер, и получать список доступных
приложений RemoteApp. Чтобы воспользоваться этой возможностью, достаточно при
сборке Thinstation установить Firefox. При выборе метода аутентификации
выбираем "Не требовать проверку подлинности на уровне сети". В этом случае к
серверу смогут подключаться клиенты с любой версией, в частности, не будет
проблем с Rdesktop, который полностью поддерживает лишь RDP 5 (частично
некоторые функции RDP 5.1 и 6), а для Win2k8 "родным" протоколом является RDP 6.
Далее следуем указаниям мастера, выбирая наиболее подходящие параметры. На этапе
"Группы пользователей" добавляем учетные записи пользователей и группы, которым
разрешен доступ к TS. По завершении установки отправляем терминальный сервер в
ребут.

Загружаемся с Thinstation , – по ходу можно увидеть бегущие строчки,
сообщающие о получении IP-адреса и загрузке PXE-образа. После чего вызываем
RDP-клиент щелчком по значку на рабочем столе — это в случае использования
готового образа; если же соответствующие настройки указаны в thinstation.conf,
подключение к серверу будет произведено автоматически, пользователю достаточно
ввести свой логин и пароль.

Дальнейшие настройки службы терминалов производятся в "Диспетчере сервера", в
одноименной вкладке. В частности, здесь можно просмотреть события, которые
помогут разобраться в возникших проблемах. Удачи в терминальных разборках!

Сценарий загрузки тонкого клиента

  1. Сетевуха тонкого клиента по протоколу PXE запрашивает у DHCP-сервера
    сетевые настройки.
  2. DHCP-сервер, помимо основных настроек (IP-адрес, маска подсети,
    дефолтный шлюз и т.д.), выдает IP-адрес TFTP-сервера и имя образа для
    загрузки.
  3. Клиент подключается к TFTP-серверу и сливает файл загрузчика PXE.
  4. Скачанный PXE-загрузчик исполняется и забирает с TFTP-сервера конфиг,
    в котором прописаны имена файлов ядра Linux (vmlinuz) и образа файловой
    системы (initrd).
  5. После распаковки и загрузки ядра Linux с подмонтированным образом
    файловой системы Thinstation снова обращается к TFTP-серверу для
    скачивания конфигурационных файлов (с настройками подключений, адресами
    терминальных серверов, к которым нужно подключаться, и т.д.). После чего
    запускает нужный терминальный клиент (например, rdesktop) и ожидает от
    пользователя ввода его логина с паролем для подключения.

Сетевая загрузка для старых машин

Возможность выбора сетевой загрузки в BIOS появилась относительно
недавно, и старые компьютеры такой возможности не имеют. Чтобы не
использовать сменные носители или хард, лучше перепрошить ПЗУ сетевой карты.
Готовый образ можно взять на сайте
rom-o-matic.net .
Достаточно выбрать в "Choose NIC/ROM type" марку чипа, используемого на
сетевой карте, и в списке "Choose ROM output format" формат файла. Кроме
версий для ПЗУ (.rom), имеются образы для записи на дискету, болванку и
USB-flash, а также для использования с загрузчиками LILO/GRUB/SYSLINUX. Если
с сетевой картой не повезло, и ее прошивку обновить нельзя, то можно
попробовать перепрошить BIOS материнской платы (если он на
Flash-микросхеме), интегрировав в него PXE-код, взятый с сайта
rom-o-matic.net.

Локализация Thinstation

Оригинальный Thinstation локализован лишь частично, и, скорее
всего, возникнет желание устранить эту проблему. Для этого как раз необходим
девелоперский пакет. Первым делом следует пересобрать ядро, активировав в
разделах DOS/FAT/NT Filesystems, Network File Systems и Native Language
Support все модули, в которых фигурируют кодировки CP1251 и 866. Далее ищем
в packages/base/etc/udev/scripts три скрипта floppy.sh, ide.sh, usb.sh,
отвечающие за монтирование файловых систем. Добавляем запись "-o iocharset=cp1251,codepage=866"
к командам внутри sh-файлов. Например, строка для FAT:

mount -t vfat -o iocharset=cp1251,codepage=866 /dev/$devpath /mnt/disc/$name/$name

В поставке есть и другие скрипты и конфигурационные файлы, которые
потребуется поправить в случае необходимости. Для Samba в smb.conf.tpl и
smb.conf также меняем кодировку:

unix charset=cp1251
display charset=cp1251
dos charset=866

Локаль следует указать и в строке запуска rdesktop, например, для
ru_RU.KOI8-R добавляем "-P KOI8-R".

INFO

Тонкие клиенты не требовательны к железу (поскольку все вычисления выполняет
мощный сервер) и заточены для работы в бездисковом режиме (без FDD/CDROM/HDD).

В качестве тонкого клиента под управлением Thinstation может выступать
любой компьютер на базе архитектуры x86 с процессором не ниже Pentium 100 и
объемом оперативной памяти не менее 16 Мб.

Как правило, на терминальных серверах используется общесистемное программное
обеспечение Windows, Linux, xBSD, Solaris, а тонкие клиенты функционируют под
управлением Windows CE, Linux или xBSD.

Thinstation — мини-дистрибутив Linux, позволяющий превратить старые
компы в полноценные бездисковые тонкие клиенты, поддерживающие все основные
протоколы подключения: RDP, VNC, ICA, X11, Telnet, SSH и т.п.

Thinstation можно загружать по сети с помощью Etherboot/PXE или со
стандартного носителя — FDD/CD/HDD/CF/USB-flash.

PXE (Pre-boot eXecution Environment) - среда предзагрузочного выполнения.

О том, как настроить сервер терминалов в Win2k3, можно узнать из статьи " ", опубликованной в

за 2007 год.

WARNING

Службы DHCP и TFTP должны функционировать на одной машине!

При выходе из строя сервера или неполадках в сети тонкие клиенты превращаются
в бесполезные ящики.

Привет, сегодня мы будем собирать последнюю версию загрузочного образа для тонких клиентов — Thinstation! В данной статье мы соберем загрузочный образ Thinstation, настроим и сервер для загрузки сего образа тонкими клиентами по сети, посредством протокола . Данная статья расчитана на более продвинутых пользователей, у которых есть понимание того, что такое , у кого в парке есть хотя бы одна машина с и базовый багаж знаний работы с nix подобными системами. Для тех, у кого нет таких знаний будет статья о том, как собрать такой образ из готового загрузочного диска .

Что у нас должно быть

  • Lunix машина (для сборки образа на ней)
  • DHCP сервер
  • Укромное местечко для TFTP сервера
  • Собственно тонкие клиенты
  • Терминальный (или любой другой сервер) для того, что бы эти тонкие клиенты туда подключались.

Оговорюсь относительно последнего пункта. Тонкие клиенты на Thinstation могут работать не только в режиме подключения к терминальному серверу, но и как самостоятельные бездисковые рабочие станции на ОС Linux с полным набором софта. Правда в пределах этой стати, мы рассмотрим только первый и самый распространенный вариант.

Приступаем к сборке. Подключаемся к нашей Linux машине (в данном случае я использую виртуальную машину на Ubuntu 14.04 на VMware Workstation, так очень удобно). Первым делом установим git, для того, что бы забрать последнюю версию Thinstation.

Apt-get install git-core

Далее перейдем в папку, в которой будем разворачивать окружение для сборки образа и начнем его качать (это довольно длительный процесс, около 40 минут. Свободного дискового пространства нам понадобится около 3GB)

Cd /home/verbin/Documents/ git clone --depth 1 git://github.com/Thinstation/thinstation.git

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

Cd thinstation ./setup-chroot

По окончанию сего процесса вы увидите примерно такой вывод в консоле. Это означает что все готово для сборки нашего первого и пока что «толстого» образа. Толстого — то есть с полным набором пакетов и драйверов, для первой загрузки станции и последующего определения только необходимых нам составляющих и исключения лишних из образа.

Все работы по сборке образа Thinstation должны проводится в данной виртуальной среде. Для скрытия приветствия (README) нажимем Q и попадаем в командную строку chroot

Переходим в папку ts/5.x/ в которой находятся конфиги и скрипт сборки. Краткий ликбез по требующим внимания файлам.

  • build.conf — Корневой конфигурационный файл, в котором указываются необходимые драйвера, параметры и пакеты для сборки образа.
  • thinstation.conf.buildtime — Конфигурационный файл уже Thinstation образа, указанные в нем параметры будут «зашиты» в образ. Воздержимся от использования оного, лучше оставим это на потом и будем использовать обычные конфигурационные файлы находящиеся на TFTP сервере вместе с образом. Так — более гибко.
  • boot-images/ — Директория в которой после сборки образа появятся папки с образами нашего Thinstation для разных типов загрузки
  • boot-images/pxe/ — Собственно директория в которой после окончания сборки образа будут находится необходимые нам файлы образа для загрузки по PXE.

Сборка «толстого» образа

Сразу оговорюсь о том, что можно закоментировать пакет «package chrome» в buid.conf, так как он попросту не нужен и является одним из самых «тяжелых», значительно повышая вероятность того, что у вашего тонкого клиента не хватит оперативной памяти для запуска (так же размер самого образа вырастет мегабайт на 20-30).

Так же опишу несколько важных опций в buid.conf из раздела настроек (param)

  • param rootpasswd — Пароль для пользователя root в образе (для доступа к административным функциям)
  • param xorgvncpasswd — Пароль для подключения к станциям по VNC (если этот пакет был включен при сборке «package xorg7vnc» )
  • param bootresolution — Разрешение экрана при загрузке
  • param desktop file: — Стандартный фон (рабочий стол и загрузка системы)
  • param httpproxy — Настройка прокси (если загрузка файлов доступна только через proxy. В значении можно указать и авторизацию user:password@proxy:port)

Приступаем к сборке следующей командой.

./build --allmodules

Во время данного процесса могут появится запросы подтверждения загрузки недостающих компонентов, соглашаемся Y. Пока ждем окончания сборки — сконфигурируем TFTP сервер и DHCP для PXE загрузки с него (Cisco DHCP или Windows DHCP).

Сборка завершена, теперь копируем файлы образа из папки boot-images/pxe/ (полный путь: thinstation/ts/5.2/boot-images/pxe/) на наш TFTP сервер. Вполне вероятно что наш образ полностью не запустится. Нам нужно что бы образ загрузился до того состояния, когда на экране будет фоновое изображение и прогрессбар загрузки, в этот момент нужно нажать Ctrl+Alt+F3, попадаем в консоль (в противном случае, если станция не запустится даже до этого шага — это означает что не хватило оперативной памяти (убираем лишние модули в build.conf).

Итак, мы попали в консоль нашего толстого образа и видим приглашение войти (вводим root / pleasechangeme — если не меняли это в buid.conf). Далее выполняем команду

Hwlister.sh

которая сгенерирует нам файлы профиля конкретного железа тонкого клиента (module.list) и графических режимов (vbe_modes.list). Забираем эти файлы на нашу Lunix машину где проводится сборка образа (любым удобным способом, я показываю пример как это сделать через наш TFTP сервер).

Cd / tftp -p -l module.list -r module.list 192.168.1.3 tftp -p -l vbe_modes.list -r vbe_modes.list 192.168.1.3

Создаем папку для профилей нашего тонкого клиента и кладем в нее файлы module.list и vbe_modes.list

Mkdir thinstation/ts/5.2/machine/Thinclient

Финальная конфигурация и сборка

В файле build.conf

  • machine Thinclient — Название профиля оборудования по которому будет производится сборка.
  • package xorg7-vesa — Стандартный видеодрайвер (рекомендуется включать его в сборку).
  • package freerdp или package rdesktop — Выбираем RDP клиент который будем использовать (можно добавить оба).
  • package xorg7vnc — VNC сервер для удаленного управления клиентами.
  • param fastboot true — Значительно ускоряет загрузку бездисковых систем но могут быть проблемы из-за не совместимости с сетевой картой

В файле thinstation.conf.buildtime

  • DONT_VT_SWITCH_STATE=TRUE — Запретит переключение в консоль посредством Ctrl+Alt+F3
  • DONT_ZAP_STATE=TRUE — Запрет переинициализации графического режима через Ctrl+Alt+Backspace (тоже лазейка к консоли)

Начинаем финальную сборку находясь в папке thinstation/ts/5.2/ и

./setup-chroot ./build

Полученный образ кладем в корень TFTP сервера и там же создаем стандартный общий конфигурационный файл thinstation.conf.network в который добавим параметры подключения к терминальному серверу (обратите внимание — для freerdp клиента и rdesktop указаны разные команды подключения по RDP).

SESSION_0_TITLE="Terminal Server rdesktop" SESSION_0_TYPE=rdesktop SESSION_0_SCREEN=1 SESSION_0_RDESKTOP_SERVER=192.168.1.10 SESSION_0_RDESKTOP_OPTIONS="-d "DOMAIN" -u "USER"" SESSION_0_AUTOSTART=On SESSION_1_TITLE="Terminal Server freerdp" SESSION_1_TYPE=freerdp SESSION_1_SCREEN=1 SESSION_1_SCREEN_POSITION=2 SESSION_1_FREERDP_SERVER=192.168.1.10 SESSION_1_FREERDP_OPTIONS="-d "DOMAIN" -u "USER"" SESSION_1_AUTOSTART=On

Пример классического thinstation.conf.network можно найти . В следующих статьях рассмотрим более подробную конфирурацию тонких клиентов, индивидуальные конфигурационные файлы для разных станций и прочее.

ЕВГЕНИЙ БУШКОВ

Подробное руководство по настройке
тонких клиентов на основе дистрибутива Thinstation и протокола NX

Технология NX, разработанная фирмой Nomachine, дает новые возможности для связи и способна оживить старые компьютеры в роли тонких клиентов

Прежде чем перейти непосредственно к описанию NX, перечислю некоторые тенденции, которые сегодня становятся очевидными для многих крупных компаний нашей страны:

  1. Компьютерная техника дешевеет и становится более доступной, чем раньше. При этом её производительность удваивается каждые 1,5-2 года согласно закону Мура. Это приводит к накоплению техники, не выработавшей свой ресурс, но уже устаревшей.
  2. Разработанные на предприятиях силами программистов отделов АСУ в перестроечные годы клиент-серверные приложения еще работают на старой технике, но уже не соответствуют требованиям времени.
  3. Современные программное обеспечение и операционные системы не заставить работать на компьютерах с процессорами прежних поколений (i386, i486 и т. д.).
  4. Не секрет, что во многих организациях нашей страны с давних времен незаконно используются многие программы и ОС, которые сотрудники устанавливали по своей инициативе. Вначале это рассматривалось как само собой разумеющееся обстоятельство, потом оправдывалось финансовым положением. Сейчас, когда наша страна вступает в ВТО, правительство вынуждено такую ситуацию спешно исправлять, в связи с этим усилилось давление на предприятия со стороны внутренних органов с требованием отказаться от незаконно используемых ПО и ОС.

Очевидно противоречие между вторым и третьим пунктами: необходимо или найти способ, позволяющий эффективно задействовать старую технику для выполнения современных задач, или отказаться от этой техники. Если имеется достаточно средств, то выбор понятен. Но что делать, если средств нет или нет возможности списать такую технику, да и просто выкидывать жалко? И как решать не менее острую проблему «лицензионной чистоты» используемых программ, о которой говорится в четвертом пункте?

На помощь приходят терминальные технологии, которые позволяют задействовать старые компьютеры, а также частично снять вопросы «лицензионной чистоты», если применять решения на базе продуктов Open Source.

В журнале уже публиковалось несколько статей по работе с дистрибутивом Thinstation [ , ]. В этой статье я расскажу об особенностях настройки и опыте эксплуатации на своем предприятии тонких клиентов на базе дистрибутива Thinstation и технологии NX, разработанной фирмой Nomachine.

До недавнего времени в мире терминальной связи было мало известно удачных сетевых протоколов высокого уровня, способных эффективно сжимать и шифровать трафик между тонким клиентом и сервером. Наиболее известные и популярные из них – это RDP от Microsoft и ICA от Citrix. Оба протокола используются серверами на базе ОС MS Windows. Меня же интересовала возможность использовать тонкие клиенты с серверами на базе Linux. В качестве основы для тонкого клиента почти сразу был выбран небольшой дистрибутив, этакий Linux-конструктор, Thinstation – как наиболее стабильно развивающийся и популярный в нашей стране и за рубежом. А вот с выбором протокола, который бы отвечал за общение с сервером, пришлось повозиться и поэкспериментировать. Перечислю основные критерии, по которым выбирался протокол. Во-первых, нам хотелось использовать как можно более широкий диапазон старых компьютеров, имеющих процессоры начиная с i486, с минимальным объемом памяти, такой техники у нас предостаточно. Во-вторых, отметались коммерческие продукты: мы не хотели нести дополнительные расходы. В-третьих, необходимы хорошая поддержка русского языка и кириллицы, а также наличие привычного для пользователей способа переключения между раскладками – комбинации клавиш . В-четвертых, в рамках локальной сети нам необязательна поддержка шифрации, но важны сжатие и минимизация сетевого трафика.

Поиск решения

В первую очередь я обратил внимание на VNC как наиболее распространенный и имеющийся в любом дистрибутиве Linux, а также являющийся легким в настройке продуктом. Когда необходимо подключиться к удаленному рабочему столу Linux-сервера с рабочей станции Windows или того же Linux, то первое, что приходит в голову, это VNC. Скачайте последнюю версию дистрибутива Thinstation , затем распакуйте полученный архивный файл в домашнем каталоге. Будем считать, что путь к дистрибутиву выглядит так: ~/thinstation. Файл, отвечающий за параметры сборки, находится здесь: ~/thinstation/build.conf. Он имеет подробные комментарии. О его настройке, а также о том, как заставить образ Thinstation загружаться при помощи сетевой карты с бутовой микросхемой, я подробно рассказывать не буду, об этом уже писалось в указанных статьях. Коротко перечислю действия по настройке клиента: редактируем ~/thinstation/build.conf и создаем образ, запустив скрипт ~/thinstation/build. Готовый файл образа ~/thinstation/boot-images/etherboot/thinstation.nbi копируем на TFTFP-сервер. Добавляем в файл настройки dhcp.conf DHCP-сервера запись о MAC-адресе сетевой платы тонкого клиента. В каталоге TFTP-сервера создаем файл с настройками для данного MAC-адреса и(или) редактируем файл thinstation.conf.network. Настройки моей рабочей системы можно посмотреть в листинге раздела «Настройка и создание образа Thinstation» и на рис. 1.

Для того чтобы добавить в образ пакет VNC-клиента, раскомментируем строчку «#package vncviewer» в конфигурационном файле ~/thinstation/build.conf. Если каталог tftp-сервера находится в /tftpboot (как это у меня), то отредактируйте файл /tftpboot/thinstation.conf.network таким образом, чтобы в нем появились строчки:

SESSION_0_TYPE=vncviewer
SESSION_0_TITLE="VNC"
SESSION_0_VNCVIEWER_SERVER=10.10.10.10:5901

IP-адрес 10.10.10.10 замените на адрес вашего VNC-сервера.

Теперь проверим собранный с новым параметром образ в работе: включаем тонкого клиента, дожидаемся загрузки и запуска образа Thinstation, подключаемся к VNC-серверу. Обратите внимание на то, что переключение раскладок происходит с помощью клавиши «правый Alt». Собственно, виноват здесь не VNC-клиент, а файл Thinstation из пакета поддержки кириллицы keymaps-ru. Чтобы долго не возиться с поисками решения проблемы, я сгенерировал xkb-файл в настроенной системе SUSE-10.0 следующим образом:

xkbcomp:0 ru.xkb
xkbcomp -xkm ru.xkb ru.xkm

Утилита xkbcomp конвертирует описание XKB-раскладки в один из форматов. В первой команде генерируется дамп текущей раскладки из источника, в качестве которого выступает X-дисплей «:0». Вторая команда компилирует полученный файл в понятный для системы двоичный вид. Заменяем исходный файл своим:

cp -f ru.xkm ~/thinstation/packages/keymaps-ru/x-common/lib/kmaps/xkb

После сборки образа получаем нормальное переключение раскладок по . Вот только работает VNC-клиент недопустимо медленно. На компьютерах с процессором ниже P-200 начинается этакое «слайд-шоу», когда любое действие на удаленном рабочем столе сопровождается неторопливой прорисовкой этих изменений на экране монитора тонкого клиента. Существует множество VNC-решений, использующих схожие методы кодирования данных при передаче, все используют протокол Remote FrameBuffer (RFB). Различаются они количеством функций, параметрами кодирования данных, а также числом поддерживаемых платформ. Например, RealVNC поддерживает сервер и клиент для Windows, UNIX, Microsoft PocketPC и Mac OS X, TightVNC включает сервер и клиент для Windows и UNIX, VNC for DOS – клиент для DOS, UltraVNC – сервер и клиент для Windows, OSXvnc – сервер и клиент для Mac OS X. Я протестировал RealVNC и TightVNC: второй продукт (и сервер, и клиент) субъективно немного быстрее, но оба создают эффект «слайд-шоу» на слабых компьютерах. Придется попробовать что-нибудь другое в качестве протокола связи между клиентом и сервером. VNC пока оставим в покое, позже придется к нему еще вернуться. Вот здесь я обратился к NX.

Поддержка Nomachine NX-клиента впервые появилась в Thinstation версии 2.1 в 2005 году, а последней на текущий момент является 2.2, она и будет подразумеваться далее. Для сборки образа с пакетом NX раньше был необходим прямой доступ в Интернет, в последних версиях Thinstation появилась возможность указывать путь к файлу префиксом «file://». Используемый и поддерживаемый дистрибутивом Nomachine NX клиент до сих пор имеет версию 1.5.x, хотя уже прошло достаточно времени с момента появления новой версии NX 2.0. В файле конфигурации build.conf раскомментируем строку «package nx», также в конце файла найдем строку «param nxurl»: укажем путь к заранее скачанному файлу, либо оставим как есть(нужен доступ в Интернет). Полученный сгенерированный образ копируем в каталог tftp-сервера, туда же копируем файл thinstation.conf.sample из корня дистрибутива, переименовываем его в thinstation.conf.network и правим: ищем на предмет #SESSION_0_TYPE=NX и редактируем строчки, относящиеся к этой сессии (здесь с номером 0), внося нужные параметры.

Включаем тонкого клиента и загружаем созданным образом, проверяем быстродействие. Прогресс налицо: «слайд-шоу» прекращается на ПК с процессором P-100, P-120 и выше. Это не то, чего бы нам хотелось получить в результате, так что ПК с процессорами i486 задействовать здесь не удастся. Такие ПК мы назвали «супертонкими» клиентами и определили их для работы с ДОС-программами, используя связку FreeDOS и sshdos со стороны клиента и Dosemu со стороны Linux-сервера. В этой статье я о них рассказывать не буду. Тем не менее это хороший результат, посмотрим на требования к железу со стороны разработчиков Thinstation и NX-клиента: первые рекомендуют i486-процессор и 16 Мб памяти, вторые – процессор с частотой от 400 Мгц и памятью 128 Мб. Минимально необходимой конфигурацией для работы тонкого клиента с пакетом NX эмпирически определим процессор P-120 и объем оперативной памяти 32 Мб. Я протестировал и некоторые другие клиенты, в частности, XRDP, VNC for DOS, но по той или иной причине реальной альтернативы NX я не нашел. Теперь пришло время познакомиться с технологией NX поближе.

Обзор и краткое описание Nomachine NX

Архитектура NX – это набор Open Source-технологий и коммерческих средств, призванных обеспечить легкость и распределенность сетевых вычислений. Он состоит из серверного ПО, позволяющего любому UNIX-компьютеру стать терминальным сервером, и клиентов для широкого набора платформ и ОС. Nomachine выбрала в качестве основы для архитектуры NX известную и широко используемую систему X-Window, на которой основаны GUI Linux и других ОС UNIX.

Большинство имеющихся сетевых решений не было разработано в качестве основного средства для доступа пользователей к рабочему столу. Такие протоколы как RDP и VNC являются много более простыми, чем X (и поэтому хорошо подходящими для тонких клиентов), но их простота не компенсирует недостатка эффективности и функциональности. Например, эти протоколы используют для прорисовки удаленного экрана передачу больших объемов данных изображений. Хотя RDP и является более эффективным протоколом, чем RFB (протокол, используемый VNC), он был изначально разработан не для ежедневного использования устройствами сети, а лишь в качестве расширения для ОС. X-Window – это графическая подсистема (а не расширение ОС), и X-приложения взаимодействуют с ней, используя X-протокол, поэтому ОС не имеет специального уровня, отвечающего за трансляцию обновлений экрана в сетевой протокол.

Основными недостатками сетей с X-терминалами являются избыточность и задержки в передаче графических данных X-протокола. Со времени появления X-Window рабочий стол пользователя оброс всевозможными графическими элементами и эффектами, которые увеличили требования к сетям передачи данных.

На рис. 1 под цифрой 1 показана традиционная работа по протоколу X: сжатия нет, требования к пропускной способности и задержкам сети критичны. Напомню, что в идеологии X-Window X-сервер работает на терминале, а на терминальном сервере – X-клиент, который шлет запросы X-серверу терминала .

В простейшем случае можно запускать приложения с графическим выводом с помощью параметра -X команды ssh, например, «ssh -X me@server firefox». Можно добавить параметр -С для компрессии(используется библиотека ZLIB). Также можно оптимизировать скорость взаимодействия узлов, увеличивая пропускную способность сети. Но существует предел, выше которого увеличение пропускной способности перестанет влиять на скорость этого взаимодействия. Причиной тому – интенсивный обмен запросами/ответами современных X-приложений.

NX использует три основных метода ускорения работы приложений: сжатие, кэширование и подавление избыточного трафика X-протокола.

Все три метода совокупно позволяют достичь 70-кратного улучшения работы с удаленным X GUI при использовании наибольшего уровня сжатия на линиях связи с низкой пропускной способностью и большой задержкой (в настройках клиента NX «modem» соответствует максимальному сжатию, а «lan» – отсутствию сжатия). На рис. 1 под цифрой 2 показана взаимосвязь компонентов NX: на модулях NX Proxy осуществляется компрессия/декомпрессия и кэширование, между ними проходит трафик по NX-протоколу, требования к качеству линий связи минимальны, заявляется о возможности работы вплоть до скорости 9600 бит/сек.

Подобно трансляции X-трафика посредством nxagent, имеется другой агент («nxviewer»), который транслирует RFB/VNC-трафик в протокол NX. Это улучшает эффективность соединений до 10 раз по сравнению с работой обычного vncviewer, связывающего локальный X-дисплей с удаленным сервером VNC. В этом мы убедимся.

На рис. 1 под цифрой 3 показана возможность одновременной работы разных агентов NX, RDP, VNC. При этом NX-агенты эффективно транслируют чужеродные протоколы в свой собственный и далее передают трафик через NX Proxy.

  • NX Proxy – этот компонент как раз и отвечает за компрессию/декомпрессию: в клиентском режиме кодирует запросы от X-клиентов и декодирует ответы от X-сервера, в серверном – наоборот.
  • NX Agent – термин «агент» используется для описания компонента, которому передается сформированное изображение перед передачей в сеть через прокси.
  • NX Viewer – модифицированный Nomachine обычный VNC-клиент, транслирующий VNC/RFB-трафик в NX-протокол.
  • NX Desktop – RDP-клиент, который транслирует RDP-трафик в NX-протокол.

Nomachine открыла исходные коды большинства своих наработок и библиотек, их можно скачать всем желающим с . Сборки от самой Nomachine для всех клиентов доступны бесплатно, также есть различные варианты сборок NX-серверов, поставляемые за определенную плату: годовая подписка на NX Enterprise Server с неограниченным количеством пользователей и числом процессоров 1-2 стоит 1494$, наиболее полное решение с балансировкой нагрузки и управлением узлов на базе NX Advanced Server обойдется в 3494$. Кроме того, имеется вариант NX Free Edition, который можно скачать бесплатно, но имеет ограничение на количество одновременных соединений и пользователей, равное двум, так что если есть желание администрировать Linux-сервер из дома с помощью обычного аналогового модема, то лучше, безопаснее и проще этого решения не найти. Отмечу также наличие клиентских версий NX Client Desktop Edition для PlayStation 2 (при использовании Linux Kit), а также NX Client Embedded Edition для Sharp Zaurus 5xxx и HP/Compaq iPAQ. Их можно также скачать бесплатно . Так что, если вы в командировке, а с собой только КПК, ничего не мешает подключиться и работать удаленно на своем Linux-сервере.

Сборка и запуск NX

В свою очередь, на основе открытых исходников сообщество разработало версию серверной части NX под названием FreeNX, а также KNX – клиент для соединения с сервером из под X. FreeNX – это набор shell-скриптов, которые вместе с открытыми библиотеками от NX формируют серверную часть (backend).

Вначале работы с NX в качестве сервера мною использовался ПК с ОС SUSE 10.0. В составе дистрибутива уже шла сборка FreeNX, но, во-первых, она имела более чем годовую давность, а, во-вторых, столкнувшись с первыми трудностями при работе, я решил, что пора собрать серверную часть из исходников самому. Рассказывать буду о сборке из исходников версии 1.5 как наиболее проверенной временем, а потом уточню, какие имеются особенности для сборки версии 2.0(2.1).

В настоящий момент на сайте Nomachine выложены исходники версии NX 2.0, эта версия является рекомендуемой фирмой, а на исходники версии 1.5 там же имеется специальная ссылка. Качаем последние версии следующих тарболов со странички : nx-X11, nxagent, nxcomp, nxcompext, nxdesktop (если нужна поддержка RDP), nxproxy, nxscripts, nxviewer (если нужна поддержка VNC). nx-X11 – это версия 4.3 Xfree86, которая имеет модифицированные Nomachine X-библиотеки. Часть исходников будет распаковываться прямо в дерево nx-X11, поэтому развернем его в первую очередь, очередность распаковки остальных тарболов неважна, главное, чтобы они все распаковывались в одном каталоге. Туда же качаем и распаковываем скрипты FreeNX с адреса . Еще понадобятся два патча, качаем их отсюда [ , ]. Каталог нашей сборки примет следующий вид:

  • freenx-0.4.4
  • nx-X11
  • nxcomp
  • nxcompext
  • nxdesktop
  • nxproxy
  • nxscripts
  • nxviewer
  • freenx-lfs_hint.diff
  • NX-lfs_hint.diff

Для сборки понадобятся следующие пакеты (их можно установить из вашего дистрибутива Linux): libjpeg-devel, libpng-devel, openssl-devel, netcat, expect. Описание сборки можно найти также здесь .

# Накладываем NX patch
patch -p0 < NX-lfs_hint.diff

# Собираем X – самая длительная часть, может занять до часа времени
pushd nx-X11
make World
popd

# nxproxy
pushd nxproxy
./configure --prefix=/srv/NX
make
popd

# Сборка RFB-агента
pushd nxviewer
xmkmf -a
cp -a /usr/X11R6/lib/libXp.so* ../nx-X11/exports/lib/
make 2> /dev/null
popd

# Сборка RDP-агента
pushd nxdesktop
./configure --prefix=/srv/NX --sharedir=/srv/NX/share
make
popd

# Вся серверная часть будет находиться в каталоге /srv/NX, создаем некоторые из подкаталогов
mkdir -p /srv/NX/bin
mkdir -p /srv/NX/lib
mkdir -p /srv/NX/man/man1
mkdir -p /srv/NX/share/doc

# Инсталлируем собранные библиотеки и агенты
cp -a nx-X11/lib/X11/libX11.so.* nx-X11/lib/Xext/libXext.so.* nx-X11/lib/Xrender/libXrender.so.* /srv/NX/lib
install -m 755 nx-X11/programs/Xserver/nxagent /srv/NX/lib

# Создаем скрипт nxagent, который будет управлять всеми программами
cat > nxagent << "EOF"

#!/bin/sh

NXCOMMAND=$(basename $0)

export LD_LIBRARY_PATH=/srv/NX/lib:$LD_LIBRARY_PATH
exec /srv/NX/lib/$NXCOMMAND ${1+"$@"}
EOF

# И устанавливаем его:
install -m 755 nxagent /srv/NX/bin

# Устанавливаем библиотеки сжатия и прокси
cp -a nxcomp/libXcomp.so.* /srv/NX/lib
cp -a nxcompext/libXcompext.so.* /srv/NX/lib
install -m 755 nxproxy/nxproxy /srv/NX/lib
ln -snf nxagent /srv/NX/bin/nxproxy

# Установка RFB-агента
pushd nxviewer
make install DESTDIR=/srv/NX
mv /srv/NX/usr/X11R6/bin/nxviewer /srv/NX/lib
ln -snf nxagent /srv/NX/bin/nxviewer
chmod 755 /srv/NX/bin/nxviewer
mv /srv/NX/usr/X11R6/bin/nxpasswd /srv/NX/bin
popd

# Установка RDP-агента
pushd nxdesktop
make install
mv /srv/NX/bin/nxdesktop /srv/NX/lib
ln -snf nxagent /srv/NX/bin/nxdesktop
chmod 755 /srv/NX/bin/nxdesktop
rm -rf /srv/NX/usr
popd

# Установка скриптов

# Установка FreeNX
mkdir -p /srv/NX/etc
mkdir -p /srv/NX/var
mkdir -p /srv/NX/var/db
mkdir -p /srv/NX/home
mkdir -p /srv/NX/home/nx
pushd freenx-0.4.4

# Накладываем патч freenx, в основном здесь правятся пути на соответствие /srv/NX
patch -p0 < ../freenx-lfs_hint.diff
cp -a nxnode /srv/NX/bin
cp -a nxserver /srv/NX/bin
cp -a nxsetup /srv/NX/bin
cp -a nxkeygen /srv/NX/bin
cp -a nxnode-login /srv/NX/bin
cp -a nxloadconfig /srv/NX/bin
cp -a nxclient /srv/NX/bin
cp -a nxprint /srv/NX/bin
install -m 755 node.conf.sample /srv/NX/etc
popd

# Добавляем пользователя и группу nx
groupadd -g 77 nx
useradd -c "FreeNX user" -d /srv/NX/home/nx -g nx -s /bin/bash -u 77 nx
chown -R root.root /srv/NX
chown -R nx.nx /srv/NX/home/nx

# Далее важный момент, прежде чем запускать, ознакомьтесь с параметрами запуска команды: /srv/NX/bin/nxsetup –help.
# Если хотите использовать аутентификацию пользователей с помощью ключей, уберите параметр –setup-nomachine-key.
# Для работы с тонкими клиентами можно ничего не менять
/srv/NX/bin/nxsetup --install --uid 77 --gid 77 --setup-nomachine-key

# Проверяем, работает ли сервер NX:
/srv/NX/bin/nxserver --status

Должен быть примерно такой ответ:

NX> 100 NXSERVER - Version 1.4.0-44 OS (GPL)
NX> 110 NX Server is running
NX> 999 Bye

Устанавливаем конфигурационный файл freenx:

mv /srv/NX/etc/node.conf.sample /srv/NX/etc/node.conf

В конфигурационном файле находим следующую строчку и раскомментируем ее:

ENABLE_1_5_0_BACKEND="1"

Там же можно на первое время включить возможность ведения лога:

NX_LOG_LEVEL=6

Теперь можно установить клиент Nomachine NX на любой компьютер Linux (можно использовать и KNX) или Windows и проверить работу NX-сервера. C сервером можно работать как в режиме приложений, так и в режиме удаленного рабочего стола.

Настройка и создание образа Thinstation

От серверной части NX теперь перейдем к созданию образа Thinstation. Сам дистрибутив можно скачать здесь . При сборке образа будем стараться максимально уменьшить количество модулей и пакетов, все лишнее выкидываем. Поскольку у многих компьютеров, выбранных в качестве тонких клиентов, железо и периферия будут отличаться, то отдельные пакеты хотелось бы вынести за рамки общего для всех образа. Такая возможность у Thinstation есть: pkg означает собрать как отдельный подгружаемый пакет с расширением pkg, package означает включение в общий образ. Пакеты lprng, sshd, samba-server и другие однозначно собираем как подгружаемые. Можно все пакеты с X-драйверами видеокарт указать как pkg, но тогда при сборке образа появятся несколько дополнительных пакетов, которые надо будет подгружать всем, и в результате общий размер подгружаемых данных будет больше. Поступим проще: один из видеодрайверов, наиболее часто используемый, а именно S3, укажем как package, остальные – pkg. Модули тоже можно выносить за пределы ядра, но пока эта возможность работала некорректно, к тому же места в составе ядра они занимают совсем немного. Ниже представлен мой файл конфигурации build.conf:

module serial
module intel-agp
module via-agp
module 8139too
module floppy
module vfat
module supermount
pkg xorg6-ati
pkg xorg6-i810
pkg xorg6-nv
package xorg6-s3
pkg xorg6-s3virge
pkg xorg6-sis
pkg xorg6-trident
package keymaps-ru
package nx
pkg lprng
pkg sshd
pkg samba-server
param rootpasswd pleasechangeme
param xorgvncpasswd pleasechangeme
param bootlogo false
param bootresolution 800x600
param defaultconfig thinstation.conf.buildtime
param basename thinstation
param basepath .
param knownhosts ./known_hosts
param localpkgs true
param fulllocales false
param bootverbosity 3
param nxurl file://home/zhen/sources/nx/bin/nxclient-1.5.0-141.i386.tar.gz

Если будете использовать печать на принтер, подключенный к тонкому клиенту с помощью lprng, необходимо внести небольшую модификацию в файл thinstation/packages/lprng/etc/init.d/lprng. Для этого замените строчку:

echo "$PRINTER_X_NAME:lp=$PRINTER_X_DEVICE:wd=$PRINTER_X_DRIVER:br=$PRINTER_X_OPTIONS:lf=/var/log/spooler.log:sh:sf" >> /etc/printcap

echo "$PRINTER_X_NAME:lp=$PRINTER_X_DEVICE:wd=$PRINTER_X_DRIVER:br=$PRINTER_X_OPTIONS:if=/bin/lpf:lf=/var/log/spooler.log:sh:sf" >> /etc/printcap

Добавление локальной фильтрации избавило меня от проблемы «лесенки» при печати. Кроме того, я создал следующий скрипт для проверки работы печати ~/thinstation/packages/base/bin/my:

#!/bin/sh
echo PRINTER TEST to /dev/printers/0 1>&2
for i in 1 2 3 4 5 6 7 8 9;
do
echo PRINTER /dev/printers/0 $i > /dev/printers/0;
done
echo -e \\r\\f > /dev/printers/0
exit 0;

Когда непонятно, что именно не работает, можно выполнить этот скрипт на консоли тонкого клиента: /bin/my.

Чтобы при подключении клиента NX к серверу каждый раз не появлялось окошко с предупреждением о незнакомом хосте, создадим в корне Thinstation файл known_hosts:

ssh-keyscan -t rsa nxserver_ip>>~/thinstation/known_hosts

В качестве «nxserver_ip» надо указать IP-адрес NX-сервера. Таким образом клиент будет знать о цифровом отпечатке rsa-ключа NX-сервера при аутентификации.

После успешного выполнения build копируем thinstation/boot-images/etherboot/thinstation.nbi и thinstation.nbi.zpxe, а также все pkg-файлы из thinstation/boot-images/pkg-packages в каталог /tftpboot на tftp-сервер. У меня создающийся файл thinstation.nbi.zpxe не заработал, в таком случае по адресу можно скачать файл BootPXE535.zip, в этом архиве есть универсальный загрузчик loader-native.zpxe, с ним все должно работать.

Конфигурационные файлы Thinstation достаточно хорошо откомментированы, но вот сам процесс настройки и последовательность действий не всегда очевидны, так что некоторые трудности, с которыми мне пришлось столкнуться, и тонкости я все-таки упомяну.

На рис. 3 показаны основные действия по включению тонкого клиента в работу. Сначала добавляем информацию о MAC-адресе сетевой карты в dhcpd.conf. Не забудьте указать настройки в описании подсети, связанные с tftp, они задаются директивами «next-server» и «option root-path». У меня сервисы tftp и dhcp находятся на одном сервере FreeBSD, это облегчает их настройку. Все файлы настроек располагаются в /tftpboot. Потом в файле thinstation.hosts прописываем по-порядку: произвольное имя хоста (лучше, чтоб оно включало информацию о размещении терминала), MAC-адрес, группы, членом которых терминал является, в конце строки можно поместить комментарии за знаком «#», например:

otd146_57158 00e04d08d710 smb_flop_hard TUX1C monitor #very important PC

Здесь по порядку: имя хоста, в моем случае состоит из номера отдела и инвентарного номера, далее MAC, и далее перечисление названий файлов конфигураций, который будут использованы этим хостом.

Далее создаем файл настроек thinstation.conf-MAC, я использую в названии MAC-адрес, хотя можно использовать IP-адрес или имя из thinstation.hosts. Заметьте, что здесь в имени файла MAC-адрес использует только заглавные буквы. Группы описываются в файлах с названием thinstation.conf.group-ИМЯГРУППЫ. В файле thinstation.conf-MAC находятся те настройки, которые касаются только этого терминала, и не включены в другие группы. Например, все общие настройки монитора описаны в файле thinstation.conf.group-monitor, а один параметр «SCREEN_VERTREFRESH» вынесен в файл thinstation.conf-MAC. Это связано с тем, что используются разные мониторы, и можно изменить настройку кадровой частоты экрана, этот и другие параметры можно настраивать для каждого терминала или для всех сразу. То же касается настройки мышки. По умолчанию настройка выполнена для PS/2-мыши. Если используется мышка, подключенная к порту COM1, то указываются два параметра «MOUSE_PROTOCOL=Microsoft» и «MOUSE_DEVICE=/dev/ttyS0», если к порту COM2, то во втором параметре указывается /dev/ttyS1.

Общий для всех файл конфигурации /tftpboot/thinstation.conf.network у меня почти пустой. Вся информация из него вынесена в отдельные файлы групповых настроек, на которые есть ссылки в thinstation.hosts. Так как используются два терминальных сервера c разными версиями NX и каждый клиент использует только свой сервер, то конфигурации вынесены в отдельные текстовые файлы (NX и TUX1C), кроме того, используются разные образы Thinstation. Также не забывайте, что названия файлов thinstation.nbi и thinstation.nbi.zpxe взаимосвязаны: если в dhcpd.conf указана строчка:

thinstation.nbi.zpxe";

то будет использован образ thinstation.nbi, в моем случае образов несколько, соответственно и записи в dhcpd.conf для каждого терминала разные.

Отличия сборки NX2

В нашей системе используются два NX-сервера. На одном работает NX, собранный из исходников версий 1.5, для работы с ним используются клиенты 1.5.x. На другом работает NX версии 2.0. Расскажу, в чем отличия работы и сборки этой версии. На сервере установлены 64-битные Opteron, используется система SLES 10.0 x86_64. Так вот собрать на этом сервере NX так, как это было в случае с NX 1.5 на 32-битной системе, у меня не получилось, даже когда я пробовал явно указать сборку для 32-битной системы:

make World BOOTSTRAPCFLAGS="-m32"

Видимо, это особенности 64-разрядной системы и ее библиотек. Несколько позже на сайте Nomachine я нашел заметку , в которой сказано, что исходные тексты NX разработаны для 32-битных систем, но их можно использовать и в 64-битных системах. Поскольку у меня еще есть компьютер с установленной SLED 10.0 x86 и версии всех библиотек, ядра и программ точно такие же, как у SLES, то я решил собрать NX на нем, а потом перенести каталог с результатом сборки обычным копированием на 64-разрядную систему. Так и сделал: все заработало как ни в чем не бывало. Качаем файлы с теми же названиями, что и при сборке версии 1.5, только с суффиксами 2.0 (или 2.1). Всё компилируется точно так же, как и в случае с NX 1.5, за некоторыми исключениями: во-первых, я не стал накладывать патч NX-lfs_hint.diff, во-вторых, появилась новая версия скриптов FreeNX 0.5, поддерживающая новый NX 2.0, её можно забрать здесь , в-третьих, файл freenx-lfs_hint.diff, который вносит изменения в файл nxloadconfig из FreeNX 0.4, не подходит к новой версии FreeNX, его нужно отредактировать. Вот вывод команды diff, показывающий разницу между оригинальным и отредактированным файлом nxloadconfig:

Nxloadconf_orig 2006-07-01 22:03:39.000000000 +0500
+++ nxloadconfig 2006-10-16 12:32:19.000000000 +0500
@@ -56,12 +56,12 @@
NX_LICENSE="OS (GPL)"

Часть первая: Немного лирики

Нижеследующий текст автора не претендует на истину в последней инстанции и по нему не стоит судить о среднестатистическом уровне IT инфраструктуры в небольших компаниях нашей необъятной страны. Статья написана по мотивам общения с многочисленными знакомыми IT-шниками (в основном уровня «студент» и «только что из института»), начинающих свою карьеру с эникейщика в небольших компаниях.

Давайте представим себе среднестатический офис небольшой торговой фирмы с точки зрения IT:

  • несколько десятков слабеньких компьютеров для секретаря, менеджеров, бухгалтерии и, конечно, главного Босса;
  • одна-две-три машины, выполняющих роли:
    • домен-контроллера windows (нередки случаи, когда в сети компании отсутствует даже домен, а все компьютеры работают в одно-ранговой сети);
    • файлового сервера;
    • почтового сервера (вместо него иногда используют внешние бесплатные почтовые сервера, начиная от mail.yandex.ru и gmail.com и кончая десятидолларовым хостингом на N почтовых ящиков);
    • http-прокси для фильтрации доступа ко внешним ресурсам и логирования «куда кто ходит» (часто отсутствует)
    • маршрутизатора/файрвола на границе с внешней сетью для ограничения доступа наружу и наоборот (часто в качестве пограничного маршрутизатора используется любой SOHO-роутер начального уровня ценой до 100 долларов, он же выполняет роль DHCP сервера (для динамической раздачи IP адресов рабочим станциям сотрудников);
    • другие вещи, список которых может быть довольно большим;
  • несколько принтеров, часто подключенных локально к рабочим станциям сотрудников и расшареных по сети стандартными средствами Windows (как вариант, принтеры могут быть сетевыми изначально или же подключены через аппаратные принт-сервера).
  • в продвинутых случаях - один терминальный сервер (под Windows) для бухгалтерии (на нем крутится 1C а там же лежит база данных оной, а бухгалтеры, подключаясь к серверу терминалов через стандартные средства Windows (remote desktop), работают с ней на терминальном сервере (локально), что, во-первых, дает больше удобства, а во-вторых, ускоряет работу самой 1C (обычно же 1С с базой установлена на компьютере одного из бухгалтеров, а остальные подключаются к ней со своих компьютеров, работая с расшареной по сети базой).

Все это хозяйство связано в единую локальную сеть посредством одного/нескольких дешевых коммутаторов на 100Мбит. И работает это в едином домене NT/Active directory (хотя встречаются варианты одноранговых рабочих станций безо всяких доменов).

На всех машинах с Windows обычно установлен (хотя и тут бывают исключения) какой-то антивирус. Часто встречается не сетевые версии этих программ (тот же Avast), хотя, опять таки в более продвинутых (с точки зрения IT) конторах, стоят сетевые версии антивирусов с централизованным управлением и обновлением антивирусных баз.

Приведенные выше ситуации варьируются от случая к случаю, так как на конфигурацию сети, железа и софта влияют как знания/умения/желания (и, что немаловажно, лень) системного администратора(ов), так и понимание начальства (в лице главного Босса) «чем же именно этот наш системный администратор занимается, когда все и так отлично работает» (из последнего вытекает - сколько денег выделяется на оборудование для IT и зарплату будущего специалиста). Если денег выделяется мало (а так обычно и бывает — управленцы торговых компаний от IT обычно далеки и слабо понимают, что же там происходит), то поднабравшийся знаний эникейщик уходит в другую компанию. На место ушедшего приходит очередной студент и все повторяется по новой.

Думаю излишне говорить, что в подобных конторах отдел системного администрирования состоит из одного человека, который совмещает в себе инженера по прокладке/поддержанию офисной сети, системного администратора как такового (т.е. ту самую личность, что отвечает за работоспособность серверного парка на программном и аппаратном уровнях и внедрением нового функционала) и эникейшика - «мальчика на побегушках» — который занимается разрешением проблем у пользователей, протиркой мышек, сменой картриджей у принтеров и подобными вещами.

В результате, в небольших компаниях часто наблюдается довольно разнообразный парк пользовательских машин класса от pentium2/128Mb ram/5Gb hdd до P4 Celeron/1Gb ram/80Gb hdd. На всех машинах, разумеется, Windows (98, 2000 и XP Home/Pro) и разные версии софта (ставили то машины в разное время). Доходит до того, что и антивирусное ПО на машинах тоже от разных производителей.

А на нелегкую долю системного администратора (и эникейщика по совместительству), выпадает денно и нощно поддерживает весь этот зоопарк. А ведь железо иногда ломается:

  • вентиляторы начинают противно жужжать (их надо чистить и смазывать или же менять на новые);
  • блоки питания выходят из строя;
  • винчестеры - сыпятся;
  • сетевые карты (как встроенные в материнскую плату, так и внешние - перестают работать и требуют замены);
  • остальное железо, обычно, летит сильно реже, но тем не менее летит тоже

При выходе из строя винчестера (или же материнской платы компьютера), операционную систему на восстановленной машине часто приходится переставлять с нуля в такой или очень похожей последовательности:

  • ставим Windows;
  • ставим необходимые драйвера (весь парк железа разный - не забыли?), предварительно определив модель материнской платы в данной машине и скачав из Интернет последние версии драйверов или найдя нужные у себя на файл-сервере;
  • вводим машину в домен (если он настроен);
  • ставим необходимый софт (офис, браузер, почтовый клиент, тотал-коммантеры, аськи, джабберы, пунто-свитчеры и подобное) - в случае домена Active Directory часть софта можно поставить автоматически, но не у всех он настроен, да и не все знают его возможности;
  • ставим антивирус;
  • плюс дополнительные танцы с бубном, индивидуальные для конкретной сети каждой организации вокруг новой рабочей станции;

После успешного выполнения всех пунктов (эта процедура занимает примерно два часа) рапортуем Боссу, что рабочее место сотрудника спасено и он может приступать к работе.

Счастливый обладатель восстановленного компьютера садится за свое рабочее место, после чего выясняется, что (так как доменные профили были не перемещаемые или же домена не было вовсе, ссылка «мои документы» вела на локальный диск C:, а про то, что все важное нужно сохранять на сетевом диске - на сервере, сотрудник забыл):

  • у меня тут была папка с важными документами - где она?
  • а еще я там фотографии из Турции сохранил, можно их восстановить?
  • на рабочем столе было много важных ярлыков и еще сотня документов - куда они пропали?
  • в избранном (это про закладки в браузере) моих любимых сайтов больше нет - где их теперь искать? и так далее…

Знакомо? Хорошо, если полетел не жесткий диск, а всего лишь материнская плата. Или же часть информации на осыпавшемся диске поддается восстановлению. Но все эти процедуры занимают рабочее время системного администратора, которое можно было бы потратить с куда большей пользой — поиграть в сетевую стрелялку или же… изучить IPv6 - ведь уже все на него переходят и совсем скоро перейдут, адреса в пространстве Ipv4 уже лет пять как закончились:)

В результате, поддержка IT инфраструктуры небольшой компании для системного администратора превращается, по большей части в поддержку работоспособности пользовательских рабочих станций, а именно:

  • переустановить Windows;
  • настроить на новой машине весь необходимый софт;
  • восстановить все то, что потерялось;
  • доустановить нуждающимся новые программы;
  • провести профилактику корпуса (пыль пропылесосить в системном блоке);

И в оставшееся время (если системный администратор не сильно ленив) надо пытаться изучить что-то новое, проапгрейдить софт на сервере (серверах) и ввести в строй новый сетевой сервис. Т.е. на основные обязанности (именно то, чем системный администратор и должен заниматься большую часть времени) времени то как раз и не остается.

Как же выйти из этого замкнутого круга?

Одним из вариантов решения вышеописанной проблемы, является отказ от «толстых» рабочих станций (там, где это можно сделать) и переход на .

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

Надо понимать, что требования современных ОС (не обязательно Windows) идут в ногу с современным железом - другими словами, для относительно комфортной работы в Windows XP старой (но полностью работоспособной и относительно мощной) машины класса Celeron 800Mgz/128Mb Ram/ 10Gb HDD может и не хватить. Работать под современной ОС на подобном железе, конечно, можно, но подтормаживать эта операционка и приложения будут довольно часто — хотя бы из-за малого количества набортной памяти и старого (читай — медленного) жесткого диска.

А тонкий клиент, если вкратце, можно определить как бездисковый компьютер, работа которого заключается лишь в подключении к удаленному серверу и отображении полученной с сервера информации на экране. Обычно такой сервер называется сервером терминалов или терминальным сервером. Вся же обработка пользовательской информации происходит именно на нем (одновременно к которому может быть подключено множество — хотя и не бесконечное количество — тонких клиентов).

Обычно тонкие клиенты делают на основе слабого (а, соответственно, и малопотребляющего) железа - часто это единая системная плата, на которой все и интегрировано. Процессор и память так же могут быть намертво припаяны к материнской плате. Некоторые тонкие клиенты имеют flash-диск (вставляемый в IDE разъем материнской платы), на котором прошита специализированная ОС (WinCE или другие).

Сравнение тонкого клиента Clientron U700 со стандартным корпусом для рабочей станции.

В результате, при включении тонкого клиента (их еще называют терминалами), ОС грузится со встроенного flash-диска (обычно на загрузку уходит менее 30 секунд), после чего на экране появляется диалог подключения к терминальному серверу. Некоторые из этих клиентов умеют подключаться только Windows Terminal Server или же Citrix Metaframe, другие - в том числе и к терминальным серверам других ОС. В любом случае, в цену таких решений закладывается и цена лицензии на WindowsCE, прошитую на встроенный flash-диск. Мы рассказывали о подобных решениях ранее:

  • Windows-терминал
  • Тонкий клиент
  • Windows-терминал

Разумеется, подобные решения существуют и у других компаний. В том числе и без встроенной ОС (за которую, в случае Microsoft Windows CE, нужно дополнительно платить, да и flash-диск копейки, но стоит).

Терминальные клиенты без встроенного flash-диска, при включении загружают нужный образ ОС по сети, после чего они тратят на загрузку те же пару десятков секунд. После чего готовы к работе, под чем подразумевается вывод на экран меню со списком терминальных серверов для подключения или же автоматическое подключение к одному из жестко заданных терминальных серверов (в зависимости от настроек) - пользователю останется ввести лишь логин и пароль. После правильного ввода оного, он попадает в свою сессию на сервере терминалов и может приступать к работе.

Несомненные плюсы терминальных решений на специализированных тонких клиентах или правильных самосборных компьютерах:

  • отсутствие жесткого диска (которые греются и ломаются);
  • отсутствие вентиляторов (на процессоре и блоке питания установлены лишь радиаторы, которых хватает для рассеивания выделяемого при работе тепла);
  • низкое энергопотребление;
  • теоретическая дешевизна (при самосборе можно подобрать очень дешевые комплектующие — ведь производительности от железа не требуется; а вот производители за специализированные тонкие клиенты попросят раза в два больше)
  • минимальные временные затраты на обслуживание (при поломке такой железяки, достаточно отключить поломавшуюся и подключить запасную — работы на пять минут; а это уже минимальный простой для рабочего места сотрудника, а так же минимум затраченного на устранение поломки времени системного администратора)
  • весь софт для работы пользователей настраивается централизовано на одном (двух/трех/…) терминальных серверах — это значительно проще, чем поддерживать зоопарк софта на «толстых» рабочих станциях сотрудников

Не стоит забывать и о пользовательских данных — локально терминал ничего не хранит (все данные пользователя находятся на удаленных серверах). В результате легко настроить автоматических бекап всего и вся и, в случае чего, восстановить «случайно удаленный» документ.

В общем, плюсов море, но есть и минусы:

  • при отказе сети, рабочие места сотрудников «превращаются в тыкву» (а сотрудники на «толстых» клиентах могут продолжать набивать документ, к примеру, в OpenOffice);
  • при отказе терминального сервера рабочие места сотрудников опять «превращаются в тыкву» (но это решается установкой нескольких - например, двух - терминальных серверов; при выходе одного из них из строя, второй его подменит или же сотрудники просто переподключатся ко второму серверу вручную)
  • тонкие клиенты подходят не всем: к примеру, людям, постоянно смотрящим видео или работающим активно работающих с графикой (в фотошопе) или занимающимся версткой журнала, лучше делать это на локальном «толстом» клиенте (зато тонкие клиенты отлично подходят большинству остальных сотрудников, которым нужен лишь браузер с Интернет, почта, создание и редактирование документов в Openoffice и работа с 1C).

Последний минус, который мы тут рассматривать не будем — это лицензионная политика (если не сказать обдираловка) со стороны Microsoft. Работа на терминальном сервере под управлением ОС этой известной компании требует большого количества разнообразных лицензий:

  • лицензия на Windows Server
  • CAL (Client Access License) — лицензии на подключение к Windows-серверу и их кол-во должно быть не меньше количества подключаемых к серверу клиентов (обычно в составе Windows-сервера уже идет некоторое кол-во таких лицензий — от пяти и выше)
  • лицензии на работу с сервером терминалов (их количество тоже должно быть равно количеству подключаемых клиентов)

Не забываем про отдельные лицензии на весь используемый софт (например на Microsoft Office) в количестве, равном количеству подключаемых к серверу клиентов. Если клиентские лицензии на Microsoft Office еще можно обойти, отказавшись от данного продукта и поставив ему замену в виде, к примеру, OpenOffice, то от самого терминального сервера в лице Windows 2000/2003 TS избавиться несколько сложнее:) Хотя и это возможно в некоторых случаях.

Есть, правда, еще один «минус» (кроме боязни нового) который часто останавливает от внедрения подобных решений - почему то многие думают, что эти тонкие клиенты надо покупать (а они не очень дешевые - от 200 долларов и выше). Куда же девать весь парк уже существующих компьютеров?

Именно для ответа на последний вопрос написана данная серия статей. В ней будет рассматриваться софт тонкого клиента .

Этот небольшой, но обладающий множеством возможностей и, что немаловажно, OpenSource софт, позволяет превратить практически любые древние компьютеры в тонкие клиенты. Минимальные описанные на его родном сайте к используемому железу - это Pentium 100Mhz и 16Mb оперативной памяти. Ах да, жесткий/flash диск тоже не нужен - компьютеры при включении могут скачивать образ тонкого клиента (это около двадцати! мегабайт) по сети (хотя так же возможна установка Thinstation клиента на жесткий или usb диск). В наш век операционных систем, с радостью сжирающих гигабайты места на диске после установки, это впечатляет, не так ли?

Thinstation базируется на Linux, но для его использования знаний Linux, как таковых не нужно - достаточно в своей сети поднять dhcp и tftp сервера и соответствующим образом их настроить (оба этих сервера есть и в составе продуктов Windows Server). Таким образом, даже в сети, где кроме Windows-а ничего не знают, использование Thinstation клиента затруднений не вызовет.

Thinstation умеет работать со следующими серверами терминалов:

  • Сервера Microsoft Windows по протоколу RDP или через nxclient (Windows NT4TSE, W2k Server, W2k3 Server или же Windows XP в однопользовательском режиме);
  • Citrix servers по протоколу ICA (на серверах MS Windows, SUN Solaris и IBM AIX);
  • Сервера Tarantella
  • *nix-like сервера по протоколу X11;
  • подключение к VNC-серверам (tightVNC);
  • подключение к SSH и Telnet серверам;

Для того, что бы загрузить Thinstation по сети, от компьютера требуется лишь встроенная или внешняя сетевая карта, поддерживающая стандарт PXE (есть и другие варианты, но, к примеру все встроенные в системную плату сетевые карты работают именно по этому протоколу).

PXE расшифровывается как Pre-boot eXecution Environment — среда предзагрузочного выполнения. Этот стандарт был впервые реализован компанией Intel. Первый признак наличия PXE-биоса на борту встроенной сетевой карты, это пункт «Enable Boot ROM» рядом с пунктом активации сетевой карты в биосе. Если встроенная сетевая карта не поддерживает загрузку по сети (или отсутствует вовсе), можно использовать любую внешнюю сетевую плату с опцией «Boot ROM» (этот вопрос в подробностях будет рассмотрен далее).

А сейчас вкратце рассмотрим процесс загрузки клиента Thinstation по сети.

  • Сетевая карта по протоколу PXE запрашивает DHCP сервер следующую информацию: IP адрес, маску подсети, шлюз а так же IP-адрес сервера TFTP (на котором лежат образы, в данном случае, ThinStation) и имя образа, которое она попытается загрузить.
  • DHCP сервер возвращает запрашиваемую информацию (помечая у себя, что выданный клиенту IP адрес — занят таким-то клиентом)
  • Клиент подключается к TFTP серверу, IP-адрес которого ему только что сообщили и скачивает с него файл загрузчика PXE (имя которого ему опять таки сообщил DHCP-сервер)
  • Скаченный PXE загрузчик исполняется и, в свою очередь скачивает с TFTP сервера конфигурационный файл, в котором прописаны имена файлов ядра ОС Linux — vmlinuz и образа файловой системы — initrd. Эти файлы скачиваются и управления передается ядру Linux
  • После распаковки и загрузки ядра Linux с подмонтированным образом файловой системы, Thinstation снова обращается к TFTP серверу для скачивания необходимых ему конфигурационных файлов (там, среди прочего, записаны адреса терминальных серверов, к которым нужно подключаться), после чего запускает нужный терминальный клиент (в нашем случае это будет rdesktop) и ожидает от пользователя ввода его логина с паролем для подключения.

На первый взгляд, описанная схема выглядит сложно. Но по факту настройка оной занимает полчаса-час и в дальнейшем она работает полностью автономно. Загрузка тонкого клиента с момента первого запроса в сеть по PXE (этот момент совпадает с моментом начала загрузки ОС с жесткого диска) занимает секунд 20…30.

Как уже отмечалось выше, Thinstation умеет работать с разными терминальными серверами. Но мы в ближайших статьях, как самое простое в реализации (но еще раз напоминаю о покупке множества клиентских лицензий, необходимых для официальной работы), рассмотрим лишь связку Thinstation с Microsoft Terminal Server.

Для начала нам надо иметь настроенный сервер терминалов от Microsoft. Этот сервер может работать как в составе домена (в этом случае удобнее управлять аккаутами пользователей - они общие — особенно если терминальных серверов в сети несколько), так и в вне домена - в одноранговой сети. Второй случай отличается от первого тем, что необходимых пользователей придется заводить на каждом сервере локально и синхронизировать актуальные списки пользователей и их прав - вручную.

Вторым пунктом нашей программы будет настройка DHCP и TFTP серверов. Первый ведает динамической раздачей IP адресов для рабочих станций, а так же сообщает, с какого IP адреса (с какого сервера tftp) и какое имя файла компьютеру нужно скачать в качестве загрузочного образа тонкого клиента. А второй — tftp сервер — фактически и отдает образы тонкого клиента и конфигурационные файлы для них же. Эти настройки могут быть как глобальными (для всех бездисковых терминалов сети), так и локальные — для определенных групп машин или же одиночных тонких клиентов.

Оба эти сервиса можно поднять как в составе Windows сервера (запуском и настройкой соответствующих служб), так и отдельными демонами в составе *nix-сервера — мы это рассмотрим на примере сервера с установленным Gentoo Linux.

А третьим пунктом идет настройка клиентских машин — перевод их на загрузку по сети и рассмотрение стандартных подводных камней.

Но об этом — в следующих статьях нашего цикла.