В бой идут одни "старики"...
Автор: Александр Куприн


Введение

"Знаете ли вы, что можно комфортно работать в Office XP под Windows 2000 на 486 компьютере? Слушать музыку или смотреть фильмы? Предпочитаете не покупать для этого дорогие и мощные компьютеры? Хотите дать "вторую жизнь" парку морально устаревшей техники? Читайте дальше!"

Заманчиво, правда? Это цитата с сайта проекта LTSP.RU Конечно, я мог бы придумать для вступления что-то от себя, но, думаю, этот абзац отражает как нельзя более точно то, что я хотел бы сказать (разве что заменяя слова Windows на Linux, Office XP на OpenOffice). Поэтому если вас это заинтересовало, читайте дальше!

Проект LTSP (Linux Terminal Server Project) существует вот уже три года (с июля 1999-го). Суть проекта заключается в использовании преимуществ терминал-серверной технологии, что приводит к существенному снижению затрат на приобретение и обслуживание аппаратного обеспечения, централизованному управлению (т.к. прикладное ПО устанавливается только на сервере) и, как следствие, упрощению администрирования системы. Кроме этого LTSP распространяется под лицензией GNU GPL и вы вправе использовать его не платя при этом ни копейки. Даже если это коммерческое использование. Более подробно об этом вы можете прочитать на сайте русскоязычной поддержки LTSP (разделы "Что это такое" и "Почему LTSP?").

Одно из очевидных применений технологии LTSP -- это образование. Почему, я думаю, объяснять не надо -- денег, иногда, не хватает на зарплату преподавателям, не то, что на приобретение новой техники и ПО. Но не будем рыдать у разбитого корыта о недостаточном финансировании образования, попробуем помочь. Эта статья наглядный пример того, как из морально устаревших "четвёрок" можно сделать класс, который не стыдно использовать в учебном процессе, не сетуя на ограничения аппаратного обеспечения. (Хочу сразу заметить, что существует группа ресурсоёмких приложений, которые могут быть запущены с использованием технологии LTSP, но на ограниченном количестве терминалов. Но даже в этом случае, поверьте мне, результаты впечатляющие.)

Что видим...

Класс компьютеров в количестве 17 штук со следующей конфигурацией:

Компьютеры используются как отдельные машины при работе в MS DOS/Windows 3.11 и как рабочие станции для подключения к серверу NetWare 3.12. Сервер -- это Pentium-166 с 32 Мб памяти. Есть ещё компьютер преподавателя -- "четвёрка" 486DX-100 с 12 Мб ОЗУ. В общем, не густо. На таком "железе" далеко не уедешь и прежде, чем перейти к попыткам хоть что-то настроить, необходимо увеличить объём оперативной памяти до 16 Мб. Только после этого можно приступать к дальнейшим шагам. В противном случае, ни о каких "иксах" речь идти не может -- свопинг через NFS "поставит на колени" сеть, сервер и весь проект в целом. Единственное, что можно получить при таких объёмах оперативной памяти -- это возможность подключаться через telnet-соединение к серверу и работать в текстовой консоли. Что тоже, в принципе, не плохо, т.к. вы получаете в своё распоряжение текстовый терминал.

Что делаем...

Если вам не приходилось настраивать что-то подобное, то проблем может возникнуть множество или ни одной -- всё зависит от вашей внимательности и способности сперва читать, а потом делать. И лучше бы не наоборот. По ходу изложения я расскажу о тех ошибках, которые совершал я (иногда несколько раз). И ещё -- всё это настраивалось на дистрибутиве ALT Linux Master 2.0 компании ALT Linux. Поэтому все объяснения, касающиеся месторасположения и содержания конфигурационных файлов, относятся к этому дистрибутиву. Не думаю, что различия будут слишком большими. Если, к примеру, вы используете RH 6.0, то у сервера xinetd будет один конфигурационный файл /etc/xinetd.conf В случае с ALM, использующим более позднюю версию суперсервера, содержимое этого файла разнесено в /etc/xinetd.conf и подкаталог /etc/xinetd.d , содержащий настройки для каждого из сервисов в виде отдельных файлов.

Загрузка необходимых пакетов.

На первоначальном этапе настройка и отладка происходила в режиме один-на-один. Один сервер и одна рабочая станция. Первое, что вы должны сделать (не считая настройки самого Linux'а), это отправиться на сайт LTSP.RU и скачать следующие пакеты (см. раздел "Пакеты LTSP", т.к. прямые ссылки со временем меняются):

Кроме этого, если ваша видеокарта не поддерживается XFree86 версии 4, то вам нужно отправиться на оригинальный сайт проекта LTSP и скачать тот пакет X-сервера версии 3.3.6, который поддерживает её. В моём случае это был XF86_SVGA

Примечание. Даже если вы уверены, что ваша видеокарта не поддерживается X-сервером версии 4, вам всё равно необходимо скачать пакет ltsp.ru_x_core

Немного теории.

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

После окончания POST (Power On Self Test) и при правильно настроенной карте, управление передаётся коду в прошивке. Код сканирует аппаратное обеспечение компьютера в поисках сетевой карты. После того как карта обнаружена и инициализирована (учтите, что для разных моделей сетевых карт, существуют свои собственные аппаратно-зависимые прошивки), она делает широковещательный запрос, пытаясь обнаружить в локальной сети действующий dhcp-сервер. Запрос содержит mac-адрес сетевой карты. Демон dhcp-сервера принимает этот запрос и на основании mac-адреса определяет существует ли запись с таким адресом в базе клиентов. Если да, то в ответ формируется пакет, содержащий:

Согласно этим данным код прошивки конфигурирует ethernet-интерфейс. Затем, используя tftp (Trivial File Transfer Protocol), код Etherboot устанавливает связь с сервером и загружает образ ядра. После чего располагает его в определённом месте оперативной памяти и передаёт ему управление. Ядро пытается определить конфигурацию системы. И вот тут-то, цитирую документацию по LTSP, "...и начинается самоё весёлое...". Возможно так оно и есть, но я опущу ещё два десятка пунктов, описывающих дальнейший процесс загрузки. По двум причинам: это не пересказ документации по LTSP (надеюсь, к выходу этой статьи русский перевод будет опубликован на LTSP.RU) и большинство проблем, возникающих в процессе настройки, возникают на описанных выше этапах.

Установка и настройка.

Итак, mini-HOWTO и пакеты загружены. Прежде, чем вы начнёте установку, убедитесь, что на сервере установлены пакеты следующих служб:

Теперь читаем "Quick start mini-HOWTO" и делаем как он советует.

Примечание.Внимательно читайте выходные данные работы скрипта /opt/ltsp/templates/ltsp_initialize. Если вы забыли установить один из вышеперечисленных сервисов, вы увидите сообщение об ошибке.

Если вас интересует, что именно происходит в процессе выполнения инсталляционных скриптов, почитайте файл /opt/ltsp/templates/desc.txt. Теперь перегрузите систему или попробуйте выполнить команду "telinit 5" -- нам нужен 5-й уровень для запуска скрипта /etc/X11/prefdm.

Настройка dhcp.

Надеюсь, у вас всё в порядке и можно приступать к настройке отдельных сервисов. Обратимся к моему случаю -- на "четвёрках" было установлено и настроено ПО для работы с MS DOS или NetWare. Чтобы не вносить хаос в учебный процесс, я выбрал следующий вариант загрузки рабочей станции: всё остаётся как есть, в конфигурационный файл MS DOS config.sys добавляется ещё один пункт меню, с указанием загрузки Linux. В качестве загрузчика я использую com-программу, содержащую в себе код прошивки для сетевой карты. Программу я взял на сайте, позволяющем динамически генерировать образы для Etherboot ROM. Да... Вот, что ещё -- программа удалённой загрузки не очень любит himem.sys и emm386.exe, поэтому необходимо исключить их из конфигурации для загрузки Linux'а.

Вернёмся к dhcp-серверу. Нам необходимо настроить файл /etc/dhcpd.conf. Для того, чтобы сделать это, вы должны знать mac-адрес сетевой карты на рабочей станции. Кроме этого, нужно решить административные вопросы по конфигурации сети: адрес сети, ip-адрес сервера, сетевая маска. Настройки в инсталляционном скрипте пакета ltsp.ru_core подразумевают, что:

Если что-то из перечисленного вас не устраивает, можете всё изменить и хорошо бы до начала инсталляции -- см. файл CONFIG в пакете ltsp.ru_core. Если забыли сделать это сразу, то придётся править всё по отдельности. Вот пример моего конфигурационного файла dhcpd.conf Минимально-необходимые изменения внесены в раздел описания данных о клиенте:

host ws001 {
    hardware ethernet     00:20:FE:00:D3:1C;
    fixed-address         192.168.0.101;
    filename              "lts/vmlinuz-2.4.9-ltsp-5";
    option option-128     e4:45:74:68:00:00;
    option option-129     "NIC=ne IO=0x300";
}

Обратите внимание на ключ "option-128" -- это не mac-адрес. Этот ключ необходим для Etherboot. Ключ "option-129" указывает ядру какой именно драйвер сетевой карты необходимо загружать плюс дополнительные ключи для её инициализации. Ключ "filename" указывает путь на образ ядра, который передаётся клиенту для последующей загрузки ядра по tftp. В качестве примера там был прописан симлинк на vmlinuz-2.4.9-ltsp-5 Я заменил его на конкретное имя файла, потому что tftp-сервер не мог загрузить образ.

Примечание. Способ определения mac-адреса, который использовал я -- это запуск программы удалённой загрузки. При старте она выдаёт информацию о вашей сетевой карте, в которой содержится mac-адрес, ждёт три секунды (значение по-умолчанию) и пытается обратиться к dhcp-серверу.

Попробуйте (пере)запустить dhcp-сервер, а затем проверить запустился ли он:

[root@alex root]# /etc/init.d/dhcpd restart
Shutting down dhcpd:                                        [FAILED]
Removing host route defined at startup:
Starting dhcpd on :                                         [  OK  ]
Adding local broadcast host route:
[root@alex root]# /etc/init.d/dhcpd status
dhcpd (pid 7613) is running...
[root@alex root]#

Если возникнут трудности с настройкой dhcp-сервера, обратитесь к системным регистрационным журналам (логам).

Настройка tftp.

Сервер tftp необходим для того, чтобы образ ядра был "доставлен" на рабочую станцию кодом Etherboot. Прежде, чем пытаться запустить удалённую загрузку, я настоятельно рекомендую проверить работоспособность сервера локально. Во-первых, проверьте настройки xinetd -- это суперсервер, отвечающий за запуск tftp-сервиса. Проверьте файл /etc/xinetd.d/tftp -- сервис должен быть разрешён (disable = no) и укажите диапазон адресов, из которого разрешён доступ к этому сервису (only_from = 192.168.0.0). Заодно проверьте, чтобы в /etc/xinetd.conf была такая же строка, но указывающая на ip-адрес loopback устройства (only_from = 127.0.0.1). Если хотите, можете указать эти опции в одном месте -- всё равно. После внесения изменений не забудьте перезапустить xinetd и проверить, поднялся ли на 69-м порту tftp-сервис:

[root@alex etc]# /etc/init.d/xinetd restart
Stopping xinetd:                                            [  OK  ]
Starting xinetd:                                            [  OK  ]
[root@alex etc]# netstat --inet -pan | grep 69
udp        0      0 0.0.0.0:69              0.0.0.0:*      7794/xinetd
[root@alex etc]#

Если всё в порядке, то при помощи tftp-клиента вы сможете скопировать через tftp образ ядра (учтите, что корень файловой системы у tftp расположен в /tftpboot, поэтому и указываем в команде get такое имя файла).

[alex@alex alex]$ tftp localhost
tftp> get lts/vmlinuz-2.4.9-ltsp-5
Received 1062469 bytes in 5.4 seconds
tftp>quit
[alex@alex alex]$

Примечание. При работе с tftp-сервером я обнаружил одну неприятную особенность (надеюсь, у вас она не встретится) -- иногда он становился "зомбированным" и отказывался работать. Помогал перезапуск xinetd-сервера. Единственное, что я могу посоветовать вам, если встретится что-то подобное: установить по cron'у проверку на то, стал ли in.tftpd "зомби" или нет.

Будем надеяться, что у вас это заработало и теперь можно перейти к следующему этапу настройки.

XFS (X Font Server).

xfs -- это сервер, используемый X Window System для вывода символов, в том числе с использованием True Type шрифтов. Изначально xfs не настроен, чтобы работать с большим количеством клиентов и обслуживать запросы по сети. Поэтому вы должны сделать следующее: изменить в файле /etc/X11/fs/config строку "client-limit = 4" на "client-limit = 40". Больше сорока одновременных подключений руководство по LTSP устанавливать не советует. И в файле /etc/init.d/xfs найти строку "daemon xfs -port -1 -daemon -user xfs", заменив её на "daemon xfs -port 7100 -daemon -user xfs". После этого перезапустить xfs и проверить начал ли он "слушать" запросы на порту 7100:

[root@alex root]# /etc/init.d/xfs restart
Stopping X Font Server:                                     [  OK  ]
Starting X Font Server:                                     [  OK  ]
[root@alex root]# netstat --inet -pan | grep 7100
tcp        0      0 0.0.0.0:7100       0.0.0.0:*   LISTEN   3563/xfs
[root@alex root]#

Примечание. Если планируете запускать "икcы" на сервере, то не забудьте поменять в файле /etc/X11/XF86Config(-4) строку:

FontPath  "unix/:-1" 
на 
FontPath "unix/:7100"

Оставшиеся сервисы.

Настраивать оставшиеся сервисы практически не пришлось. NFS работало само и необходимости настраивать в нём что-то специфическое не было. Единственное, что необходимо проверить -- это сервер telnetd. Проверьте в файле /etc/xinetd.d/telnetd ключи disable и only_from по аналогии с tftp-сервером.

Два шага до рая -- первая загрузка.

Осталось сделать ещё немного для первой загрузки. Необходимо подправить главный конфигурационный файл LTS /opt/ltsp/i386/etc/lts.conf (если хотите узнать более подробно о назначении всех ключей в этом файле -- прочтите /opt/ltsp/i386/etc/lts.conf.readme.ru) Для начала оставим только секцию [default]:

[Default]
    SERVER             = 192.168.0.254
    XF86CONFIG_FILE    = "XF86Config.svga"
    XSERVER            = XF86_SVGA
    USE_XFS            = Y
    LOCAL_APPS         = N
    RUNLEVEL           = 3
    USE_NFS_SWAP       = N
    X_MOUSE_PROTOCOL   = "Microsoft"
    X_MOUSE_DEVICE     = "/dev/ttyS0"
    X_MOUSE_RESOLUTION = 50
    X_MOUSE_BUTTONS    = 2

Уровень инициализации (RUNLEVEL) 3 загрузит командную строку в консоли. Этот вариант загрузки используется для отладки. Если всё в порядке (тьфу-тьфу), то через одну-две минуты (или быстрее, всё зависит от ПК) вы получите приглашение в для работы в оболочке bash (bash-2.05#). Получилось? Замечательно! Теперь измените в /opt/ltsp/i386/etc/lts.conf значение RUNLEVEL на 4 и перезапустите рабочую станцию. После перезагрузки вам предложат нажать клавишу "enter" для подключения к серверу через telnet-соединение. Этот вариант удобен, если вам не нужны приложения, использующие "иксы". А теперь перейдём к "самому весёлому" -- настройке X-сервера на рабочей станции.

Настройка X-сервера.

Пришло время сделать то, ради чего и разгорелся весь этот сыр-бор -- настроить X-терминал. Заставить всё работать с первого раза у меня, увы, не получилось. Поэтому я пошёл другим путём -- взял мини-дистрибутив BasicLinux, установил его, установил пакеты, необходимые для X и настроил IceWM. Полученный конфигурационный файл я использовал в дальнейшем (см. опцию XF86CONFIG_FILE в файле /opt/ltsp/i386/etc/lts.conf). Этот путь я вам советую только как крайнюю меру, если ничего другого не остаётся.

Есть другой путь. Он не блещет изяществом и на ум мне он пришёл намного позже, когда стало поспокойней -- воспользоваться одной из программ конфигурирования X'ов на самом сервере : XFdrake, XF86Setup, Xconfigurator или xf86config, указав при настройке то аппаратное обеспечение, которым располагает рабочая станция. Не забыв при этом предварительно сохранить оригинальные конфигурационные файлы /etc/X11/XF86config(-4).

Есть третий путь. Теоретически, подавляющее большинство видеокарт должно поддерживать svga-режим, поэтому хочу предложить вам пример конфигурационного файла для XFree86 версии 3.3.6, который позволит вам запустить SVGA X-сервер на рабочей станции. Для этого вам придётся скачать пакет ltsp_x336_svga-3.0.0-0.i386.rpm с сайта LTSP. Этот пакет содержит двоичный файл XF86_SVGA. Его нужно разместить в каталоге /opt/ltsp/i386/usr/X11R6/bin Далее создайте в /opt/ltsp/i386/etc подкаталог X11 и скопируйте в него конфигурационный файл. Укажите в /opt/ltsp/i386/etc/lts.conf RUNLEVEL равный пяти (5) и перезагрузите рабочую станцию. Если "иксы" сразу не загрузятся, то рабочая станция будет в цикле пытаться загрузить X-сервер снова и снова. Вы можете попытаться, нажимая клавишу "Scroll Lock", поймать момент вывода на экран текстовой информации и выяснить в результате какой ошибки "иксы" не грузятся.

Если же X-сервер успешно стартовал, то загрузится менеджер kdm и предложит произвести авторизацию в системе. Дальше как обычно -- логин, пароль и ощущение того, что работаете за полноценным компьютером.

Примечание. Если X-сервер грузится (серое поле), но дальше ничего не происходит, то скорее всего у вас указан не тот уровень инициализации, что вам нужен. Возможно это 3-й уровень. Проверьте, в файле /etc/inittab должна стоять строка "id:5:initdefault:"

Файл XF86Config.svga содержит настройки для 256 цветов. Если вы уверены, что ваша карта выдержит и больше (к сожалению, Trident не может работать в таком режиме), то измените значение опции Depth на 16, а опции VideoRam на значение, соответствующее объёму видеопамяти вашей видеокарты.

Что получаем...

Класс X-терминалов, работающих с современным ПО. Правда у компьютеров, описанных мною есть один недостаток. Это самые медленные "четвёрки" -- отсутствие сопроцессора и кеша второго уровня не даёт получить большую скорость. Кроме этого, видеокарта Trident не отличается быстротой, поэтому приложения, написанные с использованием библиотеки Qt, притормаживают при прорисовке. Работа с программами пакета OpenOffice, на мой взгляд, показала удовлетворительную скорость. Почему не отличную? Скорее всего, это связано с тем, что я отвык работать за медленным "железом". Использование 486DX4-100 уже позволило комфортно работать в KDE, а работа за P-166 с 32 Мб ОЗУ и видеокартой S3Trio64V+ показала, что система под KDE "летает".

На текущий момент, удалось укомплектовать SIMM'ами на 16 Мб семь рабочих станций и проверить их работу вместе с сервером Celeron-700 Мгц, 256Мб ОЗУ. На каждой из рабочих станций был запущен Open Writer -- система работала. Идеальным вариантом, будет замена процессора на P3, увеличение объёма ОЗУ до 512 Мб (предел для чипсетов i815EP) и установка второй сетевой карты (100 Мбит), что позволит разгрузить сетевой трафик подключением на два интерфейса двух подсетей.

Заключение.

Если у вас возникнут вопросы, которые вы не можете решить самостоятельно, обращайтесь в русскоязычную почтовую рассылку, посвящённую проекту LTSP (см. раздел "Контакты" на сайте LTSP.RU)


Удачи.

Copyright (c) "Софтерра", www.softerra.ru, [email protected]