Thinstation инсталляция образа.



Первая сборка

Так как Thinstation основан на Linux'е, значит для сборки тонкого клиента нам потребуется компьютер с установленным Linux'ом. Я использовал Mint 17. Также нам понадобится установить Git (если его еще нет) и с его помощью склонировать себе репозиторий с генератором образов:
Можно ещё воспользоваться сборщиком образов здесь.

sudo apt-get install git-core
cd /home/user/
git clone --depth 1 git://thinstation.git.sourceforge.net/gitroot/thinstation/thinstation
cd thinstation



После того, как генератор образов скачан, необходимо запустить скрипт:

./setup-chroot

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



Пришла пора собрать наш первый, пока что «толстый», образ. Этот большой образ с поддержкой очень широкого списка аппаратки нужен, чтобы сгенерировать затем небольшой профиль для поддержки нашего конкретного железа. Хочу отметить, что в этом и заключается одна из главных плюшек новой версии Thinstation: теперь не надо самому руками составлять список драйверов, которые следует включить в образ — он сгенерируется автоматически скриптом.

Как советуют разработчики, сборку надо производить «inside chroot session», поэтому из скрипта setup-chroot.sh не выходим (нажимаем лишь «Q», чтобы скрыть приветственное сообщение скрипта) и пишем следующие команды в тамошней консоли:

cd ts/5.1
nano build.conf

В файле build.conf раскомментируем строчку «package extensions». Если у вас интернет через прокси, то еще раскомментируем строчку «param httpproxy» и укажем в ней свои настройки прокси-сервера (например, так: «param httpproxy user:password@proxy:port»), сохраним файл и продолжим сборку:

./build --allmodules



Смотрим на длинную портянку лога скрипта сборки, соглашаемся на скачивание дополнительных пакетов, если он попросит, и дожидаемся окончания процесса. Теперь копируем содержимое директории "/home/user/thinstation/ts/2.5/boot-images/pxe" (а это и есть наш собранный загрузочный образ) в корень TFTP-сервера и пробуем первый раз загрузить тонкого клиента по сети.

И вот тут мы можем встретить первые долгожданные грабли. Если оперативной памяти у вашего тонкого клиента мало, то мы возвращаемся к редактированию файла build.conf и закомментируем какой-нибудь тяжелый пакет, например "#package chrome", повторяем сборку и видим уменьшение образа почти в 2 раза. Теперь загрузка должна пойти.

Даже после этого с вероятностью, близкой к 100%, полной загрузки тонкого клиента не произойдет. Но нам этого и не надо. Ждем, когда загрузчик покажет нам картинку с надписью «Thinstation» и прогрессбаром. После этого нажимаем Ctrl+Alt+F3 и видим консоль с приглашением войти. Вводим следующую пару логин-пароль «root — pleasechangeme» и запускаем скрипт:

hwlister.sh

Этот скрипт сгенерирует нам файлы профиля для конкретного железа нашего тонкого клиента. Обычно их два: «module.list» (список драйверов для нашего железа) и «vbe_modes.list» (графические режимы). Теперь их нужно скопировать на Linux-машину. Сделать это можно, например, через TFTP-сервер (он должен позволять запись). В консоли тонкого клиента вводим:

cd /
tftp -p -l module.list -r module.list 192.168.0.1
tftp -p -l vbe_modes.list -r vbe_modes.list 192.168.0.1

, где 192.168.0.1 — адрес нашего TFTP-сервера. Вернемся к Linux-машине, создадим там папку "/home/user/thinstation/ts/5.1/machine/my_machine" и скопируем в нее из корня TFTP-сервера наши два полученных файла.

Страшный зверь — смарт-карта

Итак, чтобы наши пользователи могли авторизоваться в системе с помощью смарт-карт необходимо несколько вещей:
Собственно, сами смарт-карты. Например, такие.
Устройства для чтения смарт-карт (картридеры). Например, такие.
И, конечно же, наш терминальный сервер должен быть соответствующим образом настроен, чтобы использовать смарт-карты для аутентификации. Данная настройка сервера — тема большая. Про нее отдельно можно посмотреть и почитать. Кроме того, для поддержки конкретных смарт-карт необходимо установить на терминальный сервер ПО производителя. Для выбранных мною в качестве примера карт фирмы Aladdin оно находится тут. На данном этапе будем считать, что мы уже справились с настройкой терминального сервера и он позволяет пользователям логиниться, используя смарт-карты.

Теперь нам необходимо найти и собрать драйвера для картридера под Linux. На сайте производителя находим драйвера тут, качаем и распаковываем:

cd /home/user/
wget www.athena-scs.com/downloads/asedriveiiie-usb-3.7.tar.bz2
tar -xjf asedriveiiie-usb-3.7.tar.bz2
cd asedriveiiie-usb-3.7

