Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) - Astra Linux Special Edition РУСБ.10015-16 исп. 1
с установленным обновлением Бюллетень Update 1 № 20201007SE16 - Astra Linux Common Edition 2.12.24
В данной статье описывается работа с LTSP версии 5.18.12-3.1astra3, позволяющей создавать гостевые образы Astra Linux Special Edition и Astra Linux Common Edition на любой из этих ОС (по умолчанию создается гостевой образ соответствующий текущей хост-системе). Эта версия доступна для установки из репозитория пакетов Astra Linux Common Edition.
Linux Terminal Server Project (LTSP) — свободно распространяемый пакет для Linux с открытым исходным кодом, позволяющий пользователям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного более производительного компьютера (сервера). При этом все приложения запускаются на сервере, а терминалы, также называемые тонкими клиентами (или X-терминалами), просто принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в котором даже может отсутствовать жесткий диск, вследствие чего он может работать тише и потреблять меньше энергии, чем обычный настольный компьютер.
Для передачи клиентам первичной информации (сетевой адрес терминала, адрес, к которому должен подключаться терминал) дложна использоваться службы DHCP. Далее рассматриваются два варианта настройки:
- служба dnsmasq - упрощенная служба, устанавливается вместе с сервером LTSP, включает в свой состав простой TFTP-сервер, и позволяет быстро настроить нужные параметры для работы терминалов;
- служба isc-dhcp-server - полноценная служба DHCP, обычно применяется в больших сетях.
При соотвествующей настройке могут использоваться и другие службы (например, служба DHCP, встроенная в маршрутизатор сети).
Подключение клиентов осуществляется по протоколу SSH (рекомендованный вариант), или по протоколу xRDP.
Входящая в состав Astra Linux версия LTSP поддерживает два режима работы клиентов:
- "Тонкий клиент" - По сети загружается минимальный образ с базовой системой и графическим сервером. Приложения выполняются на сервере терминалов, результаты работы передаются по сети графическому серверу на дисплей терминального клиента. Дополнительно в этом режиме поддерживается возможность выполнения отдельных приложений на тонком клиенте (подробнее см. https://manpages.ubuntu.com/manpages/trusty/man5/lts.conf.5.html ).
- "Толстый клиент" - Загружается полноценный образ с ОС. Приложения выполняются непосредственно на терминальном клиенте, а сервер просто предоставляет доступ к пользовательским данным и программам.
В принципе "тонкий клиент" от "толстого" отличается только местом исполнения, и режим исполнения может выбираться при запуске. Важным отличием "толстого" клиента является возможности установки в образ этого клиента дополнительных приложений.
По умолчанию клиент загружается в "тонком" режиме. Клиент загружается в "толстом" режиме (chroot в клиентскую систему) после установки в клиентский образ менеджера рабочего стола (fly-wm). Кроме того, для указания режима загрузки клиентов можно использовать опцию LTSP_FATCLIENT=true/false (по умолчанию не задана) в файле /var/lib/tftpboot/ltsp/amd64/lts.conf на сервере терминалов (подробнее см. https://manpages.ubuntu.com/manpages/trusty/man5/lts.conf.5.html ).
Настройка сервера
Настройка сетевых интерфейсов
Типичный сервер LTSP имеет два сетевых интерфейса:
- Первый интерфейс (eth0) подключен к Интернет, и настройки получает автоматически;
- Второй интерфейс (eth1) подключен к локальной сети, и ему присвоен статический адрес (для примера 192.168.56.10 с маской 24). Через этот интерфейс осуществляется подключение клиентских машин (также находящихся в локальной сети).
Сетевые интерфейсы настраиваем любым предпочтительным способом, например, с помощью Network Manager.
Включение удаленного доступа
Для работы сервера LTSP нужно разрешить удаленный вход в систему:
Установка пакетов
Предполагается, что перед установкой пакетов правильно подключены и настроены репозитории (установочные диски).
Для установки пакетов на Astra Linux Special Edition необходимы:
- установочный диск;
- диск со средствами разработки;
- образ обновления установочного диска (update-iso);
- образ обновления диска со средствами разработки (update-dev-iso).
Установка пакетов может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:
Установка пакета xrdp необязательна, и нужна для поддержки работы по протоколу xRDP в дополнение к протоколу SSH.
Настройка служб DHCP
По возможности не следует использовать упрощенную службу dnsmasq, лучше сразу переходить к настроке и использованию полноценной службы isc-dhcp-server.
Установка и настройка службы dnsmasq
Установить службу dnsmasq:
sudo apt install dnsmasqСоздать файл /etc/dnsmasq.d/ltsp-server-dnsmasq.conf конфигурации службы dnsmasq командой :
sudo ltsp-config --overwrite dnsmasqОтредактировать файл конфигурации /etc/dnsmasq.d/ltsp-server-dnsmasq.conf:
В конфигурационном файле, устанавливаемом по умолчанию, имеются параметры использования proxy:
dhcp-range=192.168.56.0,proxy dhcp-range=192.168.122.0,proxy
Для получения работоспособной конфигурации эти параметры следует отключить (или использовать пример конфигурационного файла, приведённый ниже).
Минимальные исправления - указать диапазон адресов, выдаваемых сервером DHCP (в примере ниже изменения отмечены выделением):Перезапустить сервис dnsmasq командой:
sudo systemctl restart dnsmasq
Создание образа тонкого клиента
Для создания образа тонкого клиента используется сценарий ltsp-build-client. Особенности применения сценария зависят от создаваемой гостевой ОС (Common Edition или Special Edition):
Astra Linux Common Edition
В Astra Linux Common Edition по умолчанию для сборки образа будет использоваться тот же дистрибутив и/или архитектура что и на серверной системе, и сценарий сборки образа в простейшем случае может быть вызван без параметров:
--chroot <название папки> - название папки с образом относительно каталога /opt/ltsp/ (по умолчанию - amd64);
--dist <название дистрибутива> - задаёт для сборки дистрибутив, отличный от используемого по умолчанию дистрибутива серверной системы. Поддерживаются два варианта: orel или smolensk;
--mirror <url> - задаёт для сборки другое расположение зеркала репозитория, из котрого нужно ставить систему (по умолчанию http://dl.astralinux.ru/astra/current/orel/repository);
--early-packages <название пакетов> — установка в клиентский образ дополнительных пакетов.
Astra Linux Special Edition
В Astra Linux Special Edition для сборки образа нужно настроить репозиторий или примонтировать установочный диск (или образ диска) Astra Linux Special Edition. Например, образ установочного диска в файле smolensk-1.6-20.06.2018_15.56.iso можно примонтировать командой
- установочный диск;
- диск со средствами разработки;
- образ обновления установочного диска (update-iso);
- образ обновления диска со средствами разработки (update-dev-iso).
Сборка образа для Astra Linux Special Edition осуществляется командой:
--update-bin - путь к iso-образу репозитория с обновлением smolensk;
--update-dev - путь к iso-образу репозитория с обновлением smolensk-devel.
Если предполагается использовать графическую оболочку, то следует сразу установить пакет fly-all-main (так же, как в Astra Linux Common Edition, использовать опцию --early-packages).
В Astra Linux Special Edition помимо устанавливаемых в Astra Linux Common Edition пакетов будут установлены пакеты parsec и linux-astra-modules. В процессе работы сценария будут появляться запросы на установку/монтирование необходимых дисков в каталог /media/cdrom.
После завершения работы образ системы будет записан в /opt/ltsp/images. Распакованная система будет расположена в каталоге /opt/ltsp/amd64, или в том подкаталоге каталога /opt/ltsp/, который был указан с помощью необязательной опции --chroot.
Настройка образа тонкого клиента
Опционально в отладочных целях рекомендуется обновить каталоги пакетов и задать пароль для локального администратора в клиентском образе (вместо <adminname> указать имя администратора):
sudo ltsp-chroot -m
apt update
useradd -g adm -G sudo -s /bin/bash -m <adminname>
passwd <adminname>
exit
[ -d /parsecfs ] && [ -d /opt/ltsp/amd64/parsecfs ] && sudo umount /opt/ltsp/amd64/parsecfs
Если ранее не был установлен пакет fly-all-main (или какой-то другой нужный пакет), то его можно доустановить в любой момент:
Обновить созданный образ:
Опционально рекомендуется создать отдельный файл конфигурации по умолчанию для LTSP клиентов:
Создание и настройка образа толстого клиента
Для создания образа толстого клиента нужно:Создать и настроить образ тонкого клиента по описанной выше процедуре или создать сразу образ толстого клиента:
sudo ltsp-build-client --fat-client-desktop fly-wm --late-packages sudo,mcГде параметры:
--fat-client-desktop - название рабочего стола (fly-wm)
--late-packages - название дополнительных пакетов, отсутствующих в стандартном наборе для создания тонкого клиента (в данном примере - пакеты sudo и mc)
В параметре --late-packages названия дополнительных пакетов должны быть указаны через запятую без пробелов.Дополнительно может быть указан необязательный параметр --chroot с именем каталога для размещения образа.
Если используется образ тонкого клиента, то установить в него основные пакеты Fly:
sudo ltsp-chroot -m apt install fly-all-mainПри необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
- Аналогично, с помощью команды ltsp-chroot -m apt install установить в созданный образ опциональные метапакеты (или же необходимые пакеты по отдельности):
• Метапакет fly-all-optional - включает в себя пакеты ark, clementine, compton, fly-admin-iso, fly-fm-crypt, gparted, guvcview, kgpg, librsvg2-bin, qapt-deb-installer, qbat, recoll, speedcrunch, synaptic, vlc, vlc-astra, vlc-l10n, vlc-plugin-access-extra, xca, yelp;
• Метапакет fly-all-games - включает в себя пакеты klines, kmines, kpat, supertux, warzone2100, xonotic;
• Пакет libreoffice - кроссплатформенный, свободно распространяемый офисный пакет с открытым исходным кодом;
• другие необходимые пакеты; Если был установлен fly-dm, то запретить его автозапуск:
sudo ltsp-chroot -m systemctl disable fly-dmПри необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
В используемом файле конфигурации клиента (/opt/ltsp/amd64/etc/lts.conf или /var/lib/tftpboot/ltsp/amd64/lts.conf) изменить значение параметра LDM_SESSION на default (добавить параметр, если его нет), и добавить параметр LDM_PASSWORD_HASH для корректной работы блокировщика экрана:
# If you're using Unity, you might want to install gnome-session-fallback and
# use it by default instead, as it performs better on LTSP thin clients.
LDM_SESSION="default"
LDM_PASSWORD_HASH=TrueОбновить ранее собранный образ клиента:
sudo ltsp-update-kernels <ARCH> && sudo ltsp-update-image <ARCH>где вместо <ARCH> указать название каталога, в котором находятся файлы для сборки (каталог указывается относительно каталога /opt/ltsp/ и, если не указать ничего - то будет использована архитектура amd64, т.е. будет использован каталог /opt/ltsp/amd64/)
Настройка удалённых подключений XDMCP и RDP
По умолчанию подключение осуществляется с использованием оконного менеджера ldm.
Для подключения по протоколу XDMCP:
В ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) заменить в файле /opt/ltsp/amd64/usr/share/ltsp/screen.d/xdmcp строку
X_ARGS="$X_ARGS -query ${XDM_SERVER}"
на
X_ARGS="$X_ARGS -query ${XDM_SERVER} -displayID 0:63:0x0:0x0"
В Astra Linux Common Edition выполнение указанных действий не требуется.
Для rdp подключений в файле /opt/ltsp/amd64/usr/share/ltsp/screen.d/xfreerdp последнюю строку привести к виду
exec xinit /usr/share/ltsp/xinitrc /usr/local/bin/rdp.sh -- "$DISPLAY" "vt${TTY}" -nolisten tcp $X_ARGS >/dev/null
Создать файл /opt/ltsp/amd64/usr/local/bin/rdp.sh (указать актуальный IP-адрес):
#!/bin/bash userdata=$(zenity --forms --title="Вход на сервер" --text="Форма авторизации" --add-entry="Логин:" --add-password="Пароль:"); userlogin="`echo $userdata|cut -d '|' -f 1`"; userpassword="`echo $userdata|cut -d '|' -f 2`"; xfreerdp /v:192.168.56.100 /cert-ignore +sec-nla /d:example.com /u:$userlogin /p: $userpassword /f /drive:usb,/media /network:lan /printer
И сделать созданный файл /opt/ltsp/amd64/usr/local/bin/rdp.sh исполняемым:
sudo ltsp-chroot -m update-initramfs -uk all
sudo ltsp-config --overwrite lts.conf
Файл /var/lib/tftpboot/ltsp/amd64/lts.conf привести к следующему виду (исправив IP-адреса на актуальные):
[default] LTSP_CONFIG=True LOCALDEV=True HOTPLUG=True DNS_SERVER=192.168.56.100 SOUND=True MIC_VOLUME=0 CAPTURE_VOLUME=100 CAPTURE_SWITCH=toggle TIMEZONE=Europe/Moscow TIMESERVER=192.168.56.100 SYSLOG_HOST=192.168.56.100 NBD_SWAP=False #NBD_SWAP_SERVER=192.168.56.100 #CONFIGURE_X=False SCREEN_07=xfreerdp PRINTER_0_DEVICE=/dev/usb/lp0 PRINTER_0_TYPE=U
SCREEN_07=xfreerdp
следует изменить на SCREEN_07=xdmcp.
После выполнения вышеуказанных действий на сервере терминалов нужно создать пользователей, после чего можно выполнять загрузку клиентских машин по сети.
Дополнение: настройка автомонтирования usb-устройств
Создать файл /opt/ltsp/amd64/etc/udev/rules.d/udev.rules:
ACTION=="add", KERNEL=="sd[a-z][0-9]", TAG+="sy sudo mount --bind /persecfs /opt/ltsp/<name>/parsecfsstemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"
Создать unit для запуска:
[Unit] Description=Mount USB BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/automount %I ExecStop=/usr/bin/pumount /dev/%I
Создать сценарий монтирования:
#!/bin/bash PART=$1 FS_LABEL=`lsblk -o name,label | grep ${PART} | awk '{print $2}'` if [ -z ${FS_LABEL} ] then /usr/bin/mount -t auto /dev/${PART} /media/${PART} else /usr/bin/mount -t auto /dev/${PART} /media/$ {FS_LABEL}_${PART} fi
Разрешить выполнение сценария:
Пересобрать образ: