Шпаргалка-дополнение к инструкциям по настройке LTSP.RU

Версия документа: 6.1 от 2003/06/21

© Sergey A. Galin, 2003
Каждый имеет право воспроизводить, распространять и/или вносить изменения в настоящий Документ в соответствии с условиями GNU Free Documentation License, Версией 1.1 или любой более поздней версией, опубликованной Free Software Foundation.

Контактная информация:
Sergey A. Galin, http://sageshome.net/

Убедительная просьба: если вы хотите задать вопрос по LTSP (или сообщить какие-нибудь полезные сведения для включения в документацию), пишите не мне напрямую, а в дискуссию ltsp-ru-discussion@yahoogroups.com, предварительно подписавшись на нее. Вы можете подписаться, отправив пустое письмо по адресу: ltsp-ru-discussion-subscribe@yahoogroups.com. См. также: http://ltsp.ru/root.php?c=main&t=contacts.

История пополнений документа

2003/06/21 - 6.1 Небольшие "редакторские" исправления.
2003/03/21 - 6 Добавлен раздел "Компрессирование сетевого потока"
2003/03/19 - 5.2 Добавлены примечания.

Содержание

  1. Тестовая система
  2. Методы запуска сетевого загрузчика
  3. Настройка использования шрифтов на терминале
  4. Установка терминала LTSP на виртуальную машину VMWare
  5. Настройка NIS-сервера
  6. Использование локальных устройств
    1. Экспорт локальной файловой системы терминала с помощью Samba
    2. Инициализация локальных устройств
    3. Монтирование устройств
    4. Usermount для локальных устройств
    5. Автоматическое монтирование локальных устройств к серверу с помощью Samba
  7. Создание терминалов с локальным Linux на базе LTSP
  8. Компрессирование сетевого потока
  9. Установка пакетов RPM в терминал
  10. Разные советы
  11. Помогавшие в работе над этим документом
  12. Ссылки

Тестовая система

Приведенные в записях инструкции были опробованы на следущей системе:

Сервер
PC с ASP Linux 7.3 Vostok (совместим с Red Hat 7.3)
Samba 2.2.7
ПО терминалов
LTSP.RU 3.0 с установленными дополнительными пакетами от оригинального LTSP 3.0 i386 (Sourceforge).
Дополнительное ПО для локального запуска на терминале добавлялось из дистрибутива серверной ОС (ASP 7.3).
Основной тестовый терминал
Виртуальная машина VMWare 3.1, работающая на сервере (со звуком Sound Blaster 16, Ethernet - AMD PC Net Bridged, жесткий диск - физический диск IDE, только для чтения, флоппи - образ загрузочной дискеты, 32Mb памяти).
Рабочий терминал
Обычный компьютер K6, 192Mb RAM с жестким диском IDE, CD-ROM, видео - Riva TNT2 Vanta.
Сеть
Ethernet 100Mbit (Realtek RTL8139, кроме виртуального терминала).

Методы запуска сетевого загрузчика

Настройка использования шрифтов на терминале

XFS (X Font Server) - демон, обеспечивающий X Window System шрифтами.

Настроить набор шрифтов на терминале можно двумя способами:
1) Просто установить пакет ltsp-fonts, и терминал будет загружать шрифты самостоятельно.
2) Заставить терминал использовать сервер шрифтов на терминал-сервере (или любом другом компьютере). Главный плюс - позволяет использовать набор шрифтов сервера и на нем самом, и на всех терминалах, что очень упрощает администрирование и экономит дисковое пространство. Заодно снижается нагрузка на терминалы.

Настройка сервера

Первый шаг: Нужно открыть доступ к серверу XFS по TCP/IP (по умолчанию он заблокирован из соображений безопасности). Для этого в файле /usr/X11R6/lib/X11/fs/config ищем директиву no-listen = tcp, и при необходимости комментируем:

# don't listen to TCP ports by default for security reasons
#no-listen = tcp

