FreeNX: различия между версиями

Материал из ALT Linux Wiki
Строка 106: Строка 106:
|CTRL+ALT+M      ||  Максимизировать или минимизировать окно.
|CTRL+ALT+M      ||  Максимизировать или минимизировать окно.
|-
|-
|CTRL+ALT+Mouse  ||  Drags the viewport, so you can view different portions                   of the desktop.  
|CTRL+ALT+Mouse  ||  Drags the viewport, so you can view different portions of the desktop.  
|-
|-
|CTRL+ALT+Arrows or CTRL+ALT+Keypad||    Moves the viewport by an incremental amount of pixels.  
|CTRL+ALT+Arrows or CTRL+ALT+Keypad||    Moves the viewport by an incremental amount of pixels.  
|-
|-
|CTRL+ALT+S      ||  It will activate "screen-scraping" mode, so all the GetImage
|CTRL+ALT+S      ||  It will activate "screen-scraping" mode, so all the GetImage originated by the clients will be forwarded to the real display. This should make happy those who love taking screenshots ;-). By pressing the sequence again, nxagent will revert to the usual "fast" mode.
originated by the clients will be forwarded to the real
display. This should make happy those who love taking
screenshots ;-). By pressing the sequence again, nxagent
will revert to the usual "fast" mode.
|-
|-
|CTRL+ALT+E      ||  Ленивое кодирование изображений.
|CTRL+ALT+E      ||  Ленивое кодирование изображений.

Версия от 06:04, 19 апреля 2016

Установка freenx сервера терминалов на ALT Linux Desktop. От «А» до «Я»

Цель данной статьи — описать типовой процесс создания сервера терминалов с учётом особенностей ОС ALT Linux Desktop. В данном посте изложен мой личный опыт, ни в коем случае не претендующий на академичность. Я просто хочу немного систематизировать те разрозненные куски информации на тему «FreeNX+ALT Linux», что имеются в глобальной сети.

Немного теории

Описание протокола NX

Описание протокола NX на www.gnome.org. Не пинайте за перевод. :)

Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания NoMachine создала свой коммерческий (но в основной массе открытый) продукт. Также существует полностью открытая и бесплатная реализация NX — FreeNX. Мы будем использовать именно FreeNX.

Установка FreeNX

Я не буду останавливаться на установке самого ALT Linux’а. Если нужно подробное руководство, то можно найти его, например, здесь . Итак, будем считать, что у вас на компьютере установлен ALT Linux Personal Desktop версии 4.0.* (у меня стоит 4.0.2). Компьютер также должен иметь выход в Интернет. Для начала запустим ssh-сервер, по каналу которого и происходит обмен данными между сервером и клиентами nx. Для этого в терминале набираем su, затем вводим пароль суперпользователя. Затем набираем

   service sshd start
   chkconfig sshd on

SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы. Проверим, включён ли у вас официальный репозиторий. После этого вводим строку kwrite /etc/apt/sources.list. Откроется файл, в котором должны быть следующие строки:

   rpm ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch/ i586 classic
   rpm ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch/ noarch classic

Если этих строк нет, то добавьте их. Далее необходимо обновить ваш список пакетов. Сохраняемся и выходим из редактора, в консоли от имени суперпользователя набираем apt-get update. С официального сервера ALT Linux загрузится список всех содержащихся там пакетов. ПО для ALT Linux поставляется в виде *.rpm — пакетов. Сравнительно недавно у этих пакетов поменялся метод сжатия. Для поддержки нового LZMA метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки:

   apt-get install ‘rpm>=4.0.4-alt93′
   apt-get --reinstall update

Затем вводим следующую строку для установки пакетов nx:

   apt-get install nx freenx-server

Система управления пакетами скачает и установит все необходимые программы.

После этого нам остается завершить установку командой

   /etc/init.d/freenx-server setup

При этом выполнится скрипт, настраивающий FreeNX. Скрипт спросит, использовать для сервера "общий" ключ NoMachine или локальный и порекомендует использовать общий. Если подключения будут произодиться из разных мест, лучше выполнить рекомендацию и использовать общий ключ. Тогда пользователи смогут подключаться, используя клиент от NoMachine: ------> It is recommended that you use the NoMachine key for

       easier setup. If you answer "y", FreeNX creates a custom
       KeyPair and expects you to setup your clients manually. 
       "N" is default and uses the NoMachine key for installation.
