[ALTSP] Интеграция NX в ALTSP
Mike Grozak
mike at tversu.ru
Thu Jan 29 11:12:40 MSK 2009
По договорённости с г-ном Михаилом Шигориным взялся оформить
документацию по данному процессу. Думаю, никто не будет против, если мы
это обсудим сначала здесь, а потом выложим в вики результат?
Весь процесс состоит из 5 частей.
0. Установка open-source NX-компонент.
# apt-get install nx
1. Установка сервера freenx - за это отвечает пакет freenx-server версии
0.7.4 в репозитариях веток 4.0, 4.1 и сизифа.
# apt-get install freenx-server
Далее требуется настроить сам nxserver, для этого запустите команду:
# nxsetup --install --setup-nomachine-key
При этом будет установлен ключ "по умолчанию", который очень давно
используется в продуктах компании NoMachine, что само по себе является
небезопасным. Так что рекомендуется генерировать свой ключ (при
установке без опции --setup-nomachine-key у вас спросят, генерировать
или нет) и скармливать его клиентам.
Нужно проверить, запущен ли сервер, и если нет - запустить
# nxserver --status
# nxserver --start
2. Все настроки nxserver хранятся в /etc/nxserver/node.conf. Файл
снабжён богатыми комментариями, и понять его, на мой взгляд, не составит
труда. Настройки "по умолчанию" достаточно работоспособны.
3. Установка nxclient в чрут.
а) Либо при сборке клиенсткого чрута указываем этот пакет в
EARLY_PACKAGES - nxclient.
б) Либо в чруте аптом или руками ставим его.
# chroot $ltsp_chroot
# apt-get install nxclient
или
# rpm -i nxclient-<...>.rpm
Пакет от NoMachine требует либ libcups, libaudiofile, libtiff, libjpeg и
libpng, насколько я помню.
4. Установка скриптов nx сессий
Мною предполагается, что при старте иксов на тонком клиенте ему будет
выдаваться окно NX-клиента с запросом имени пользователя и пароля, и
больше ничего. При завершении сессии клиенту снова выдаётся окно NX-клиента.
Скрипты запуска сессии хранятся в
/var/lib/ltsp/i586/usr/share/ltsp/screen.d. Если вы пропишите
SCREEN_07=nx, то запустится скрипт
/var/lib/ltsp/i586/usr/share/ltsp/screen.d/nx.
Соответственно, кидаем в эту директорию следующие скрипты:
а) nx - не самый лучший скрипт, был содран с rdp, как не сложно
догадаться - приветствуются модификации и улучшения:
---------------------------------------------------------------------------------------------------------------------
#!/bin/sh
. /usr/share/ltsp/ltsp_config
tty=$(tty)
case "$tty" in
/dev/tty*) # with udev (2.6 kernel)
ttynum=${tty#/dev/tty}
;;
/dev/vc/*) # with devfs (2.4 kernel)
ttynum=${tty#/dev/vc/}
;;
esac
displaynum=$(($ttynum - 1))
MAX_TIMEOUT=30
MAX_COUNT=5
COUNTER=0
FLAG=1
ARGS=""
if [ -n "${X_CONF}" ]; then
ARGS="${ARGS} -config ${X_CONF}"
fi
while [ $FLAG -ne 0 ]; do
START_TIME=$(date +%s)
NX_OUTPUT=`xinit /usr/share/ltsp/screen.d/start_nx -- :$displaynum
vt${ttynum} ${ARGS} 2>&1 | grep '^ERROR:'`
FINISH_TIME=$(date +%s)
TIMEOUT=$((FINISH_TIME-START_TIME))
if [ $TIMEOUT -le $MAX_TIMEOUT ]; then
if [ $COUNTER -ge $MAX_COUNT ]; then
COUNTER=0
Message nxclient "$NX_OUTPUT" || FLAG=0
else
COUNTER=$((COUNTER+1))
fi
else
COUNTER=0
fi
done
---------------------------------------------------------------------------------------------------------------------
б) start_nx:
---------------------------------------------------------------------------------------------------------------------
#!/bin/sh
# set the background
/usr/bin/xsetroot -solid black
# set some variables
export NXDIR=/usr/NX
export HOME=/tmp
# start the window manager
openbox &
# start nxclient
while true; do
# start nx client with predefined session
$NXDIR/bin/nxclient --session "/etc/X11/terminal.nxs"
# sleep until nxclient(nxssh) is running
while (ps -C nxssh > /dev/null); do
sleep 1
done
done
---------------------------------------------------------------------------------------------------------------------
где terminal.nxs - конфиг для сессии по вкусу. Именно в нём, кстати,
можно указать сгенерённый ключ. Думаю, добавлю обработку переменной -
NXCONF, что бы можно было назначать разным терминалам разные сессии.
Собственно говоря, вся дока. Прошу критиковать и корректировать.
---
WBR, Mike Grozak, TvSU IC Dep
More information about the Ltsp-server
mailing list