Настройка ltsp debian 9

Обновлено: 06.07.2024

В статье описывается создание сервера терминалов LTSP на базе Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с загрузочным образом для бездисковых станций с пробросом usb устройств.

Стенд состоит из двух виртуальных машин:

  1. ВМ с Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с обновлением БЮЛЛЕТЕНЬ № 20181229SE16;
  2. ВМ без ОС - тонкий клиент.

На первой машине используются 2 сетевых интерфейса:

  • eth0 смотрит в интернет;
  • eth1 - во внутреннюю сеть, в которой находятся тонкие клиенты.

Обновление системы

Включение удаленного доступа

Разрешим удаленный вход в систему:

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

Сеть настраиваем любым предпочтительным способом. Например, с помощью Network Manager. Первый интерфейс eth0 смотрит в интернет, настройки получает автоматически. Второму, eth1, прописываем статический адрес 192.168.56.100 с маской 24.

eth0 - DHCP
eth1 - static
ip: 192.168.56.100
mask: 255.255.255.0

При настройке сетевых подключений следует помнить, что имя домена, задаваемое в настройках службы DHCP и настройках подключения должно быть одно и тоже:

В настройках интерфейса eth1 в network-manager поле "DNS servers" должно оставаться либо пустым, либо его значение должно совпадать с вышеупомянутым именем домена. Если сетевые подключения настраиваются посредством /etc/network/interfaces, то там также либо указать такое же имя домена, либо не указывать никакое. При несовпадении имён подключение по XDMCP НЕВОЗМОЖНО.

Установка ПО

Для сервера терминалов необходимы следующие пакеты:

    - DHCP сервер.;
  • tftpd-hpa - сервер tftpd;
  • ltsp-server - скрипты для создания сервера терминалов;
  • xrdp - реализация протокола доступа к удалённому рабочему столу;

Установить эти пакеты можно командой:

sudo apt install isc-dhcp-server ltsp-server tftpd-hpa xrdp

Ошибки, выводимые при установке dhcp сервера, игнорируем: настройка dhcp будет осуществлена на следующем шаге.

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

В файле /etc/default/isc-dhcp-server в строке INTERFACECv4="" указать интерфейс: eth1

Создадим конфигурацию для DHCP сервера:

sudo ltsp-config --overwrite isc-dhcp-server

sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.bak

sudo cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf

Заменим адреса в dhcpd.conf на нужные:

sudo systemctl restart isc-dhcp-server

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

В файле /etc/default/tftpd-hpa изменим путь к корню тфтп сервера:

Настройка LTSP

Скопируем конфигурацию Debian:

sudo cp -r /usr/share/ltsp/plugins/ltsp-build-client/Debian /usr/share/ltsp/plugins/ltsp-build-client/AstraLinuxSE

Директория должна называться именно AstraLinuxSE

Монтирование установочного диска

Для создания образа необходимо примонтировать установочный диск (или образ диска) Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

Например мы имеем установочный образ smolensk-1.6-20.06.2018_15.56.iso

sudo mount -o loop smolensk-1.6-20.06.2018_15.56.iso /media/cdrom

Сборка образа LTSP

Соберем образ командой:

sudo ltsp-build-client --dist smolensk --purge-chroot --security-mirror none --updates-mirror none --mirror " file:///media/cdrom " --components "contrib, main, non-free" --kernel-packages linux-image-generic --early-packages vim

--dist smolensk - собрать образ с системой Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6);

--purge-chroot - очищать директорию с файлами образа ;

--security-mirror none и --updates-mirror none - говорим сборщику не использовать зеркала с обновлениями (если нужно, обновим систему после сборки образа);

--mirror " f ile:///media/cdrom " - указываем репозиторий, откуда ставить систему. В нашем случае это директория с примонтированным установочным диском;

--components "contrib, main, non-free" - используем все компоненты;

--kernel-packages linux-image-generic - установить ядро generic по-умолчанию;

--early-packages vim - установить редактор vim на стадии сборки;

Образ системы появится в /opt/ltsp/images;

Распакованная система в /opt/ltsp/amd64 - она то нам и нужна. Займемся ее настройкой.

Настройка образа системы

Для работы с образом будущей системы будем использовать команду ltsp-chroot.

Зададим пароль root:

sudo ltsp-chroot passwd root