Перезапускаем XFS:
/etc/init.d/xfs restart

Настройка терминалов для использования XFS

Второй шаг: настраиваем терминал на использование XFS сервера. В lts.conf глобально или для конкретной рабочей станции указываем:

   USE_XFS     = Y
   # По умолчанию, используется XFS на терминал-сервере, 
   # но можно указать и другой адрес.
   # XFS_SERVER  = 192.168.0.254

Установка терминала LTSP на виртуальную машину VMWare

Установка терминала на виртуальную машину может быть нужна, например, для изучения LTSP, для отладки-настройки (не надо бегать от сервера терминала к терминалу), для запуска терминала из-под работающей Window$ NT (или Linux). (Под NT бездисковый терминал в VMWare во многом эффективнее, чем, например, Cygwin - так почему бы не воспользоваться этим, если уже есть терминал-сервер и VMWare?) Или, например, для проверки, может ли ваша конфигурация терминала работать на данном объеме RAM и как при этом изменится загрузка свопа - намного проще и быстрее отредактировать настройки виртуальной машины, чем разбирать настоящую.

В общем, установка на винртуальную машину мало чем отличатся от установки на обычный терминал :)

Виртуальная машина VMWare использует виртуальную сетевую карту AMD PC Net. Вам понадобится прошивка для pcnetfastii, образ для дискеты. Создаем образ загрузочной дискеты, например, таким образом:
- вставляем в дисковод чистую дискету;
- делаем дискету загрузочной: cat eb-5.0.8-pcnetfastii.lzdisk > /dev/fd0
- создаем образ дискеты на жестком диске: cat /dev/fd0 > vmware-ltsp-boot.img

Создаем в VMWare виртуальную машину со следующими параметрами: 32Mb RAM (это оптимальное значение для большинства случаев); жесткий диск - не важно, какой (все равно использоваться не будет); флоппи диск - образ, указываем в качестве образа файл vmware-ltsp-boot.img; Guest OS - Linux, звук включен, сетевой адаптер - Bridged (чтобы виртуальная машина была в той же сети, что и физические). Запускаем виртуальную машину, заходим в ее BIOS Setup и ставим загрузку с флоппи.

Раздел lts.conf для виртуальной машины должен выглядеть примерно так:

[ws002]
    # Глубина цвета должна быть такой же, как и в Host OS (на компьютере,
    # на котором запущена VMWare)
    X_COLOR_DEPTH      = 24
    # Звуковая карта VMWare (эмулирует SB16)
    SOUND              = Y
    SOUND_DAEMON       = esd # This can be 'nasd', or 'esd' at this time
    VOLUME	       = 100 # Speaker & WAVE volume pecentage
    MIC_VOLUME	       = 0 # Microphone volume
    CD_VOLUME          = 100  # CD Audio volume
    SMODULE_01         = soundcore
    SMODULE_02	       = uart401
    SMODULE_03	       = sb
    # Остальные параметры....
    USE_NFS_SWAP       = Y
    SWAPFILE_SIZE      = 64m    

Остальные настройки (DHCP, NIS и так далее) - по инструкциям для обычных терминалов.

Настройка NIS-сервера

Это минимальная пошаговая инструкция для тех, кто хочет запускать локальные приложения на терминалах, не разбираясь в NIS.

Убедитесь, что на сервере установлены пакеты yp* из дистрибутива Linux (NIS изначально назывался Sun Yellow Pages). Запустите программу настройки сервисов и настройте все сервисы yp*, кроме ypbind, запускаться при загрузке ОС (например, с помощью setup или linuxconf). Запустите их (/etc/init.d/yppasswd start; /etc/init.d/ypxfrd start; /etc/init.d/ypserv start).

Настройка конфигурационных файлов

Далее подразумевается, что ваш NIS-домен (не путать с обычным доменом!) называется ltsp.

В файл /etc/sysconfig/network

