Строго говоря, эта статья не имеет отношения к Ubuntu. Однако, тонкий клиент является полезным дополнением к терминальному серверу (описание которого, я надеюсь, скоро появится в wiki). Надо будет только заменить MSTS на NX.

Существует множество решений для создания терминального сервера как на Linux, так и на Windows. Однако, клиенты терминального сервера предоставляются в виде программ, требующих установки в некоторую операционную систему. Если терминальный сервер будет использоваться в связке с бездисковыми станциями (тонкими клиентами), то операционная система должна быть крайне легковесной и обеспечивать только необходимый функционал.

Специально для тонких клиентов существует дистрибутив Thinstation.

Thinstation

Поддерживает следующие протоколы: Citrix ICA, NoMachine NX, 2X ThinClient, Microsoft Windows Terminal Services (RDP, via RDesktop), VMWare View Open client, Cendio ThinLinc, Tarantella, X, telnet, tn5250, VMS terminal и SSH, при этом для работы с Thinstation не требуется изменять настройки сервера. …

В этой статье в качестве примера используется загрузка по PXE с TFTP, в качестве сервера — MS Terminal Service, но можно использовать и другие технологии.

Вкратце алгоритм работы Thinstation таков:

  1. Выбираем (в build.conf или в веб-интерфейсе), какие драйверы и программы нам нужны. Драйверы зависят от используемого оборудования (сетевых карт, видеокарт…). Программа — какой-нибудь легковесный оконный менеджер и тип клиента (зависит от типа сервера, в нашем случае для Microsoft Terminal Service нужен rdesktop)
  2. В дальнейшем мы сможем написать для каждого клиента свой конфигурационный файл, а пока, на этапе сборки мы можем написать конфиг, который будет использоваться в качестве дефолтного (thinstation.conf.buildtime)
  3. Собираем образ, используя build.conf и thinstation.conf.buildtime
  4. Раздаём образ с помощью TFTP-сервера, в DHCP указываем нужные параметры (см. Терминальный сервер)
  5. Создаём, если нужно, собственные конфигурационные файлы для отдельных клиентов и групп клиентов, они тоже раздаются по TFTP
  6. Выставляем на клиентах загрузку с PXE (Network, LAN, …)
  7. Загружаем клиента :)

Развёртывание

Мы будем пользоваться онлайн-сервисом для сборки, веб-интерфейс — это удобно. Однако, если требуется более гибкий инструмент, или 50 Мбайт трафика — проблема, то можно собирать и локально. Сразу замечу, что Thinstation очень гибко настраивается, эта инструкция даёт лишь базовое представление без лишних деталей. Например, Thinstation у нас лежит в корне TFTP сервера, это можно изменить, но за такими подробностями лучше обратиться к документации самого Thinstation.

Первым делом напишем дефолтный конфигурационный файл thinstation.conf.buildtime, то есть тот файл, который клиент будет использовать, если не найдёт своего собственного конфига.

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

SESSION_0_TYPE=icewm
SESSION_0_AUTOSTART=on

Более сложный конфиг — мы коннектимся к Mirosoft Terminal Service, сервер 192.168.1.1, пользователь pupkin из домена example.local:

SESSION_0_TITLE="My Big Server"
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=192.168.1.1
SESSION_0_RDESKTOP_OPTIONS="-u pupkin -d example.local -a 24 -r -5"

После написания конфига приступаем к сборке. Переходим сюда (полный список есть на http://thinstation.org), на вкладке Applications отмечаем «Connection Package types — rdesktop» (остальные Connection packages нам не понадобятся), в разделе Window Managers выбираем только icewm и icewm-theme-xp. На других вкладках расставляем галочки по вкусу. Нажимаем кнпку «Создать» (вверху).

После первого этапа сборки переходим на вкладку «Load Files», указываем наш thinstation.conf.buildtime и жмём «Выгрузить». После этого жмём кнопку «Запустить сборку» (вверху).