Do you want to use your own custom KeyPair? [y/N] N

Setting up /etc/nxserver ...done

Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения "Warning:" можно проигнорировать.

Повторно проверить настройки и совместимость с другими компонентами можно командой

   /etc/init.d/freenx-server check

или

   nxloadconfig --check

Если в терминале выведется нечто вроде

   ----> Testing your nxserver configuration ...
   Warning: Invalid value "CUPS_ETC=/etc/cups/"
            Users will not be able to enable printing.
   Warning: Invalid value "COMMAND_START_CDE=cdwm"
            Users will not be able to request a CDE session.
   Warning: Invalid cupsd version of "/usr/sbin/cupsd". Need version 1.2.
            Users will not be able to enable printing. Ignore if you use cups > 1.2
     Warnings occured during config check.
     To enable these features please correct the configuration file.
   <---- done
   ----> Testing your nxserver connection ...
   HELLO NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
   <--- done

Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему.

Комментарий

Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится. Таким образом для теневого подключения на сервере надо выполнить от root:

   apt-get update
   apt-get install net-utils

Источники

Хинты

CTR+ALT+F Переключить полноэкранный режим.
CTRL+ALT+T Показать диалог завершения или приостановления сессии.
CTRL+ALT+M Максимизировать или минимизировать окно.
CTRL+ALT+Mouse Drags the viewport, so you can view different portions of the desktop.
CTRL+ALT+Arrows or CTRL+ALT+Keypad Moves the viewport by an incremental amount of pixels.
CTRL+ALT+S It will activate "screen-scraping" mode, so all the GetImage originated by the clients will be forwarded to the real display. This should make happy those who love taking screenshots ;-). By pressing the sequence again, nxagent will revert to the usual "fast" mode.
CTRL+ALT+E Ленивое кодирование изображений.
CTRL+ALT+Shift+ESC Экстренный выход и закрытие окна.

Проблемы

  • Если в выводе service freenx-server check вы видите следующие сообщения
Warning: "/usr/lib/cups/backend/smb" is not executable.
         Users will not be able to enable printing.

и вы планируете использовать проброс принтеров, то вам необходимо поставить пакет samba-client .

  • Если в выводе service freenx-server check вы видите следующие сообщения
Warning: Invalid permissions on "/sbin/mount.cifs". Valid permissions are "4711". You'll not be able to use SAMBA. 
Warning: Invalid permissions on "/sbin/umount.cifs". Valid permission are "4711". You'll not be able to use SAMBA. 

и вы планируете использовать проброс CIFS-ресурсов, то вам необходимо выполнить нижеприведенные команды:

# control cifsmount public
# control cifsumount public

ВНИМАНИЕ: В этом случае, монтирование CIFS-ресурсов будет доступно всем пользователям.

  • На ALT Desktop 4.0 команда lpadmin не понимает имя драйвера в виде

#lpadmin -p HPLaserJet -m foomatic-ppdfile:HP-LaserJet_9040-hpijs.ppd
lpadmin: Unable to copy PPD file!

Правильный вид

#lpadmin -p HPLaserJet -m foomatic:HP-LaserJet_9040-hpijs.ppd

Из-за этого на сервере драйвер для принтера не выставляется. Решается в скрипте /usr/bin/nxprint заменой команды у awk

с
printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,$2,substr($3,2)) } '
на
printf("driver|%s%s|%s|%s|%s\n",$4,A,$6,"foomatic"substr($2,index($2,":")),substr($3,2)) } '

  • Если клиенты цепляются с ALT Desktop 4.0, то есть проблема с печатью, т.к. существует бага в dbus 1.0.2, из-за которой у процесса cupsd (на стороне клиента) не закрываются pipe'ы и со времен их кол-во переполняет верхний потолок кол-ва разрешенных открытых файлов [1]. Апгрейд у клиента пакетов libdbus и dbus из branch 4.0 решает проблему

Ссылки