...
NISDOMAIN=ltsp
...

Файл /etc/ypserv.conf

..
# Host : Domain : Map : Security 
#
* : * : passwd.byname : none : yes
* : * : passwd.byuid : none : yes
..
# Not everybody should see the shadow passwords, not secure, since
# under MSDOG everbody is root and can access ports < 1024 !!!
#* : * : shadow.byname : port
#* : * : passwd.adjunct.byname : port
..
# If you have maps with YP_SECURE or YP_AUTHDES, you should create
# a rule for them above, that's much faster.
* : * : * : none

Файл /etc/yp.conf

domain ltsp server хост-NIS-сервера
#domain ltsp broadcast
ypserver хост-NIS-сервера

Инициализация NIS-сервера

После настройки конфигурационных файлов, под root выполняем команды:
/usr/lib/yp/ypinit -m
touch /var/yp/securenets
service ypserv restart
(или /etc/init.d/ypserv restart) ) 1
cd /var/yp
make

После успешного выполнения команд появляется каталог /var/yp/ltsp

Команды cd /var/yp; make следует выполнять заново каждый раз после изменения настроек NIS, например, добавления новых пользователей. (Можно использовать для регулярного выполнения этих команд cron.)

Настройки lts.conf

   LOCAL_APPS         = Y
   NIS_DOMAIN         = ltsp
   NIS_SERVER         = 192.168.0.254

Использование локальных устройств

Экспорт локальной файловой системы терминала с помощью Samba

Установка сервера Samba на терминал позволит разделять его файлы с терминал-сервером и с другими компьютерами. В сочетании со скриптами монтирования/размонтирования, например, CD-ROM, это позволит использовать этот CD-ROM как в приложениях, работающих на терминале локально, так и на сервере. Недостатком Samba по сравнению с NFS является прежде всего отсутствие поддержки UN*X-аттрибутов файлов (но, как правило, для флоппи и CD-ROM это не имеет значения), а достоинством - возможность разделять файлы/устройства с компьютерами Window$.

Приведенные инструкции относятся к Samba 2.2 (тестировалось в Samba 2.2.7).

Установка Samba на терминал

Для работы Samba на терминале мне пришлось распаковать в каталог /opt/ltsp/i386/ файлы из следующих rpm-пакетов: samba, samba-client, samba-common, cups-libs, libreadline (из обычного дистрибутива Linux). Проще всего это делать с помощью Midnight Commander: заходим в rpm-файл как в каталог - нажимая Enter на имени файла, выделяем подкаталоги и копируем их куда надо. (В более новых версиях Midnight надо сначала "зайти" в rpm, потом уже в нем зайти в файл CONTENTS.cpio.) В пакете samba следует пропустить (не распаковывать) каталог /var.

Примечание: Вы также можете использовать для установки пакет ltsp-samba со страницы LTSP на Sourceforge. Он содержит все файлы для запуска smbd и nmbd и готовый инициализационный скрипт, а также README по настройке (на английском).

Доделка конфигурации Samba и терминала

Переименовываем каталог /opt/ltsp/i386/etc/samba в /opt/ltsp/i386/etc/samba.conf, создаем символическую ссылку:

ln -s /tmp/samba /opt/ltsp/i386/etc/samba

(Это нужно, чтобы Samba могла писать в этот каталог.)

В файл /opt/ltsp/i386/etc/passwd добавляем пользователя nobody:

nobody:x:99:99:Nobody:/:/sbin/nologin

Создаем файл /opt/ltsp/i386/etc/shadow с пользователями root, nobody. Проще всего скопировать его из каталога /etc и удалить лишние строчки.

Конфигурация Samba

Файл /etc/samba/lmhosts:

127.0.0.1 localhost
IP-терминал-сервера имя-хоста-терминал-сервера

Пример файла /etc/samba/smb.conf:

# Смотрите man smb.conf для информации.
[global]
  # Какие машины будут иметь доступ к ресурсам? Может, имеет смысл 
  # ограничить доступ только терминал-сервером и 127.0.0.?
  hosts allow = 192.168.0.,127.0.0.
  # Укажите здесь вашу рабочую группу window$
  workgroup = WORKGROUP
  # Стандартные настройки code page / charset для России
  client code page = 866
  character set = KOI8-R
  # По умолчанию используется имя хоста.
  # netbios name = ws002 
  # Вряд ли кому-то понадобится посылать сообщения WinPopup на терминал... :)
  # Впрочем, эти полезные команды все равно на терминале работать не будут.
  # message command = csh -c 'xedit %s;rm %s' &
  # message command = csh -c 'cat %s |wall;rm %s' &
  server string = Terminal Samba Server
  security = SHARE
  encrypt passwords = Yes
  obey pam restrictions = Yes
  pam password change = Yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*updated*successfully*
  unix password sync = Yes
  log file = /var/log/samba/%m.log
  max log size = 0
  socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  dns proxy = No
  printing = lprng

# Экспортируем все смонтированные в /tmp/mnt файловые системы 
# под сетевым именем drives, для чтения/записи,
# всем пользователям (просто, но  иногда небезопасно.) 
# Впрочем, в большинстве офисных сетей все ресурсы, как правило, 
# открыты для всех, особенно флоппи и CD-ROM.
# Примечание: для каждого ресурса можно указать пользователей, 
# адреса клиентов (hosts allow, hosts deny).
[drives]
  path = /tmp/mnt
  guest ok = yes	
  read only = No
  
#[CD-ROM]
#  path = /tmp/mnt/cdrom
#  guest ok = yes	
#  read only = No
  
# Экспортируем каталог /tmp только для чтения (полезно для отладки)  
# Каталог /tmp/mnt при этом тоже будет экспортирован.
[tmp]
  path = /tmp
  guest ok = yes	
  read only = Yes

Создание загрузочного скрипта

Создаем файл /opt/ltsp/i386/etc/rc.d/term-samba:

#!/bin/bash

echo "Starting: Samba"

#killall smbd
#killall nmbd

# создаем каталоги для логов и конфигурации.
# Может, имеет смысл не создавать каталоги для логов в /tmp, а привязать
# их с помощью символических ссылок к файловой системе сервера,
# открытой для записи через NFS, но обычно можно обойтись и так :)
mkdir -p /var/cache/samba /var/log/samba /var/spool/samba /tmp/samba

