Тонкие клиенты Foxconn-5250 + Windows Server 2016

Постановка задачи: есть тонкие клиенты Foxconn 5250 без какого-либо дискового пространства. Необходимо заставить их подключаться по RDP к терминальному серверу Windows Server 2016. Решение — ниже…

Итого, имеем тонкий клиент без ROM, HDD и т.д., но у него есть возможность подключения HDD (для ноутбука) — см. рис.1

Рисунок 1

Данную задачу проще всего реализовать на Linux, в рамках которой существует специальный проект Thinstation. Выбираем Xubuntu-18.04.3 (32 bit), качаем iso-файл, разворачиваем сервер в виде виртуальной машины VMware. При загрузке машины будет сразу виден ее MAC-адрес, пропишите его в DHCP, чтобы сервер адрес получала автоматом — это самое простое (допустим, 192.168.1.2). Настраиваем ssh по статье. Набираем следующие команды для этого:

sudo apt update
sudo apt install openssh-server
sudo systemctl status ssh

Для удобства работы по статье установим mc:

sudo apt install mc

Гуглим информацию по Thinstation , находим 2 замечательных источника информации:
https://imbicile.pp.ru/ustanovka-i-nastrojka-thinstation-5-5/
https://imbicile.pp.ru/ustanovka-tonkih-klientov-na-primere/

Начинаем работу.

sudo apt-get install tftpd-hpa
sudo mkdir /tftpboot

У нас есть папка tftpboot
Выставляем права
sudo chmod -R 777 /tftpboot/
sudo chown -R nobody:nogroup /tftpboot/

Конфигурируем tfttpd-сервер
sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup

файл настройки /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"

sudo service tftpd-hpa restart

Установка Thinstation
sudo apt-get install git-core
cd ~
git clone --depth 1 git://thinstation.git.sourceforge.net/gitroot/thinstation/thinstation

Сборка образов.

Внимательно изучаем различные источники (источник 1, источник 2, источник 3). Попробуем собрать образ именно для нашей машины.

По умолчанию, есть несколько собранных заранее «по умолчанию» образов машин в файле build.conf.example: machine m704 #machine NT-A3500 #machine NT-535 #machine Dell-FX170 #machine VMWare #machine Virtualbox-4.1 #machine VIA-Epia-CLE266 #machine classic_generic #machine IGEL-M300C #machine HP-t5135 и т.д.

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

Приведу пример: у нас Foxconn-5250 и нам образ, собранный для NT-A3500 совершенно не подходит , а подходит NT-535, потому что процессор Intel Atom у нашей модели тонкого клиента (ТК), а не AMD. Что это значит практически?

Собираем из /thinstation/build/conf/default
Копируем файлы: build.conf.example и thinstation.conf.buildtime в папку /thinstation/build