sudo mkdir /opt/ltsp/amd64/opt/
sudo mount -o loop smolensk-1.6-20.06.2018_15.56.iso / opt/ltsp/amd64/opt/main
sudo mount -o loop devel- smolensk-1.6-20.06.2018_15.56.iso /opt/ltsp/amd64/opt/devel

в / opt/ltsp/amd64/etc/apt/sources.list пропишем путь к репам:

sudo ltsp-chroot apt install ltsp-client-core parsec linux-astra-modules-generic xorg-all-main fly-dm freerdp2-x11 zenity

Блог про Linux, Bash и другие информационные технологии

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

  • Использование старого оборудования, которое само по себе уже не может использоваться как полноценные рабочие станции, например, не хватает оперативной памяти для запуска всех необходимых для работы программ, но выбрасывать его жалко, потому что оно работает.
  • Экономия на закупках оборудования. Впрочем, этот пункт может пересекаться с предыдущим. Если оборудование уже есть, зачем покупать новое, если можно использовать старое?
  • Централизация хранения данных. Для обеспечения надежности можно использовать одно серьезное хранилище, обеспечивающее скорость и надежность за счет массива дисков, и исключить из работы диски пользовательских рабочих станций. Это также упростит создание резервных копий.
  • Простота установки. Система с уже установленными и сконфигурированными программами загружается на любой машине, и пользователь может войти под своим пользователем и продолжить работу над тем же самым, над чем закончил работать вчера.
  • Простота обновления. Обновляется только одна система, и программное обеспечение обновляется сразу у всех пользователей.

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

Что нам понадобится?

  • Сервер для бездисковых станций. Это должна быть достаточно мощная машина с быстрым дисковым массивом или подключенным внешним хранилищем.
  • Сетевые коммуникации. Например, свитч и подключенные к нему провода. Желательно иметь скорость работы сети не менее 100 Мбит, а лучше 1 Гбит. Сетевые карты обязательно должны поддерживать загрузку по PXE. Подавляющее большинство сетевых карт, которые используются сейчас или использовались несколько лет назад, такую возможность имеют, поэтому это скорее всего проблемы не составит
  • Настройка необходимых сервисов. Какие сервисы нам потребуются, мы рассмотрим по мере необходимости.
  • Дистрибутив операционной системы на базе ядра Linux, на основе которой мы и будем создавать свою систему.

Подготовка сервера

В первую очередь надо подготовить аппаратную часть. Что надо учесть? Нам нужен будет достаточно большой объем оперативной памяти. Ее понадобится заметно меньше, чем для отдельных рабочих станций в таком же количестве, в котором у нас будут существовать бездисковые станции. Почему? Потому что у нас во-первых, будут совместно используемые библиотеки, во-вторых, память будет распределяться между приложениями, запущенными со всех станций, часть из которых будет скорее всего работать не на полной мощности.

Следующее, что необходимо,- это две сетевые карты. На одной сетевой карте будут подключаться рабочие станции, а второй будет выходить в сеть предприятия, либо в интернет, в зависимости от размеров сети вашего предприятия. Я уже оговаривал. что мы будем рассматривать пример для небольшого предприятия, поэтому пусть будет все-таки интернет.

Дисковая подсистема. Нам потребуется либо быстрый дисковый массив, либо внешнее хранилище, которое мы сможем использовать в качестве хранилища. Чем больше будет работать пользователей, тем более критичной будет скорость работы дисковой подсистемы. Про массивы, их конфигурацию, контроллеры и прочее можно рассказывать очень долго, информации по этим вопросам хватает. Но мы сейчас не об этом.

Сколько оперативной памяти надо терминальному серверу? Создатели LTSP приводят следующую формулу:

То есть, для 20 пользователей по их подсчетам понадобится

Откуда такие цифры, почему так мало? Дело в том, что все клиенты будут использовать библиотеки общего доступа и другие компоненты системы, которые для них будут общими. Практически все современные операционные системы работают подобным образом.

Итак, аппаратная часть подготовлена. Теперь нам надо поставить операционную систему на сервер. Выбирайте ту, которая вам больше подходит, тут сложно сказать однозначно, какая вас больше устроит. Самое главное, чтобы все устройства подключились после установки системы. Один из сетевых интерфейсов мы делаем основным, это должен быть тот интерфейс, который будет выходить в Интернет, либо в сеть предприятия.