ln -s /etc/samba.conf/* /tmp/samba

# Запуск сервисов
# Можно было использовать: /etc/rc.d/init.d/smb start
smbd -D
nmbd -D  

Конфигурирование терминалов

В файле /opt/ltsp/i386/etc/lts.conf указываем необходимость исполнения скрипта запуска Samba:

[ws002]
   ...
   # Станция ws002 использует Samba для экспорта локальных файловых систем
   RCFILE_01 = term-samba

Инициализация локальных устройств

По умолчанию, LTSP не загружает модулей ядра для локальных дисковых устройств - это сильно экономит на времени загрузки терминала и на использовании его оперативной памяти. Для инициализации устройств можно использовать скрипты, входящие в пакеты ltsp-floppy, ltsp-rmedia, но можно и написать свой, например:

#!/bin/bash
# Загружает модули ядра для поддержки дисковых устройств (флоппи, 
# жесткие диски и CD-ROM IDE). При этом устройства инициализируются 
# и появляются каталоге /dev.
# Можно совместить загрузку некоторых модулей в один вызов modprobe, или
# закомментировать ненужные модули.
echo "Loading kernel modules for local disk devices"
  #  blkdev_swap - своп на локальном диске. 
modprobe -a blkdev_swap 
modprobe -a floppy* 
modprobe -a ide-probe-mod* 
modprobe -a ide-mod* 
modprobe -a ide-disk* 
modprobe -a ide-cd* 
  # ide-scsi нужен для CD-RW приводов.
modprobe -a ide-scsi* 
modprobe -a cdrom*
  # nbd - Network Block Device. Если вы используете для доступа к локальному
  # устройству только Samba или NFS, nbd можно закомментировать.
modprobe -a nbd* 
modprobe -a binfmt*
modprobe -a fat* 
modprobe -a msdos* 
modprobe -a vfat*
modprobe -a isofs* 
modprobe -a nls_*
modprobe -a autofs* 

Вы можете назвать этот скрипт /opt/ltsp/i386/etc/rc.d/alldevices, и обеспечить его вызов для рабочей станции помещением в раздел этой станции в файле lts.conf:

   RCFILE_xx = alldevices

- где xx - порядковый номер скрипта инициализации.

Примечание: в стандартное ядро LTSP 3 включены только базовые драйверы устройств по принципу "лишь бы работало". Поэтому на поддержку UDMA и прочих вкусностей можно не рассчитывать.

Монтирование устройств

Если конфигурация локальных устройств на станциях хоть немного отличается, тут не избежать написания различных файлов конфигурации для каждой станции. Пакет rmedia, однако, использует параметры в файле lts.conf, но это не обеспечивает полной гибкости (можно смонтировать, например, один флоппи и один CD-ROM). Специфический для станции fstab может дать куда больше гибкости: можно будет монтировать любой набор устройств, в том числе, несколько устройств CD-ROM, жесткие диски со сложной системой разделов.

Создадим каталог /opt/ltsp/i386/etc/ws (ws - от слова workstation). В нем для каждой станции создадим по каталогу с именем хоста станции, например: ws001, ws002, ws003. (Если у некоторых станций в точности одинаковая конфигурация, для экономии можно использовать символические ссылки.) В каждый каталог создадим по исполняемому файлу с именем rc. Это будет индивидуальный файл инициализации для соответствующей станции. Для запуска этого файла создадим /opt/ltsp/i386/etc/rc.d/rc.ws:

#!/bin/bash
/etc/ws/$HOST/rc

Теперь, чтобы индивидуальный инициализационный файл терминала выполнялся при запуске терминала, в файле lts.conf пишем:

   RCFILE_xx = rc.ws

- где xx - порядковый номер скрипта инициализации.

Скрипт инициализации устройств стоит добавить до скрипта индивидуальной настройки, либо вызвать из него:

   RCFILE_01 = alldevices
   RCFILE_02 = rc.ws   
   RCFILE_03 = term-samba

Теперь рассмотрим, каким может быть собственно скрипт rc.

#!/bin.bash

# Инициализацию устройств можно вызвать здесь, а не строчкой
# RCFILE_xx = alldevices из lts.conf!
#/etc/rc.d/alldevices

# Это файл /opt/ltsp/i386/etc/ws/ws003/rc .
# На станции ws003 установлены некоторые локальные устройства, 
# описанные в файле /opt/ltsp/i386/etc/ws/ws003/fstab.
# /etc/fstab - это ссылка на /tmp/fstab ...

cp /etc/ws/ws003/fstab /tmp/fstab

# создадим точки монтирования:

mkdir -p /tmp/mnt/floppy /tmp/mnt/cdrom /tmp/mnt/hdd

# теперь смонтируем устройства

mount -a

# Загрузку Samba можно вызвать здесь, а не строчкой
# RCFILE_xx = term-samba из lts.conf!
#/etc/rc.d/term-samba

Пример файла fstab для терминала (в нашем примере, /opt/ltsp/i386/etc/ws/ws003/fstab):

# fstab для станции ws003
# Обратите внимание: не /mnt/, а /tmp/mnt/ ! иначе могут
# возникнуть проблемы с некоторыми программами монтирования/демонтирования.
/dev/floppy /tmp/mnt/floppy auto user,noauto,owner,kudzu,iocharset=koi8-r,codepage=866 0 0
/dev/cdrom /tmp/mnt/cdrom  iso9660 user,noauto,owner,kudzu,ro,iocharset=koi8-r,codepage=866 0 0
/dev/hda1 /tmp/mnt/hdd vfat quiet,umask=000,showexec=no,iocharset=koi8-r,codepage=866 0 0

Примечание: помните, что устройства, смонтированные для чтения/записи, особенно разделы жестких дисков, надо обязательно демонтировать перед выключением/перезагрузкой терминала. Для этого может использоваться локальный скрипт демонтирования (для этого может быть нужно установить на терминалы sudo, либо разрешить демонтирование обычным пользователям), или usermount (если все локальные диски разрешены для монтирования и демонтирования локальным пользователем).

Usermount для локальных устройств

Не забудьте настроить запуск локальных приложений!

Для управления локальными устройствами пользователями я выбрал простую и удобную GTK-программу usermount. Для обеспечения ее локального запуска я дополнительно установил на терминал следующие RPM-пакеты: usermode-gtk, libglade, gtk+, gtk2, libxml2, atk, pango, libjpeg, libjpeg6a, glib, glib2, glibc. Кроме того, мне пришлось перенести вручную с сервера файлы: /usr/lib/libgobject*, /usr/lib/libgmodule*, /lib/libc*, /lib/ld-linux*, /etc/pango/*. У меня это заняло около получаса, вместе с определением зависимостей библиотек и поиском библиотек в пакетах. Некоторые библиотеки в пакетах так и не нашлись, поэтому пришлось просто скопировать их с сервера. Однако, пользуясь приведенным списком, вы наверняка сможете запустить usermount в течение пяти минут. Будьте осторожны при установке библиотек: GLIBC часто оптимизирована под конкретный процессор с использованием специфических инструкций (MMX, 3D Now!, SSE). На терминал желательно устанавливать версию для i386; в любом случае не стоит ставить GLIBC для Атлона или Pentium IV, если среди рабочих станиций есть, к примеру, Pentium :)

Было бы здорово, если бы кто-нибудь написал скрипт для трансфера всех библиотек с сервера на терминалы!

Пример скрипта (на сервере), который следует запускать с терминала для вызова локального usermount:

#!/bin/sh
# определим хост терминала
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
# тестовый вывод (для отладки)
echo "Host: $HOST Display: $DISPLAY"
# запускаем программу с помощью Remote Shell
rsh ${HOST} /usr/bin/usermount --display ${DISPLAY}

Автоматическое монтирование локальных устройств к серверу с помощью Samba

Далее подразумевается, что вы установили на свои рабочие станции Samba, и скрипты инициализации и монтирования устройств в локальную систему терминала, и Samba на всех терминалах открывает гостевой доступ к каталогу /tmp/mnt/ под сетевым именем drives.

Поскольку smbmount гораздо проще использовать под root, чем инсталлировать как suid root, а скрипт монтирования должен иметь возможность отключения ресурсов, "забытых" другими пользователями, я использовал для запуска скрипта sudo. См. man sudo для деталей.

Пример скрипта автоматического монтирования дисков терминала к серверу с помощью smbmount:

#!/bin/bash
# Этот скрипт должен исполняться с правами root (используйте sudo)
# Параметры:
# automountdrives [umount]
# Укажите параметр umount, чтобы отмонтировать терминал.

RUNHOST=`echo $DISPLAY | awk -F: '{ print $1 }'`

# Следующая строка выделяет из $DISPLAY первую часть до точки:
# ws001.ltsp.ru -> ws001
# Естественно, для нормальной работы скрипта необходимо, чтобы
# в переменной $DISPLAY была полная спецификация хоста:
# терминал.терминал-сервер:0.0
RUNHOSTWS=`echo $DISPLAY | awk -F. '{ print $1 }'`

# Будем монтировать станции в /mnt/ltsp/ws001, /mnt/ltsp/ws002....
MOUNTPOINT=/mnt/ltsp/$RUNHOSTWS

# Другие способы задания точек монтирования
#MOUNTPOINT=$HOME/mnt/terminal
#MOUNTPOINT=$HOME/mnt/$RUNHOSTWS

# тестовый вывод (можно закомментировать)
echo "DISPLAY:    [$DISPLAY]"
echo "RUNHOST:    [$RUNHOST]" 
echo "RUNHOSTWS:  [$RUNHOSTWS]"
echo "MOUNTPOINT: [$MOUNTPOINT]"

if [ "$RUNHOST" = "" ]; then
  echo "No need to mount/umount drives for host: $RUNHOST"
else
  #  не допускаем многократного монтирования в каталог!
  echo "Trying to unmount from $MOUNTPOINT..." 
  umount -f -l $MOUNTPOINT
  if ! [ "$1" = "umount" ]; then
    echo "Mounting //$RUNHOSTWS/drives to $MOUNTPOINT..." 
    mkdir -p $MOUNTPOINT
    mount -t smbfs -o iocharset=koi8-r,codepage=cp866,fmask=666,dmask=777,guest //$RUNHOSTWS/drives $MOUNTPOINT
  else
    echo "(asked to umount only)"    
  fi
fi

Примечание: К сожалению, баг в smbmount не позволяет использовать в опциях монтирования пареметры iocharset и codepage совместно с опциями, не поддерживаемыми непосредственно smbmount.

Далее предполагается, что этот скрипт лежит на диске под именем /opt/bin/ltspmount. В файл /etc/sudoers добавьте строчку:

ALL ALL=NOPASSWD: /opt/bin/ltspmount

Теперь, для монтирования дисков терминала достаточно на терминале выполнить команду
sudo /opt/bin/ltspmount
а для демонтирования
sudo /opt/bin/ltspmount umount

Можно обеспечить автоматическое выполнение этих команд при загрузке, например, KDE (создайте файл ~/.kde/Autostart/TerminalMount.desktop):

[Desktop Entry]
Encoding=UTF-8
Exec=sudo /opt/bin/ltspmount
Icon=folder_sound
MimeType=
Name[ru]=Auto Mount Terminal Drives

Серьезным недостатком приведенной схемы является то, что она не обеспечивает автоматичексого отмонтирования станций при их выключении, что может привести программы, обращающиеся к отмонтированным директориям, к зависанию на несколько минут. Настоятельно рекомендуется выполнять отмонтирование терминалов перед их выключением или перезагрузкой (создайте пользователям ярлыки на рабочий стол с командой sudo /opt/bin/ltspmount umount).

Примечание: отмонтировать "повисшую" и неотвечающую сетевую систему может root, указав umount параметры -f -l:
umount -f -l /mnt/ltsp/ws005

Компрессирование сетевого потока

Часть данных, передаваемых по сети между сервером и терминалом, можно сжимать. Это полезно в том случае, если пропускной способности сети не хватает. Важно, однако, понимать, что за уменьшение нагрузки на сеть приходится платить увеличением нагрузки на процессоры и сервера, и терминала.

Принцип сжатия потока заключается в том, что приложение подключается не непосредственно к X серверу, а к клиентской части X прокси (физически на той же машине, что и приложение), которая сжимает информацию и передает ее по сети серверной части X прокси (на машину, за которой сидит пользователь); серерная часть X прокси декомпрессирует поток и передает его (локально) X-серверу.

Программы, работащие как компрессирующие X прокси (передают поток информации между приложениями и X Window сервером в сжатом виде):

  1. SSH (Secure Shell) - способна не только надежно шифровать передаваемую по сети информацию, но и комрессировать ее, а также работать как X прокси (SSH-сервер становится клиенской X-прокси, а SSH-клиент - серверной). Для этого нужно при запуске ssh упомянуть в командной строке ключи -C -X. Тогда X-программы, запущенные в ssh-сесии будут выводить окна на терминал, на котором работает ssh-клиент.
    Преимущества ssh: передаваемая по сети информация шифруется; относительная простота и доступность.
    Недостатки: слабое по сравнению с другими программами сжатие (это можно компенсировать, запустив внутри ssh-сессии dxpc или lbxproxy, если шифрование обязательно нужно); большая нагрузка на процессоры; большие задержки передачи информации.
  2. LBX Proxy - стандартная часть XFree86 (в сервере, включенном в LTSP, тоже есть). То есть, серверная часть прокси встроена прямо в X-сервер. Нужно запустить программу lbxproxy (клиентскую часть прокси) на машине, на которой будут запущены X-приложения (в нашем случае, это LTSP-сервер). Самый простой способ - с LSTP-терминала пользователь запускает:
    $ lbxproxy :#
    - где # - это незанятый на сервере номер X-дисплея. В большинстве случаев, для простоты и избежания конфликтов между lbxproxy, работающими на разные терминалы, можно использовать номер рабочей станции. После этого, запуск на сервере X-приложения с DISPLAY=:# (# - тот же номер, что и при запуске lbxproxy, приведет к выводу интерфейса программы на терминал. Пример:
    $ lbxproxy :3
    В другой консоли:
    $ kword --display=:3
    Еще одна деталь: перед использованием lbxproxy нужно выполнить с терминала команду
    $ xhost +ИП-адрес-сервера
    Ссылки:
  3. DXPC (The Differential X Protocol Compressor) - похож на lbxproxy, но, в отличие от нее, не является стандартным модулем XFree. Поэтому, программу нужно запускать дважды - на терминале локально и на сервере (один и тот же исполняемый файл может работать в режиме клиента и в режиме сервера). Естественно, нужно установить программу и на сервер, и на терминал (см. раздел "Локальные приложения" в документации по LTSP). Пример скрипта, который можно запускать с терминала для "поднятия" dxpc:
    #!/bin/sh
    HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
    xhost +127.0.0.1
    echo "Running DXPC client..."
    # -d - номер дисплея
    dxpc -d 10 &
    echo "Running DXPC server..."
    rsh ${HOST} /bin/dxpc 192.168.0.254 -D 127.0.0.1:0 -d 10
    Комментарии для номера дисплея, и как запускать на данном номере дисплея приложение, смотрите выше (для lbxproxy).
    Преимуществом dxpc перед lbxproxy являются большая гибкость, возможность использовать сжатие на любом X-сервере, и главное - поддержка Xv. То есть, если программа нуждается в поддержке Xv, например, для вывода видео, то она будет работать через dxpc, хотя через ssh или lbxproxy - нет.
    Ссылки:

Установка пакетов RPM в терминал

Первый способ: распаковка файлов из RPM вручную. Для этого проще всего использовать Midnight Commander, который позволяет копировать файлы из пакета, как из обычного каталога.

Второй способ: использовать опцию RPM --root, например:
rpm -i --root=/opt/ltsp/i386 имя-пакета

Третий способ (довольно извращенный :)): установить RPM (программу управления пакетами) в терминал (например, используя первый способ), открыть каталог /opt/ltsp/i386 для записи по NFS, открыть для доступа по NFS каталог с пакетами для установки, запустить терминал с RUNLEVEL=3 и устанавливать с него пакеты, как обычно. Можно даже установить на терминал графический менеджер пакетов (например, GnoRPM). После установки всех требуемых пакетов запись по NFS в /opt/ltsp/i386 следует снова запретить.

Разные советы

Помогавшие в работе над этим документом

1 Алексей Мамонов,

Проект LTSP (Linux Terminal Server Project)
http://www.ltsp.org
Проект LTSP.RU
http://www.ltsp.ru
Rom-o-matic.net - Ethernet Boot ROM
http://www.rom-o-matic.net