Эти материалы являются объектом авторского права и защищены законами РФ и международными
соглашениями о защите авторских прав. Перед использованием материалов вы обязаны принять условия
лицензионного договора на использование этих
материалов, или же вы не имеете права использовать настоящие материалы
Авторская площадка "Наши орбиты" состоит из ряда тематических подразделов, являющихся моими лабораторными дневниками, содержащими записи за разное, иногда
продолжительно отличающееся, время. Эти материалы призваны рассказать о прошедшем опыте, они никого ни к чему не призывают и совершенно не обязательно могут быть применимы кем-то ещё. Это только
лишь истории о прошлом
Начальные слова
Терминальные сервера являются стандартным компонентом в промышленных ИТ системах, но и в домашних сетях находят свою нишу. Когда вы отлучаетесь
на минуту, а консоль по возврашщении уже занята кем то из домашних по важному и небыстрому делу - поневоле задумаешься о терминальнеке. Когда не
хотелось бы прерывать работу и начинать сначала при перемещении с территории на территорию (например, из дома в офис) - также задумаешься о
терминальнике. Когда площадка рабочих станций подвергается эпизодическому отключению питания, а работать, скажем в выходные, надо - также помогают
терминальные решения. Они же позволяют малой кровью контролировать версионность ПО, оптимально использовать отказустойчивые вычислительные ресурсы
в виртуальной среде, создавать более безопасные решения. И так далее ... Например, у меня в домашней сети такой Linux терминальник используется
несколько лет. В увязке с RAS, SSO и распределённой ФС он дополняет возможности толстых и мобильных консолей. Есть и служебный опыт его
использования
Терминальные сервера нужны, и желательно использовать их именно на востребованной и отлаженной UNIX платформе. UNIX предлагает множество решений
по "пробросу" графических приложений с сервера на консоли клиента. В первую очередь это существующий многие десятки лет штатный механизм проброса
X-сессии напрямую или через ssh/vpn туннель, сервера VNC и следующие за ними. Однако они не всегда решают задачу сохранения сессии при отключении
клиента. Мой выбор для терминальных решений - Xrdp в связке с X11rdp, развёртывание которого, в силу модификаций проекта разработчиками, считаю
полезным зафиксировать в настоящей статье
Установка базового сервиса
Устанавливать Xrdp и X11rdp будем на Linux, из исходников, поэтому важно обеспечить предварительные условия, позволяющие при выпадающих ошибках
быстро доставлять требуемые компоненты. Перед работой подключаем локальный репозитарий. Впоследствии при выполнении команд установки, при появлении
сообщений об отсутствии той или иной программы она элементарно доставляется из репозитария однострочной командой
# ------------ устанавливаем Xrdp ------------
yum install autoconf automake libtool openssl-devel pam-devel \
libjpeg-turbo-devel flex bison pulseaudio-libs-devel
yum insall git
git clone git://github.com/FreeRDP/xrdp.git
# (или wget поный_путь_к_архиву на https://github.com/FreeRDP/xrdp)
./bootstrap
./configure --enable-jpeg
# (раньше добавляли опцию --enable-simplesound, сейчас не нужно)
make
make install
#
# ------------ устанавливаем X11rdp ------------
# - метод 1 требует доступа сервера к Интернет, выкачивается ~80Мб
cd {Xrdp_source}/xorg/X11R7.6
./buildx.sh /opt/X11rdp
# если в процессе выплывают сообщения о недоступности тех или иных
# пакетов - доустанавливаем их из репозитория и запускаем команду
# сборки повторно
# - метод 2 требует наличия готового архива с исходниками X11rdp
# у меня завалялся x11rdp_xorg71.src_from_svn.20150908.01.tar.gz
# собираем и устанавливаем, далее
ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp
ln -s /opt/X11rdp/bin/X11rdp /usr/bin/X11rdp
cp /etc/xrdp/xrdp.sh /etc/init.d/
# -- добавить в автостарт на кольце исполнения (для RHEL based) 3
xrdp-keygen xrdp auto
cat /etc/pam.d/system-auth >> /etc/pam.d/xrdp-sysman
Для базового терминального сервиса всё готово, его можно стартовать и тестировать
Проброс звука
yum install json-с sndfile-devel speex-devel speexdsp-devel
rpm -Uhv путь_к_RPM_архиву_с_исходниками_pulseaudio
# альтернатива для непакетных дистрибутивов - сайт с исходниками
# http://freedesktop.org/software/pulseaudio/releases/
cd /root/rpmbuild/SOURCES
gunzip имя_архива_с_исходниками
cd pulseaudio-0.9.21 (путь к восстановленному каталогу исходников)
.configure
pwd # (запоминаем путь к каталогу с исходниками pulseaudio )
# при нехватке каких либо пакетов доставляем их и перезапускаем ещё раз
cd {Xrdp_source}/xrdp/sesman/chansrv/pulse
# в Makefile редактируем PULSE_DIR=путь к исходникам pulseaudio
make
cp module-xrdp-sink.so /usr/lib/pulse-0.9.21/modules/
# /usr/lib/pulse-0.9.21/modules/ заменить на свой
# ------------ Проверяем /etc/asound.conf ------------
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
# ------------ Редактируем /etc/pulse/default.pa ------------
.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix
Звук настроен и после перезагрузки должен отдаваться по сети в терминальной сессии
Настройка раскладок
# ------------ настраиваем корректную работу раскладок
# добавляем перед вызовом wm_start в /etc/xrdp/startwm.sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
export LC_ALL=ru_RU.UTF8
setxkbmap -layout "us,ru(winkeys)" -model "pc105" -option "grp:ctrl_shift_toggle"
# linux клиент запускаем, например, так
rdesktop -k en-us -u test1 -z -a 16 -g 1240x800 -b -C -P -r sound 172.16.31.90
не завершено ...
Белонин С.С. (С), август 2016 года (даты последующих модификаций не фиксируются)
|