В среде LTSP, Вы можете выбирать, запускать приложения локально на рабочей станции, или удалённо на сервере.
В настоящий момент наиболее простым методом является запуск приложений на удалённом сервере. Это означает, что приложение работает на сервере, используя процессор и память сервера, но при этом выводит результаты работы на монитор рабочей станции, используя клавиатуру и мышь рабочей станции.
Это является фундаментальной особенностью X Windows. Рабочая станция работает как стандартный Х Windows терминал.
Для того, чтобы запускать приложения локально непосредственно на рабочей станции, она (рабочая станция) должна обладать некоторой информацией о пользователе. Информация следующая:
LTSP обращается к Network Information Service - NIS, (обычно называемому Желтые страницы (Yellow Pages)) чтобы сделать информацию о пользователе и группе доступной для рабочей станции.
Существуют определенные преимущества в локальном запуске приложений на рабочей станции.
Уменьшается загрузка сервера. Если ваша сеть достаточно велика, а запускаемые приложения весьма ресурсоёмки (например, Netscape), то при запуске локально можно получить гораздо более высокую скорость работы приложения в том случае, если рабочая станция достаточно мощна для работы с такими приложениями.
Запущенные, но не работающие приложения не будут мешать другим пользователям. Гораздо проще настроить поддержку звука, если приложение, требующее звук, запущено локально на рабочей станции.
Установка поддержки локального запуска приложений требует гораздо большего.
Более высокие требования к рабочей станции. Необходимо болбшее количество памяти и более мощный процессор. Необходимо начинать с не менее, чем 64 Mb памяти.
NIS - для локального запуска приложений в первую очередь необходимо идентифицировать себя для рабочей станции. Здесь необходима форма опознавания посредством пароля. NIS был выбран в качестве метода идентификации пользователей через сеть.
Дополнительные директории должны экспортироваться от рабочей станции, чтобы быть подмонтированными через NFS.
Более медленный запуск приложений, потому что они должны читаться через NFS, вызывает увеличенную нагрузку на сеть. Также, из-за того, что каждая копия приложения работает на собственном процессоре, Вы не сможете получить возможность использования одной из самых главных возможностей Linux/Unix систем, заключающейся в способности разделения сегментов кода между разными копиями одной программы, которая уменьшает время вызова программы.
Несколько конфигурационных строк должны быть заполнены в файле lts.conf:
Данному параметру нужно выставить значение Y. Это приведёт к следующим изменениям в процессе загрузки рабочей станции:
Когда используется NIS, все узлы в сети, которые хотят быть ассоциированы с определенным сервером NIS, должны принадлежать тому же самому NIS домену(Это никак не связано с доменом DNS). Строка NIS_DOMAIN используется для определения имени домена NIS, к которому будет принадлежать рабочая станция.
NIS также попытается связаться с определенным сервером NIS в сети, или отправит в сеть запрос на поиск этого сервера. Если Вы желаете выбрать определенный сервер, укажите IP адрес данного сервера в строке NIS_SERVER.
NIS является типом сервиса Client/Server. На сервере запущен демон, принимающий запросы от клиентов (рабочих станций). Демон называется ypserv.
На рабочей станции существует процесс с названием ypbind. Когда рабочей станции необходимо получить определённую информацию о клиенте, такую как сравнение пароля или нахождение домашней директории пользователя, она воспользуется ypbind для уставновки соединения с демоном ypserv на сервере.
Если в Вашей сети уже используется NIS, Вам нет необходимости конфигурировать LTSP для того, чтобы работал ypserv.Вам просто нужно сконфигурировать строки NIS_DOMAINNAME и NIS_SERVER в файле lts.conf таким образом, чтобы они совпадали с Вашей схемой NIS.
Если в Вашей сети НЕ используется NIS, Вам необходимо сконфигурировать сервер для работы ypserv.
Для получения более полной докуменации по настройке NIS сервера обратитесь к документу HOWTO на сайте LDP, с названием The Linux NIS(YP)/NYS/NIS+ HOWTO. Также обратитесь к списку других источников в конце данного документа.
Чтобы сконфигурировать приложения для запуска на рабочей станции Вам необходимо поместить все компоненты приложения в такое место, где рабочая станция сможет их увидеть.
На более старых версиях LTSP (2.08 и ранее) множество директорий экспортировалось на сервер и монтировалось рабочей станцией. Такие директории как /bin, / usr/bin , /lib and /usr были открыты для рабочих станций.
Проблема такой схемы заключалась в том, что она работает только на серверах и рабочих станциях с одинаковой архитектурой. На практике даже такая разница архитектур, как то: сервер - Pentium II (i686), рабочая станция - Pentium (i586) может вызывать проблемы, потому что на сервере будут стоять библиотеки i686, а не i386, i486 или i586.
Поэтому, самый лучший путь для избежания этих проблем - это иметь полное дерево всех бинарников и библиотек, необходимых для рабочей станции, независимо от бинарников и библиотек сервера.
Конфигурирование приложений для локального запуска на рабочей станции требует, чтобы все файлы приложения находились в определенном месте дерева. Один из пакетов, доступных для загрузки с сайта LTSP - Local netscape package, инсталлирует множество файлов в директорию /opt/ltsp/i386/usr/local/netscape. Такие вещи как java classes, help files, исполняемые бинарники и скрипты - всё помещается в эту директорию.
Netscape не требует никаких дополнительных системных библиотек, поэтому ничего не нужно добавлять в директорию /opt/ltsp/i386/lib. НО многим приложениям дополнительные библиотеки требуются.
А как определить, какие именно библиотеки нужны? Здесь на помощь приходит команда ldd.
Давайте представим, что Вы хотите установить какое-то приложение для запуска локально. Для примера возьмём gaim. Gaim - это клиент AOL Instant Messenger, позволяющий общаться с другими людьми в форумах AOL.
Первое, что надо сделать - найти исполняемый бинарник Gaim. В системе Redhat 7.2 он находится в директории /usr/bin.
После того, как Вы нашли этот файл, Вы можете запустить команду ldd:
[jam@server /]$ ldd /usr/bin/gaim
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x40033000)
libm.so.6 => /lib/i686/libm.so.6 (0x40051000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40074000)
libgnomeui.so.32 => /usr/lib/libgnomeui.so.32 (0x4008a000)
libart_lgpl.so.2 => /usr/lib/libart_lgpl.so.2 (0x4015d000)
libgdk_imlib.so.1 => /usr/lib/libgdk_imlib.so.1 (0x4016c000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40191000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4019a000)
libgtk-1.2.so.0 => /usr/lib/libgtk-1.2.so.0 (0x401b1000)
libdl.so.2 => /lib/libdl.so.2 (0x402df000)
libgdk-1.2.so.0 => /usr/lib/libgdk-1.2.so.0 (0x402e3000)
libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 (0x40319000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x4031d000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40325000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40333000)
libgnome.so.32 => /usr/lib/libgnome.so.32 (0x40411000)
libgnomesupport.so.0 => /usr/lib/libgnomesupport.so.0 (0x40429000)
libesd.so.0 => /usr/lib/libesd.so.0 (0x4042e000)
libdb.so.2 => /usr/lib/libdb.so.2 (0x40436000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x40444000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40468000)
libc.so.6 => /lib/i686/libc.so.6 (0x40495000)
libz.so.1 => /usr/lib/libz.so.1 (0x405d1000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
Данный список показывает все библиотеки, на которые ссылается gaim.
Многие программы, использующие общие библиотеки используют динамический загрузчик ld-linux для поиска и загрузки каждой библиотеки. Но, как водится, некоторые программы загружают библиотеки сами, использую функцию вызова dlopen(). Для этих приложений команда ldd не покажет список необходимых библиотек. В таком случае нужно использовать strace для отслеживания во время запуска программы, и вы увидите вызовы dlopen(), с названиями всех вызываемых библиотек.
Как только Вы получили список необходимых библиотек, поместите их в нужное место в дереве /opt/ltsp/i386.
В X Windows, если оконный менеджер выполняется на сервере, а рабочая станция лишь выводит результаты, то и приложения будут работать точно таким же образом.
Трюк заключается в том, чтобы заставить сервер запустить приложение на рабочей станции. Обычно это делается с помощью команды rsh.
Вот пример запуска программы gaim на рабочей станции:
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} /usr/bin/gaim -display ${DISPLAY}
|
Этот пример может быть введен в окне терминала, либо может быть собран как скрипт и запускаться по нажатию иконки на рабочем столе.
Запуск Netscape проходит похожим образом, однако перед запуском необходимо указать дополнительную переменную среды
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \
/usr/local/netscape/netscape -display ${DISPLAY}
|