Читаем README и видим, что для сборки нам понадобится установить пакет PCSC Lite (есть здесь, я ставил последнюю на тот момент версию ccid-1.4.5), а также нам понадобятся исходники libusb-0.1.12 (с более старшими версиями не собирается).

Ставим PCSC Lite, в папку с исходниками драйверов для картридера копируем файл usb.h из исходников libusb. Теперь запускаем обычное:

./configure
make
make install

Так как Thinstation уже содержит в себе пакет PCSC Lite, мы можем просто скопировать наши драйвера в сборщик Thinstation, вот так:

cp -LR /usr/lib/pcsc/drivers/ifd-ASEDriveIIIe-USB.bundle /home/user/thinstation/ts/5.1/packages/ccidreader/lib/pcsc/drivers

cp /etc/udev/rules.d/50-pcscd-asedriveiiie.rules /home/user/thinstation/ts/5.1/packages/ccidreader/etc/udev/rules.d

RDP-клиенты

Теперь немного о том, каким клиентом мы будем подключаться к терминальному серверу.
На данный момент самыми известными клиентами для Microsoft RDP для Linux-систем являются rdesktop и его форк — FreeRDP. Но! rdesktop не поддерживает TLS 1.0, а FreeRDP не умеет работать со смарт-картами. И это вызывает откровенную печаль!

После продолжительных поисков был обнаружен еще один RDP-клиент фирмы 2X. Скачать его можно тут. Оказалось, что он умеет все вышеперечисленное, бесплатен и к тому же еще поддерживает MS RDP версии 7.0 и активно развивается. Каково же было мое счатье, когда я узнал, что этот клиент входит в Thinstation!

Финишная прямая: конфигурируем и собираем

Тщательная конфигурация — тема большая, поэтому читаем тут в разделе «Конфигурационные файлы» для чего нужен каждый файл и где он должен лежать. В той статье описана конфигурация Thinstation версии 5.1. Здесь я расскажу про то, что изменилось в новой версии и приведу примеры своих конфигурационных файлов: build.conf, thinstation.conf.buildtime и thinstation.conf.network.
Итак, комментирую параметры из конфигураций в примерах:

build.conf:
machine my_machine — помните, мы сгенерировали профиль для железа и сложили его в папку «my_machine»? Это она и есть!
package xorg7-vesa — выбираем Xorg-драйвер. Вот тут возникли проблемы, потому что родной драйвер для моего чипсета SIS не подошел и пришлось на практике выяснять, какой из оставшихся подойдет. Vesa работает с моим чипсетом хорошо. Возможно тут придется параметр подбирать на практике.
package ccidreader — пакет PCSC Lite, который позволит нам работать со смарт-картами.
package 2x, package alsa-lib — это и есть наш замечательный RDP-клиент. Правда на практике было выявлено, что ему для работы нужен пакет Alsa, поэтому включаем и его.
param fastboot false — если этот параметр выставлен в true, то наш загрузочный образ будет разбит на основной и подгружаемую часть. К сожалению моя сетевая карта нецелый образ грузить отказалась, поэтому генерируем образ целым.
param basepath config — указывает, в какой папке на TFTP-сервере будут находиться конфигурационные файлы для клиентов (thinstation.conf.network, например).
#param rootpasswd и т.д. — комментируем параметры, которые задают какие-либо пароли. Если пароль рута закомментирован, то никто, даже если он читерски получит доступ к консоли Thinstation, не сможет залогиниться под рутом. И это хорошо)
param 2xurl — задает откуда будет скачан клиент 2X. Он будет скачан только один раз при первом запуске скрипта сборки.

thinstation.conf.buildtime:
DONT_VT_SWITCH_STATE=TRUE — не позволит пользователю через Ctrl+Alt+F3 переключиться в консоль.
DONT_ZAP_STATE=TRUE — не позволит пользователю через Ctrl+Alt+Backspace переинициализировать графический режим и опять же попасть в консоль.

И, наконец, пример описания запуска сессии для клиента 2X (thinstation.conf.network):

SESSION_0_TITLE=«2X»
SESSION_0_TYPE=2X
SESSION_0_2X_OPTIONS="-m MX -C -u user -p password -s ssl://myTerminalServerIp"
SESSION_0_AUTOSTART=ON

, где:
-m MX — режим клиента, MS RDP, полноэкранный.
-C — редирект смарт-карты.
-u user -p password — логично, юзер-пароль. Но! Мы ведь хотим авторизоваться по смарт-карте, а не по паролю! Все просто: дело в том, что текущий 2X клиент не запустится без параметров юзера и пароля, а выплюнет вас Segmentation fault. И это полный бред. Однако после длительных разговоров со службой поддержки они эту проблему в следующем релизе обещали решить. Пока же просто пишем несуществующего пользователя и пароль наобум и спокойно авторизуемся по смарт-карте, как будто так и надо.
-s ssl://myTerminalServerIp — адрес сервера, к которомы будем подключаться. ssl указывает на то, что будет использован TLS 1.0.

Нет комментариев