Пусть у нас это будет eth0 с адресом 192.168.0.50, это нам не особо важно, пусть на этом интерфейсе будет настроено получение адреса по DHCP, нам более важен второй сетевой интерфейс.

На втором интерфейсе мы будем создавать отдельную подсеть 192.168.2.0/255.255.255.0, в которой будут находиться бездисковые станции. Его надо сконфигурировать статически, поскольку именно на нем мы будем осуществлять загрузку бездисковых терминалов. Напишем его конфигурацию в /etc/network/interfaces

Теперь можно его поднять командой

И вот тут наступает очередь очередь LTSP.

Какая конфигурация должна быть у терминалов? На официальном сайте LTSP указываются следующие рекомендуемые требования:

  • Процессор: 533 МГц и быстрее. Если процессор медленнее, от 233 МГц, то заставить работать его все-таки можно, но уровень безопасности при работе будет ниже
  • Оперативная память: 64 мегабайта для того, чтобы просто стартовать, но рекомендуется минимум 128 Мб. Естественно, можно и больше, 256 или 512.
  • Видеокарта: PCI-видеокарта с 16 Мб памяти. Встроенная тоже подойдет.
  • Сетевая карта: Желательно иметь поддержку PXE, но при ее отсутствии есть другие варианты, такие как Etherboot, gPXE и Yaboot (последний для Macintosh PowerPC, поэтому, возможно, не сильно актуально). Большинство более или менее современных сетевых карт имеют поддержку PXE.

Будет установлено достаточно большое количество пакетов, они все нужны для работы.

По окончании надо настроить DHCP, чтобы рабочие станции могли получать адреса, по умолчанию DHCP-сервер после настройки не сконфигурирован

Отредактируем файл /etc/ltsp/dhcpd.conf

После этого меняем в файле /etc/default/isc-dhcp-server строчку

И выполняем следующие команды:

Теперь нам надо создать окружение для тонких клиентов

После этого придется немного подождать, пока скачается все необходимое и будет собрано окружение для тонких клиентов.

После создания окружения необходимо добавить в файл /etc/exports строчку

И перезагруз ить NFS-сервер командой

Проверяем терминалы

Если вы его там не видите, перезапустите NFS-сервер

Всё, теперь можно стартовать бездисковую станцию. И для того, чтобы убедиться, что все сервисы корректно работают после загрузки системы, обязательно надо перезагрузить сервер, а после загрузки проверить, загружаются ли бездисковые станции.

Установка программного обеспечения для клиентских терминалов сводится к установке этого программного обеспечения на терминальный сервер. Точно так же происходит обновление программного обеспечения.

Почему бездисковые станции работают так быстро? Потому что программы работают на сервере, а на самих терминалах происходит только взаимодействие с пользователем. Соответственно, быстродействие зависит в большей степени от сервера, а не от того, что у нас используется на тонких клиентах.

Фактически, на терминалах используется двойная загрузка. Одно окружение используется с сетевой файловой системой, которая монтируется локально, потом происходит загрузка терминала и переключение на окружение терминального сервера. Таким образом обеспечивается возможность выключать и перезагружать терминал.

Статья о создании сети терминалов на базе проекта LTSP.

Кратко о работе LTSP

Linux Terminal Server Project (LTSP) - проект, в результате которого энтузиасты-программисты создали пакет программного обеспечения, позволяющий использовать вычислительную мощность одной машины несколькими, путём запуска удалённых X-сессий, которые, в свою очередь, запускают приложения на сервере терминалов.

LTSP реализован в таких дистрибутивах как EduBuntu, Skolelinux, ALT-Linux "Школьный" в виде уже сконфигурированных пакетов. В данной статье речь пойдёт о запуске сервера терминалов на базе дистрибутива Debian Squeeze.

В общем, почитать о принципе работы терминального решения можно в статье Терминальные решения на базе Linux. Рассмотрим по-подробнее как работает LTSP.

Взаимодействие можно описать по шагам, с момента включения сервера и тонкого клиента.

