Информационные технологии

Linux terminal server project

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

Зачем использовать терминалы?

Основная цель использования терминалов – снижение TCO (total cost of ownership, совокупная стоимость владения).

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

На программном уровне готовых решений предостаточно. На базе операционной системы Windows 2000/2003 Server – это WTWare(по протоколу RDP) и Citrix MetaFrame от Citrix Inc. (по протоколу ICA) и на базе операционной системы LINUX проект LTSP (протокол X11).

Но решения WTWare и Citrix коммерческие: стоимость 30 лицензий MicroSoft составляет примерно 1200 $, при этом стоимость лицензирования Citrix Metframe XP составляет 14 500 $ за 50 пользовательских лицензий, причем приобретение лицензий не отменяет необходимость приобретения лицензий Microsoft Windows.

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

Лицензия GPL, кроме прочего, делает весь исходный код LTSP легально доступным для анализа и модификации. Без какой-либо оплаты за это. Такой подход позволяет без дополнительных соглашений адаптировать код под специфические нужды, если такие возникнут.

Технология загрузки бездисковой станции по сети

На практике в настоящее время используют два типа прошивок для сетевых карт: PXE-совместимые и прошивки opensource проекта Etherboot. Прошивки этих двух типов предъявляют разные требования к оформлению загрузочного образа ОС.

Preboot eXecution Environment – спецификация Intel. Такие и только такие прошивки используются производителями при изготовлении сетевых карт и BIOS материнских плат с интегрированными сетевыми картами.

Etherboot – оpensource проект. Прошивка Etherboot может быть записана в микросхему BootROM или flash-память сетевой карты и др.

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

Вариант загрузки по Etherboot с использованием NFSroot

После включения бездисковой станции BIOS запускает записанную в BootROM сетевой карты микропрограмму Etherboot. Она отправляет широковещательный запрос в сеть к DHCP-серверам. В ответ доступный DHCP-сервер высылает набор параметров для конкретной станции. Станция в данном случае определяется по MAC-адресу сетевой карты. Среди этих параметров есть как «стандартные» параметры сети (IP-адрес, маска подсети, шлюз и т.д.), так и параметры, которые использует Etherboot. Самыми нужными для сетевой загрузки являются параметры «nextserver» и «filename». Первый параметр указывает абсолютное имя файла, которое необходимо загрузить с TFTP-сервера. Получив ответ от DHCP-сервера, Etherboot настраивает сетевую карту, и запрашивает файл «filename» с TFTP-сервера «next-server». В качестве «filename» может выступать файл в формате ELF, или в так называемом формате «tagged». Для загрузки Linux приходится использовать второй формат.

После получения с TFTP-сервера, ядро запускается с указанными параметрами. Параметры, передаваемые ядру, могут быть зашиты в NBI-образ (Network Boot Image), и могут быть получены с DHCP-сервера.

Запуск ядра – последняя операция, которую выполняет Etherboot. После этого код Etherboot выгружается из памяти и всю дальнейшую работу выполняет ядро Linux.

Вариант загрузки по PXE

Можно свести к принципу загрузки по Etherboot, но это приведет к неоправданным задержкам. Используем полностью PXE-загрузку.

В параметре «filename» DHCP-сервер выдает имя вспомогательной программы, обычно это pxelinux.0 из пакета syslinux.

Преимущество PXE – не использует драйверов, обходится своими интерфейсами, и является универсальной для х86 – совместимых компьютеров.

В функции вспомогательной программы входит получение настроек с TFTP-сервера, и в зависимости от них выполнение различных действий. Обычно сразу после получения конфигурационного файла, эта программа загружает с TFTP-сервера ядро и initrd-образ. Потом выгружает свой код из памяти и запускает ядро с параметрами, полученными из конфигурационного файла.

Загрузка Linux и монтирование файловой системы

Ядро определяет основное оборудование, далее управление передается initrd, которое на данный момент является корневой файловой системой. В функции initrd входит определение типа сетевой карты и загрузка соответствующего модуля, после чего отправляется повторный запрос к DHCP-серверу. На основе полученных данных скрипты из initrd настраивают сетевой интерфейс, initrd узнает, где находится NFS-Root (параметр «root-path»). Далее в какой-либо каталог подключается NFS-ресурс, подключенный ресурс становится файловой системой и управление передается программе init.

Далее происходит монтирование файловой системы. После генерации всех конфигурационных файлов и запуска сервисов происходит запуск различных пользовательских сессий. Терминалы готовы к работе!

А.А. Матюшин