В частности, нужно убрать комментарий (#) в строке содержащей запись
package extensions-x (этот пакет содержит инструменты создания профилей оборудования, в том числе и скрипт hwlister.sh, который нам потребуется в дальнейшем) и в последующих строках:

machine NT-535
lshw
e3

terminal

xorg7-vesa

openbox
extensions
installer

Примечание. К сожалению, попытки подключить другой драйвер графической карты, например, установленной в нашем ТК Intel GMA 3650 и зашитом в пакете xorg7- intel (#Intel video driver for most modern chipsets except the GMA3500/3600) не увенчались успехом.

Все остальные строки — по необходимости.

Собираем образ для загрузки по сети:

sudo -s
cd thinstation
./setup-chroot
cd build
./build --allmodules

Рисунок 2

Соберутся нужные образа для загрузки по сети (рис.2)
cd ~/thinstation/ts/5.1/boot-images/pxe/

Копируем все оттуда в tftpboot
sudo chmod -R 777 /tftpboot/
sudo chown -R nobody:nogroup /tftpboot/

Правим dhcpd.conf на нашем DHCP-сервере для нашего тонкого клиента (надо знать MAC-адрес тонкого клиента и в BIOS поставить загрузку по сети):

group {
next-server 192.168.1.2;filename "pxelinux.0";host ts-01 {fixed-address 192.168.1.10; hardware ethernet my:tk:mac:ad:re:ss;}
}

Перезагружаем ТК,

он получает ядро (рис.3), формирует файловую систему, видим графическую оболочку (рис.4). Можно посмотреть какие-то параметры системы и ТК (см. рис.5-6)
Можем запустить терминал и запустить команду /bin/hwlister.list
По результату, на нашем TFTP-сервере в /tftpboot появится 1 файл (могло бы быть 3!)
module.list

Рисунок 3
Рисунок 4
Рисунок 5
Рисунок 6

Создаем папку AT-5250 в каталоге /build/machine
Туда копируем этот файл

Теперь будем пробовать подключиться по RDP к Windows Server 2016 (192.168.1.3)

Затем берем 2 файла: build.conf.example и thinstation.conf.buildtime из /build/conf/rdesktop
и меняем 1 строку: добавляем machine AT-5250 в build.conf, одновременно в thinstation.conf.buildtime вставляем такие строки:

SERVER=192.168.1.3
NET_TELNETD_ENABLED=off
TIME_ZONE=Asia/Tomsk

Примечание. По умолчанию в папке /thinstation/usr/share/zoneinfo/Asia нет файла Tomsk, его нужно добавить из /usr/share/zoneinfo/Asia корневой системы.

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

Рисунок 7

Это оказалось известной проблемой. Конечно, можно ее обойти, отключив тень указателя мыши: Пуск —> Панель управления —> Мышь, вкладка «Указатели», убрать галку «Включить тень указателя». Но правильнее настроить freerdp.

Примечание. При подключению к Windows Server 2008 эта проблема исчезает, при подключению к Windows Server 2012 — возникает вновь.

Для этого пересобираем образ для загрузки по XPE из шаблонов «по умолчанию», добавив строку package freepdr и заремировав rdesktop. Меняем конфигурационные файлы, исключая автоматическое подключение по RDP к терминальному серверу.

Запускаем ТК, в терминале набираем команду: xfreerdp /d:MY_DOMAIN /sec:rdp /v:192.168.1.3

И видим прекрасное — рабочий стол Windows Server 2016 и нормальную мышку (рис.8)

Рисунок 8

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

build.conf

machine AT-5250
package ts-classic
package ntp
package xorg7-vesa
package locale-en_US
package freerdp
package fonts-misc
package fonts-TTF-liberation
package fonts-cyrillic
package fonts-Speedo-Bitstream
package fonts-TTF-BH
package fonts-TTF-vera
package fonts-100dpi-Adobe
package fonts-100dpi-Adobe-Utopia
package fonts-100dpi-BH
package fonts-100dpi-BH-Typewriter
package fonts-100dpi-Bitstream

param rootpasswd MYPASSWORD
param xorgvncpasswd MYPASSWORD
param bootlogo true
param boottheme default
param splash silent
param fbmtrr 0
param fbsm ywrap

param desktop file:./backgrounds/Hive_Lite.jpg
param defaultconfig thinstation.conf.buildtime
param basename thinstation
param basepath ts5.0
param baseurl http://www.doncuppjr.net
param fulllocales true
param haltonerror false
param hardlinkfs true
param sametimestmp true
param initrdcmd "gzip -9"
param bootverbosity 3

param downloads /downloads
param bootimages "iso syslinux pxe"
param syslinuxtheme "default"
param allres true

thinstation.conf.buildtime

X_DPI=100
USE_XRANDR=TRUE
XRANDR_OPTIONS="-s 1280x1024"
SESSION_0_TYPE=freerdp
SESSION_0_AUTOSTART=on
SESSION_0_FREERDP_SERVER="192.168.1.3"
SESSION_0_FREERDP_OPTIONS="/sec:rdp"
RECONNECT_PROMPT=FORCE
NET_USE=BOTH
NET_USE_DHCP=on
NET_HOSTNAME=ts_*
TIME_ZONE=Asia/Tomsk
NET_TIME_SERVER=my.ntp.server.ru

Собираем с помощью этих файлов окончательный вариант образа и работаем на тонких клиентах с терминальным сервером.

Удачи!

P.S. Разные ссылки, некоторые полезные, некоторые — не очень.

Ссылка 1, ссылка 2, ссылка 3, ссылка 4, ссылка 5, ссылка 6, ссылка 7, ссылка 8, ссылка9, ссылка 10, ссылка 11, ссылка 12, ссылка 13, ссылка 14.