После запуска сервера, на нём начинает работать демоны DHCPd, TFTPd и xinetd. DHCPd ждёт запросов на получение IP-адреса от "тонких клиентов" в сети. TFTPd всего-лишь передаёт файл образа мини-системы по запросу. xinetd ждёт запросы от удалённых машин на регистрацию и подключение к серверу. Включается "тонкий клиент". Его сетевая карта, поддерживающая стандарт PXE, в локальную сеть посылает запрос на получение образа мини-системы. Запрос подхватывает DHCPd совместно с TFTPd на сервере терминалов. Последний по сети отдаёт файл мини-системы "тонкому клиенту", который распаковывается в памяти клиента как "свёрнутая" корневая файловая система. Далее на тонком клиенте начинает работать сеть и с сервера скачивается полный образ системы. Затем происходит объединение файловых систем /rofs (образ системы в режиме только чтение) и /cow (файловая система с возможностью чтения\записи) с помощью Aufs и всё это монтируется в корень "/". Пользовательские файловые системы монтируются в /home посредством sshfs.

После выключения тонкого клиента, файловая система теряется. Все документы сохраняются в домашнем каталоге, благодаря сетевому монтированию.

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

Прежде чем перейти непосредственно к настройке сервера, желательно в сервер установить ещё один сетевой адаптер, чтобы их было два. Первый будет смотреть в сторону Интернет, а второй будет обслуживать локальную сеть. Таким образом легко можно разделить сети и не пропускать DHCP и прочие "внутренние" запросы в сеть Интернет. Для модели сети, предположим что адаптер, подключённый к Интернет имеет название eth0, а к локальной сети - eth1.
eth0 имеет адрес 192.168.1.1 и подключён к модему с адресом 192.168.1.2 .
eth1 имеет адрес 192.168.10.1 и подключён к коммутатору, к которому подключены и терминалы.

Сеть для терминалов должна быть построена без применения технологии Wi-Fi - должна обладать высокой производительностью и все терминалы должны подключаться как минимум 100-мегабитным Ethernet. Wi-Fi не сможет обеспечить такой производительности для коллективного подключения, да и СВЧ-излучение пагубно действует на мозг. Адаптер eth1 на сервере желательно выбрать гигабитным и включить в гигабитный порт коммутатора.



Для примера, для терминалов зарезервируем блок IP-адресов: 192.168.10.10 - 192.168.10.20 включительно. Эти адреса будут выдаваться адаптерам терминалов при включении.

Предполагается, что дистрибутив Debian установлен и сетевые адаптеры настроены. Приступим непосредственно к установке LTSP:

Шаг 1. Установка основных компонентов

Предполагается, что репозитории правильно настроены и установка пакетов с компакт-дисков или из сети Интернет работает. Обновляем списки и устанавливаем необходимое ПО:

Установится "инфраструктура" для работы сервера.

Шаг 2. Запуск демонов

Настроим NFS-сервер. Он будет отдавать полный образ системы. Создаём директорию, где он будет содержаться и собираться:

Внимание!
Каталог /opt/ltsp требует как минимум 800 Мбайт свободного пространства, поэтому размещать его нужно на соответствующем разделе.

Теперь настроим NFS-сервер - открываем на редактирование файл /etc/exports и добавляем строку:

И теперь перезагрузим NFS-сервер:

Теперь настраиваем DHCP-сервер - открываем на редактирование файл /etc/default/isc-dhcp-server , и выставляем имя (или имена) интерфейсов, которые будут обслуживаться сервером. В нашем случае это eth1:

Далее переходим в каталог /etc/dhcp и делаем бэкап файла /etc/dhcp/dhcpd.conf :

В каталоге /etc/ltsp при установке появился файл dhcpd.conf - это разработчики постарались, чтобы пользователи не гадали каким образом соединить DHCPd и TFTPd. Его нужно отредактировать под текущие сетевые параметры и каталоги и скопировать в /etc/dhcp , переписав оригинальный dhcpd.conf . Для нашего случая, файл будет таким:

Вместо доменного имени "example.com" подставьте своё. Оно дожно совпадать с доменным именем самого сервера.

Теперь этот файл копируем в /etc/dhcp и рестартуем DHCP-сервер:

На этом настройка инфраструктуры завершена. Если интересно что творится на терминалах, лог их работы и загрузки можно транслировать на сервер терминалов. Для этого в файле /opt/ltsp/i386/etc/lts.conf нужно выставить опцию SYSLOG_HOST и указать адрес сервера, на который будет пересылаться лог. В нашем случае это 192.168.10.1. Пример опции:

Теперь в конфиге самого rsyslog - /etc/rsyslog.conf , нужно раскомментировать строки, касающиеся протокола UDP. Пример:

Далее нужно рестартовать rsyslogd:

Сборка образа

В качестве зеркал (mirror и security-mirror) можно выбрать любое ближайшее зеркало пакетов Debian. Программа начнёт скачивать пакеты, в конце сформирует chroot-окружение в каталоге /opt/ltsp/i386 , а потом соберёт образ и сохранит его в каталоге /opt/ltsp/images . Если в качестве тонких клиентов применяется архитектура amd64, это следует указать параметром --arch. Например:

На этом этапе уже можно опробовать систему в работе

Настройка образа

С точки зрения функционирования системы в целом, различается область конфигурирования внутри образа (внутри chroot-окружения) и настроек запуска менеджера графических окружений на терминалах. Для первой области, необходимо "входить" внутрь системы образа через команду ltsp-chroot и выполнять необходимые действия, как будто работа происходит непосредственно в этом образе. Для второй области существует файл /opt/ltsp/i386/etc/lts.conf , где можно задать конкретные глобальные параметры для менеджера графических окружений и частично для всего образа. Пример файла:

Подробнее по опциям lts.conf можно почитать на LTSP-wiki

В образ можно поставить какое-нибудь дополнительное программное обеспечение, чтобы на этапе отладки выполнять какие-либо действия. Например, можно поставить Midnight Commander. Для начала зайдём в chroot-окружение и установим пароль root`а (по умолчанию он заблокирован):

Теперь настроим репозитории, обновим списки, установим нужную программу и выйдем из chroot-окружения по Ctrl+D или exit:

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

, а потом перезагружать все терминалы для вступления изменений в силу. Образ собирается от 2-х до 20 минут в зависимости от производительности сервера. Терминалы, работающие в этот момент на старом образе, получат уведомления на перезагрузку. А вообще, пересборку образа лучше производить при отключенных терминалах.

Настройка аппаратного "тонкого клиента" Igel 3210 LX

Краткие характеристики модели: Igel 3/4 3210LX Compact

Загрузка по сети

Система, работающая на накопителе тонкого клиента не поддерживает LTSP, поэтому от неё пришлось отказаться. Вторая проблема, с которой пришлось столкнуться - отсутствие поддержки технологии PXE сетевым адаптером клиента (в некоторых вариациях данного тонкого клиента поддержка PXE есть, просто ее нужно включить в настройках BIOS, в дух местах). Другими словами, по сети мой экземпляр не захотел грузиться.

Проблема решилась созданием загрузочного usb-диска. Потом образ можно перенести на карту Compact Flash маленького размера. Для эксперимента пока возъмём usb-флешку.

Шаг 1. Скачиваем исходники для сборки загрузочного диска

Итак, на свободной Linux-машине, устанавливаем систему работы с исходными кодами git и ещё несколько пакетов:

Далее переходим\создаём какой-нибудь каталог и перекачиваем исходные коды с репозитория проекта:

Шаг 2. Сборка образа и запись на usb-накопитель

В каталоге etherboot будет создан подкаталог gpxe . Нужно перейти в каталог gpxe/src и выполнить команду make:

Если компиляция прошла успешно, в каталоге bin будут версии файлов для того или иного накопителя:

Будьте внимательны с выбором устройства!

Теперь осталось только вставить накопитель в сободный порт и в настройках BIOS выставить загрузку с USB.

Настройки видеосистемы

В модели Igel 3210 LX применён видеоадаптер VIA. В Linux не работает аппаратное ускорение, но базовые функции доступны и работают без проблем. Автору так и не удалось нормально запустить вывод изображения нужного разрешения и частоты кадров на порт DVI, зато выход VGA работает исправно.

Очень кратко, процесс настройки выглядит так:

Разблокировать пароль пользователя root в chroot-окружении, из которого создаётся полный образ системы.

Подробнее - ниже.
1. Разблокировка пользователя root была описана выше, но повторюсь для понимания: для входа в chroot-окружение применяем команду ltsp-chroot , после чего стандартными методами меняем пароль:

Выйти из chroot-окружения можно по комбинации Ctrl + d или по команде exit.

2. Теперь пересобираем образ:

3. Запускаем тонкого клиента. Если всё удачно, то появится меню менеджера графических окружений с полями для ввода логина\пароля. Переходим в соседнюю консоль через Ctrl + Alt + F1 . Регистрируемся в системе под пользователем root и паролем, который мы ему изменили. Выполняем команду:

В текущем каталоге появится файл xorg.conf.new . Копируем его на сервер:

Теперь переходим на сервер, редактируем новый конфиг и вписываем рабочие параметры монитора, которые можно подсмотреть в инструкции по монитору. Если этого не сделать, то часть режимов не будет доступна тонкому клиенту. В моём случае, файл получился такой:

4. Копируем этот файл в chroot-окружение:

5. Теперь выставляем рабочее разрешение для менеджера графических окружений, путём редактирования файла /opt/ltsp/i386/etc/lts.conf . В него нужно добавить опцию X_MODE_0=1024×768 в секцию default.

6. Пересобираем образ системы:

, после чего перезагружаем терминалы и пробуем работать. На этом настройка видеоподсистемы завершена.

Настройка аудиоподсистемы

Есть проблема с регулировкой громкости звука на терминале. Когда пользователь работает на терминале, в окружении GNOME, средствами GNOME, производится регулировка на сервере, а нужно производить регулировку на самом терминале локально.

Пока проблема решается регуляторами громкости в самих программах. Можно в соседнем терминале запускать alsamixer, но это не всегда удобно. Автор работает над проблемой.

Настройка "тонкого клиента" на базе бездисковой PC-машины

Конфигурация пока не опробована.

Разрешение проблем

Не работает монтирование накопителей

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

Опция LOCALDEV_DENY_INTERNAL_DISKS справедлива только для Debian Squeeze. О ней есть упоминание в /usr/share/doc/ltspfd/NEWS.Debian.gz:

Если опция не была выставлена - выставляем и пересобираем образ командой ltsp-update-image -i , после чего можно попробовать включить терминал, войти в систему и подключить носитель.

Далее можно посмотреть советы по устранению данной неисправности у сообщества Ubuntu:

Назначение и возможности LTSP

Выбор способа загрузки по сети

Установка сервера LTSP

Все, возможно, не понадобится, установим пока только необходимое:

создаваемая структура каталогов

В этом случае будет установлен и DHCP сервер, если в сети уже имеется такой сервис, используй ltsp-server вместо ltsp-server-standalone. Причем, учитывая “мягкую” систему зависимостей в пакетах обрати внимание на поля “Предлагаемые пакеты” и “Рекомендуемые пакеты” в выводе apt-get. Кроме того, в Kubuntu предлагается пакет student-control-panel. С помощью этого аплета можно контролировать подключения клиентов к серверу.
создаваемая структура каталогов

В Kubuntu LTSP работает практически сразу после установки, требуется всего несколько движений, чтобы довести ее вручную, используя в том числе и скрипты любезно предоставленные разработчиками.

Для ленивых можно посоветовать еще и пакет ltsp-utils содержащий две стандартные утилиты. Первая, ltspadmin предназначена для установки и обновления системы LTSP, вторая ltspcfg позволяет произвести первичные настройки.

утилита ltspadmin

Далее создаем рабочее окружение клиентов. В классическом варианте необходимо использовать утилиту ltspadmin, в Ubuntu для этих целей применяется утилита ltsp-build-client, которая использует репозитарий Ubuntu, работая в chroot окружении. Утилита имеет множество параметров, но в самом простом случае достаточно ввести:

утилита ltspcfg

После чего утилита создаст нужные каталоги, соединится с репозитарием, откуда будут получены все необходимые пакеты, некоторые системные настройки также перекочуют в созданное chroot окружение. По окончании установки скачанных пакетов, будут запущены еще два скрипта ltsp-update-kernels и ltsp-update-sshkeys (при необходимости в дальнейшем это можно сделать и вручную).
утилита ltspcfg

Первый скопирует системное ядро и обеспечит в дальнейшем его загрузку клиентами, создав необходимые файлы, второй создаст SSH ключи необходимые для обеспечения защищенной работы и аутендификации клиентов на сервере. Копии ключей будут помещены в файл /opt/ltsp/i386/etc/ssh/ssh_known_hosts, в таком виде:

Вместо имени может стоять IP-адрес, рекомендуется использовать оба параметра сразу, указав их через запятую.

Такой тип аутендификации используется в Ubuntu, в классическом случае пользователи вводят пароль на сервере XDMCP (Display Manager Control Protocol). Также отличием в работе является то, что при регистрации в Ubuntu используется специально разработанный для этих целей Python скрипт LDM, который адаптирован для работы через ssh. В классическом варианте пользователя встретит KDM, GDM или XDM. И наконец последним пунктом работы скрипта ltsp-build-client будет создание файла /etc/exports, в таком виде:

Слева указан каталог, который экспортирует сервер. Флаги ro или rw указывают на доступ только для чтения и для записи и чтения соответственно. А no_root_squash заменяет пользователя root более безобидным nobody. Параметры ro и no_root_squash, используются в файле по умолчанию и поэтому их можно смело опустить, хотя так нагляднее. После чего последует перезапуск сервера NFS командой “invoke-rc.d nfs-kernel-server reload”. Установку можно считать законченной теперь займемся доводкой и пройдемся по конфигурационным файлам, чтобы если что-то пойдет не так, быстро найти причину.

Настройка сервисов NFS и DHCP

А в файл /opt/ltsp/i386/etc/fstab:

Далее идут индивидуальные настройки для каждого компьютера клиента. Здесь можно переопределить настройки сервера индивидуально. В строке hardware Ethernet 00-02-44-07-FC-C4 указывается аппаратный МАС-адрес сетевой карты, а в строке fixed-address 192.168.0.110 за ним статически закрепляется IP-адрес. Теперь при запросе клиента с указанным МАС-адресом, ему всегда будет выдаваться этот IP-адрес. Остальным же он будет назначаться на общих правилах, из таблицы свободных адресов. Строка option root-path указывает на раздел, который будет смонтирован в качестве корневого с помощью службы NFS. Если в сети используется как обычные системы, так и без дисковые клиенты, то его можно следует использовать только для без дисковых станций переместив их в индивидуальные секции.

Настройка TFTP

Во время установки в список зависимостей попадут и пакеты tftpd-hpa и netkit-inetd, а в файл демона inetd /etc/inetd.conf, будет занесена строка для запуска tftp:

Если уже используется xinetd, то следует удалить netkit-inetd, и создать файл /etc/xinet.d/tftp:

И не забудь убрать в /etc/xinetd.conf строку only_from = localhost. На этом настройки этих серверов можно считать законченными. Желательно проверить их работу перед применением, запускаем “sudo /etc/init.d/xinetd start” и даем следующие команды:

Имя файла указано так потому, что корневой каталог для этого сервиса определен в файле /etc/xinet.d/tftp как server_args = -s /var/lib/tftpboot, т.е. этот каталог делается корневым (chroot), и поэтому если указать полный путь, то сервер просто не найдет необходимый файл.
Осталось убедиться, что portmap не ограничен loopback интерфейсом, строка -i 127.0.0.1 в /etc/default/portmap закомментирована. И в целях безопасности в /etc/hosts.allow ограничиваем доступ к portmap, rpc.mountd, rpc.statd и in.tftpd только с нашей сети:

Перезапускаем все используемые сервера:

Настройки параметров работы клиентов производятся в файле /opt/ltsp/i386/etc/lts.conf. Этот файл состоит из общих установок и разделов определяющих индивидуальные настройки для каждого клиента. В них при необходимости можно переопределить те или иные глобальные установки. Благодаря такой схеме появляется возможность более гибкой адаптации к аппаратной конфигурации терминалов. Этот файл можно редактировать как вручную, так и используя скрипт /usr/lib/ltsp/ltsp_config.
Вот и все. Самое интересное, что это действительно работает. На клиентском компьютере спокойно загружается KDE с OpenOffice и работает с вполне терпимой скоростью, после перехода на оконный менеджер полегче вроде IceWM система вообще летает. Наиболее очевидное применение данной технологии это наши учебные заведения со старыми компьютерными классами, где добавление одного мощного компьютера позволит работать с современным ПО.

Готовые рецепты

Читайте также: