Ключевые слова:ltsp, xterm, linux, diskless, tftp, gdb, (найти похожие документы)
Автор: ХимТех <chemtech@mail.ru>
Date: Mon, 7 Nov 2010 17:02:14 +0000 (UTC)
Subject: Установка, настройка и использование LTSP5 на Debian GNU/Linux 4.0
Оригинал: http://omsk.lug.ru/LTSP5
Вступление
LTSP (англ. Linux Terminal Server Project) -- пакет дополнений
для GNU/Linux, позволяющий подключить большое количество
низко-производительных тонких клиентов к Linux-серверу.
Приложения выполняются на сервере, получая входные данные от тонкого
клиента и отображая результат на его экране.
Установка Debian GNU/Linux 4.0
Устанавливаем Debian GNU/Linux 4.0. Ставим все по умолчанию.
Установка дополнительного ПО
X Window System -- оконная система, которая обеспечивает стандартные
инструменты и протоколы для построения графических интерфейсов
пользователя. Почти все современные операционные системы поддерживают
X Window System, но в основном она закрепилась в UNIX-подобных системах
в качестве стандарта "де-факто".
X Window System обеспечивает базовые функции графической среды:
отрисовку и перемещение окон на экране, взаимодействие с мышью
и клавиатурой. X Window System не определяет деталей интерфейса
пользователя -- этим занимаются менеджеры окон, которых разработано
множество. По этой причине внешний вид программ в среде X Window System
может очень сильно различаться; разные программы могут использовать
совершенно непохожие друг на друга интерфейсы.
В X Window System предусмотрена сетевая прозрачность: графические
приложения могут выполняться на другой машине в сети, а их интерфейс
при этом будет передаваться по сети и отображаться на локальной машине
пользователя. В контексте X Window System термины "клиент"
и "сервер" имеют непривычное для многих пользователей значение:
"сервер" означает локальный дисплей пользователя (дисплейный сервер),
а "клиент" -- программу, которая этот дисплей использует (она может
выполняться на удалённом компьютере).
Устанавливаем X Window System
aptitude install x-window-system
Необходимо desktop manager (gdm)
aptitude install gdm
aptitude install libwww-perl
aptitude install libx11-protocol-perl
Filesystem in Userspace (FUSE) (Файловая система в пользовательском
пространстве) -- это модуль для ядер Unix-подобных ОС, с открытым
исходным кодом и относящийся к свободному программному обеспечению.
Модуль реализован под лиценией GPL и LGPL. Он позвоялет пользователям
без привилегий создавать их собственные файловые системы
без необходимости писать какой-то код ядра. Это достигается за счёт
запуска кода файловой системы в пространстве пользователя, пока модуль
FUSE только предоставляет "мост" для актуальных интерфейсов ядра.
FUSE была официально перемещена (слита) в главное дерево кода ядра
Linux в ядре версии 2.6.14.
FUSE особенно полезна для написания виртуальных файловых систем.
В отличие от традиционных файловых систем, которые по существу
сохраняют информацию для восстанавления данных с диска, действительно
виртуальные файловые системы фактически не хранят данные
непосредственно. Они действуют как представление, трансляция (перевод)
существующей файловой системы или устройства хранения. В принципе,
любой ресурс доступный для использования FUSE может быть экспортирован
в файловую систему. Смотрите примеры для ознакомления с некоторыми
из возможных заявлений.
Устанавливаем библиотеку и утилиты FUSE
aptitude install fuse-utils libfuse2
Ltsp-server-standalone - этот пакет создает окружение LTSP сервера,
включающий DHCP сервер, для загрузки клиентов.
Устанавливаем ltsp-server-standalone
aptitude install ltsp-server-standalone
Создание образа системы для тонкого клиента
В компьютерных технологиях тонкий клиент (англ. thin client) --
это компьютер-клиент сети с клиент-серверной архитектурой, который
переносит большинство задач по обработке информации на сервер. Таким
образом, сервер необходим для нормальной работы тонкого клиента. Этим
тонкий клиент отличается от толстого клиента, который, напротив,
производит обработку информации независимо от сервера, используя
последний в основном лишь для хранения данных.
Тонкий клиент в большинстве случаев обладает минимальной аппаратной
конфигурацией, иногда -- без жесткого диска. В некоторых конфигурациях
системы тонкий клиент загружает операционную систему по сети с сервера,
используя протоколы PXE, BOOTP, DHCP, TFTP и Remote Installation
Services (RIS).
Считаем, что у вас на на системе стоит сервер сетевой установки.
ltsp-build-client - скрипт создающий окружение LTSP сервера.
Некоторые опции этого скрипта:
--mirror - эта опция указывает откуда, будут скачаны пакеты, т.е.
указывает репозитарий. В нашем случае мы сделали локальный репозитарий
и указали http://127.0.0.1/debian/i386.
--component - здесь описанно какие компоненты будут использоваться,
можно добавить в репозиторий ветку debian non-free. Мы использовали
стандартные ветки main и contrib.
--security-mirror - без этой опции скрипт ломиться в интернет к серверу
безопастности Debian, но, т.к. у нас нет безлимитного трафика, мы его
отключили (использовал параметр none). Если вы хотите использовать
обновления безопастности, то замените none на адрес http://security.debian.org/
Делаем образ системы, которую будут загружать тонкие клиенты.
ltsp-build-client --mirror http://127.0.0.1/debian/i386 --component
main contrib --security-mirror none
В конце установки вас просят добавить в /etc/exports " /opt/ltsp
*(ro,no_root_squash,async) ", но необходимо еще добавить опцию
subtree_check.
Настройка экспорта сетевой файловой системы для клиентов
Network File System (NFS) -- протокол сетевого доступа к файловым
системам, первоначально разработан Sun Microsystems в 1984 году.
Основан на протоколе вызова удалённых процедур (ONC RPC, Open Network
Computing Remote Procedure Call, RFC 1057, RFC 1831). Позволяет
подключать (монтировать) удалённые файловые системы через сеть, описан
в RFC 1094, RFC 1813, и RFC 3530
Изменяем файл /etc/exports. Этот файл находиться на сервере LTSP.
Он отвечает за экспортирование файловой системы NFS.
Некоторые опции этого файла:
/opt/ltsp/i386 *(ro,no_root_squash,async,subtree_check,soft)
Вместо * необходимо указать вашу сетку с тонкими клиентами.
ro - опция только для чтения, rw - чтение и запись.
no_root_squash - Эта опция пригодна главным образом для бездисковых
клиентов.
async - асинхронный режим передачи данных
subtree_check - активирует дополнительные проверки
soft - это режим монтирования. soft - если ваш операция с файловой
системой NFS выдало ошибку, то программа будет долго еще пытаться
выполнить свою оперцию.
Настриваем DHCP сервер
DHCP (англ. Dynamic Host Configuration Protocol -- протокол
динамической конфигурации узла) -- это сетевой протокол, позволяющий
компьютерам автоматически получать IP-адрес и другие параметры,
необходимые для работы в сети TCP/IP. Для этого компьютер обращается
к специальному серверу, называемому сервером DHCP. Сетевой
администратор может задать диапазон адресов, распределяемых среди
компьютеров. Это позволяет избежать ручной настройки компьютеров сети
и уменьшает количество ошибок. Протокол DHCP используется в большинстве
крупных сетей TCP/IP.
DHCP является расширением протокола BOOTP, использовавшегося ранее
для обеспечения бездисковых рабочих станций IP-адресами
при их загрузке. DHCP сохраняет обратную совместимость с BOOTP.
Опцию allow booting имеет смысл только если присутствует в описании
host и действует только на соответствующий хост. По умолчанию
разрешено, в противном случае хост не сможет получать свой адрес
и другие параметры.
Конфигурация DHCP находиться в /etc/dhcp3/dhcpd.conf
option domain-name-servers 192.168.0.1;
#option domain-name-servers - эта опция указывает клиенту ДНС-сервер
use-host-decl-names on; # Опция use-host-decl-names передает название хоста из настроек DHCP клиенту.
# on - передавать, off - не передавать.
default-lease-time 86400; #default-lease-time - промежуток времени в секундах, на который выделяется
# адрес клиенту, в случае если клиент самостоятельно не указал время использования адреса.
max-lease-time 604800; # max-lease-time - максимальный промежуток времени в секундах, на который выделяется адрес клиенту.
authoritative; # authoritative - не выдает адресс, который у него в конфиге не описан. not authoritative - выдает адресс.
allow booting; # allow booting - Параметр booting сообщает серверу обрабатывать ли запрос конкретного клиента.
allow bootp; # allow bootp - разрешает обрабатывать запросы bootp
subnet 192.168.0.0 netmask 255.255.255.0 { # subnet - подсеть адресов. Все опции, входящие в эту подсеть,
# будут работать только в этой подсети.
range 192.168.0.70 192.168.0.100; #range - диапазон адресов
filename "/ltsp/i386/pxelinux.0"; #filename - файл, который будет загружаться по умолчанию.
next-server 192.168.0.1; #next-server - это tftp сервер, на который напрявляется клиент после DHCP.
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255; #broadcast-address - это броадкаст этой сети
option routers 192.168.0.1; #routers - указывается шлюз.
host pc1 {
hardware ethernet 00:40:63:e0:1b:a6; #pc1 - указано название хоста
#hardware ethernet - здесь указан MAC адрес нашего клиента
fixed-address 192.168.0.71;
#fixed-address - адрес, который DHCP выдает клиенту.
}
}
Очень подробно рассказывается о настройке DHCP сервер здесь: http://www.opennet.ru/man.shtml?topic=dhcpd.confНастраиваем TFTP сервер
/etc/inetd.conf
#:BOOT: TFTP service is provided primarily for booting.
# Most sites # run this only on machines acting as "boot servers."
tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Параметр udp определяет протокол передачи данных. Вы можете выбрать
tcp или udp.
Параметр root определяет от какого пользователя запущен tftp.
Опция -s определяет, что tftp будет работать в chroot в папке
/var/lib/tftpboot
Разрешение имен
Добавляем в /etc/hosts соответствие pc1 и 192.168.0.71
192.168.0.71 pc1
Т.к. у нас не настроен ДНС-сервер, то необходимо написать в этом файле
соответствие между именем хоста и его IP.
Настройка загрузка ядра
/var/lib/tftpboot/ltsp/pxelinux.cfg/default
DEFAULT vmlinuz
KERNEL vmlinuz
APPEND initrd=initrd.img root=/dev/nfs rw nfsroot=192.168.0.1:/opt/ltsp/i386/ ip=dhcp
NFSOPTS="-o nolock,ro,wsize=2048,rsize=2048"
Параметр DEFAULT определяет название загружаемого ядра.
Параметр KERNEL ядро, которое будет загружаться на клиент.
Параметр APPEND опрделяет дополнительные опции, которые будут
предоваться ядру.
Параметр NFSOPTS опредеяет опции, которые будут передоваться
при монтировании NFS с сервера.
Конфигурируем GDM
GNOME Display Manager или GDM -- графический дисплейный менеджер
для X Window System. Эта программа регистрирует пользователей
в операционной системе, предлагая им ввести их логин и пароль.
GDM также позволяет выбирать графическую среду (сеанс) и локаль (набор
языковых и региональных настроек). Экран приветствия GDM может иметь
разный вид в зависимости от применённой к нему темы.
GDM является частью рабочей среды GNOME и распространяется свободно
на условиях GNU General Public License
/etc/gdm/gdm.conf
[xdmcp]
Enable=true #Enable - Включение XDMCP. True - включает, False - выключает.
HonorIndirect=0
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=30
MaxWaitIndirect=30
Port=177 #Port - порт, который слушает GDM
....
Настойка основного кофигурационного файла LTSP
/opt/ltsp/i386/etc/lts.conf
[Default]
XSERVER = auto # XSERVER - тип видеокарты, которая находиться
# в большинстве ваших клиентов.
SERVER = 192.168.0.1 # SERVER - IP вашего LTSP сервера
X_MOUSE_PROTOCOL = "PS/2" # X_MOUSE_PROTOCOL - протокол для общения с мышкой.
# Для включения скроллига на мышке PS/2 с колесом
# необходимо изменить протокол с PS/2 на ImPS/2.
MODULE_01 = "sb irq=10 io=0x300"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
LOCAL_APPS = Y
RUNLEVEL = 5
MODULE_02 = "usb-storage"
MODULE_03 = "sd_mod"
LOCALDEV = Y
SCREEN_07 = startx
XkbModel = pc105
XkbLayout = us,ru(winkeys)
XkbOptions = "grp:alt_shift_toggle,grp_led:scroll"
# Example of specifying X settings for a workstation #
[ws001]
LIKE = ws002
XSERVER = auto
LOCAL_APPS = N
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 48m
RUNLEVEL = 5
[ws002]
LIKE = ws004
XSERVER = XF86_SVGA
LOCAL_APPS = N
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 64m
RUNLEVEL = 3
# Example of a workstation configured to load some modules #
# [ws001]
# MODULE_01 = agpgart.o
# This is for i810 video
# MODULE_02 = uart401.o
# MODULE_03 = sb.o io=0x220 irq=5 dma=1
# MODULE_04 = opl3.o
# Example of ws001 configured for local apps #
#[ws001]
# LOCAL_APPS = Y
# LOCAL_WM = Y
# NIS_DOMAIN = ltsp
# NIS_SERVER = 192.168.0.254
# Example of a serial printer attached to /dev/ttyS1 on workstation ws001 #
# [ws001]
# PRINTER_0_DEVICE = /dev/ttyS1
# PRINTER_0_TYPE = S
# P-Parallel, S-Serial
# PRINTER_0_PORT = 9100
# tcp/ip port: defaults to 9100
# PRINTER_0_SPEED = 9600
# baud rate: defaults to 9600
# PRINTER_0_FLOWCTRL = S
# Flow control: S-Software (XON/XOFF),
# # H-Hardware (CTS/RTS)
# PRINTER_0_PARITY = N
# Parity: N-None, E-Even, O-Odd
# (defaults to 'N')
# PRINTER_0_DATABITS = 8
# Databits: 5,6,7,8 (defaults to 8)
Конфигурирование fstab
Добавляем в /opt/ltsp/i386/etc/fstab. Отсутствующие папки создаем.
none /proc proc defaults 0 0
none /var/cache/man tmpfs defaults 0 0
none /var/lib/xkb tmpfs defaults 0 0
none /var/lock tmpfs defaults 0 0
none /var/run tmpfs defaults 0 0
none /var/log tmpfs defaults 0 0
none /var/spool tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0
none /tmp tmpfs defaults 0 0
none /var/lib/discover tmpfs defaults 0 0
none /etc/hotplug/run tmpfs defaults 0 0
none /var/lib/nfs tmpfs defaults 0 0
none /etc/network/run tmpfs defaults 0 0
Автомонтирование флешек
Чтобы автоматом монтировались флешки, необходимо сделать следущее.
Заходим в /opt/ltsp/i386/ и устанавливаем там ltspfsd, берем
его отсюда: http://pkg-ltsp.alioth.debian.org/debian/pool/main/l/ltspfs/
chroot /opt/ltsp/i386/
dpkg -i ltspfsd_0.4.3+debian2_i386.deb
Устанавливаем на сервере ltspfs http://pkg-ltsp.alioth.debian.org/debian/pool/main/l/ltspfs/
dpkg -i ltspfs_0.4.3+debian2_i386.deb
В конфиге /opt/ltsp/i386/etc/lts.conf необходимо изменить и дописать
следующие строки.
LOCALDEV = True
SCREEN_07 = ldm
Но минус данного решения в том, что весь трафик между клиентом
и сервером шифруется, в следствии чего, графика подтормаживает.
Из плюсов данного решения можно отметить то, что все данные между
клиентом и сервером недоступны для перехвата.
Содержимое доступно в соответствии с GNU Free Documentation License.