LINUX_LTSP




 

Сейчас во многих школах, институтах и других учеб­ных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и фи­зически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в не­рабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, быва­ет, подарят компьютер (один) и радуются, как дети. Спа­сибо, конечно, большое, но проблемы, как вы понима­ете, этот компьютер в общем не решает, даже наобо­рот, усугубляет, работать на старых уже как-то не хо­чется, теперь просто есть с чем сравнивать. Но выход из такой ситуации есть. И мне кажется, что даже почти идеальный, но сначала суть.

Все ОС Unix и подобные операционные системы из­начально отлично подготовлены для полноценной рабо­ты в среде клиент-сервер. Даже X-Window не удалось избежать данной участи. Это сетевой продукт, одна часть которого (сервер) взаимодействует непосредственно с пользователем с помощью клавиатуры, мыши и мони­тора, она обрабатывает команды пользователя и фор­мирует соответствующие запросы на их выполнение. Ре­зультаты работы программ передаются также непосред­ственно ему. А другая (клиент) уже обрабатывает резуль­таты запросов и запускает запрошенные программы, а затем передает результат выполнения обратно серверу. Основой взаимодействия графических приложений с сервером является протокол X, который реализован так, что ему абсолютно не важно, где находится клиент и сервер. В самом общем случае они работают на одном компьютере, но ничто, повторяю, ничто не мешает раз­местить их на разных компьютерах, ну разве что отсут­ствие какой-либо связи между ними.

Такая организация позволяет эффективно использо­вать компьютерный парк организации: все ресурсоемкие операции выполняются на специально выделенном мощ­ном компьютере. То есть имеется несколько более сла­бых компьютеров, за которыми работают пользователи. Такие компьютеры используют Unix с установленным сер­вером X-Window. Операционная система обрабатывает запросы, создаваемые пользователем, и передает его серверу, который в свою очередь возвращает результат. Эти компьютеры принято называть Х-терминалами. А ком­пьютер, выполняющий основную наиболее трудоемкую ра­боту, называют сервером графических приложений. Ко­нечно же, к ресурсам такого компьютера предьявляются особые требования, особенно это относится к объему опе­ративной памяти, которой должно теперь хватать на всех, и к скорости дисковых операций. А вот к рабочим стан­циям пользователя требования уже гораздо ниже. С воз­лагаемой на них задачей спокойно могут справиться и «четверки».

Но и это еще не все. При подключении к серверу жес­ткий диск становится не у дел. Все необходимые для об­работки данные находятся на сервере. Терминал в таком случае использует локальный жесткий диск фактически лишь для загрузки системы. Неужели в таком случае нельзя обойтись как-нибудь без него?

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

В чем же преимущество компьютера без диска:

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

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

   Резервирование, восстановление данных будет про­исходить также только на одном компьютере.

  Физическая защита данных лучше, так как единствен­ное, что необходимо защищать - сервер, а его можно поставить в специальном хорошо охраняемом поме­щении (которое, кстати, можно оборудовать фильтра­ми от проникновения пыли и аппаратурой для поддер­жания постоянной температуры, что существенно про­длит срок работы сервера).

   UPS можно предоставить только серверу.

  Также будет существенно ниже общая цена - эконо­мия = (стоимость жесткого диска + стоимость CD-ROM + стоимость флоппи-дисковода) * количество компьтеров.

  Защищать от вирусов необходимо только сервер, так как другие компьютеры не имеют жесткого диска.

  Уровень шума на рабочем месте ниже, так как в ком­пьютере нет частей, которые движутся - практически нет необходимости в администрировании и обслужи­вании в клиентских компьютерах.

   Большая долговечность клиентских машин как мораль­ная, так и физическая.

   Возможность работы в запыленных помещениях (здесь желателен «холодный» процессор типа VIA СЗ, ЖК мо­нитор).

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

После включения питания управление передается, как обычно BIOS, который в свою очередь выполняет инициа­лизацию, проверку POST (Power-On-Self-Test) и анали­зирует порты на наличие дополнительных устройств. В ходе последней обнаруживается установленная сете­вая карта, в энергонезависимой памяти которой обна­руживается код, начинающий выполняться после завер­шения теста.

Дальнейшую работу условно можно разделить на три этапа: получение IP-адреса, получение образа операци­онной системы и собственно работа с данными. Чтобы получить IP-адреса, программа загрузки инициализирует широковещательный запрос (для нашего примера 192.168.0.255, по умолчанию используется порт 68, про­токол UDP), в котором указывается свой уникальный для каждой сетевой карты МАС-адрес. Для динамического распределения IP-адреса между компьютерами в сети используется служба DHCP. DHCP-сервер, приняв зап­рос, находит конфигурацию, соответствующую данному МАС-адресу, и возвращает следующие данные:

   IP-адрес рабочей станции.

   Маску сети.

   Путь к загружаемому ядру ОС.

   Путь к каталогу, который монтируется в качестве кор­невого.

Переговоры между клиентом и сервером можно вос­произвести примерно так.

Клиент: «Привет, мой аппаратный адрес 00-02-44-07-FC-C4, дай мне мой IP-адрес».

Сервер: «(Ищет адрес в базе данных.) Ваше имя - aldebaran, ваш IP-адрес - 192.168.0.100, ваш сервер -

192.168.0.     1,  файл, от которого вы загружаетесь, нахо­дится в/tftpboot/ltsp/vmlinuz-2.4.21-ltsp-1 и остальная ин­формация).

Естественно, в сети должен находиться один такой сер­вер, иначе они передерутся между собой, и, конечно же, необязательно он должен быть нашим сервером графи­ческих приложений. После получения адреса клиент дол­жен загрузить ядро операционной системы. Для этого ис­пользуется протокол TFTP (тривиальный протокол пере­дачи файлов). Это просто облегченная версия протокола FTP, которая не требует идентификации и использует UDP-протокол вместо TCP. Ну а чтобы пользоваться фай­ловой системой, на другом компьютере на сервере долж­на быть настроена служба NFS. После загрузки ядра оно, уже как и положено, берет бразды правления в свои руки. Вот вкратце и все.

Теперь займемся практической реализацией. Для того чтобы было возможным загружаться описанным выше способом, необходимо записать образ загрузчи­ка, поддерживающего определенную сетевую карту в EPROM (Erasable Programmable Read-Only-Memory-перезаписываемая память). Для этого заходим на сайт http://rom-o-matic.net/ и в выпадающем списке «Choose NIC/ROM type» выбираем марку чипа на сетевой кар­те. Здесь я допустил ошибку, помня, что сетевая карта NE2000 совместимая, просто скачал образ для NE. И вполне естественно, при загрузке получил что-то вро­де «не могу найти NE*-KapTy». Пришлось раскрывать корпус одного из компьютеров и смотреть, что там та­кое установлено, заодно и сам узнал марку чипа - rtl8029. В меню «Choose ROM output format» выберите интересующий формат. Доступны следующие вариан­ты образов:

   Floppy Bootable ROM Image (.Izdsk) - загрузчик с дис­кеты (на первом этапе лучше воспользоваться имен­но им).

   Binary ROM Image (.Izrom) - прошивка ПЗУ сетевой карты.

   LILO Bootable ROM (.Izlilo) - загрузка с использованием LILO.

   DOS Executable ROM Image (.com) - DOS-загрузчик тоже подходит, только уберите загрузку himem.sys и emm386.exe, а то работать, скорее всего, не будет, и добавьте соответствующие строки в файл config.sys для загрузки.

   РХЕ loadable ROM Image (.Izpxe) - то же, что и второй пункт, но разработки Intel.

Выбираем вариант Floppy Bootable ROM Image, при нажатии на кнопку «Get ROM» вы получаете нужный об­раз. Чтобы перезаписать его на дискету, воспользуйтесь программой rewrite под Windows, которая входит в состав практически каждого дистрибутива Linux, а в Linux дайте следующую команду:

#cat your_image.lzdsk > /dev/fdO ИЛИ

#dd if=/path/to/rот-image of=/dev/fdO bs=1024

как кому привычнее. Программа первоначальной загруз­ки готова. Первоначально я советую попробовать загру­жаться с дискеты и настроить схему один сервер - один клиент, а после успешного преодоления всех подводных камней уже нарастить количество клиентов и заняться прошивкой кода в ПЗУ. Приступаем к наиболее весело­му занятию - настройке сервера.

Отправная точка в Интернете для поиска необходимой информации и программ - официальный сайт проекта http://www.ltsp.org.

Конфигурация сервера Athlon 1.3 Гц, 256 Мб, 10 Мбит сетевая карта. Пять клиентов Pentium-100, 16 Мб, Video S3 Trio 3D 4 Мб. Все это настраивалось под операцион­ными системами Linux Mandrake 8.0 и Red Hat 7.3. Для того чтобы это все работало на данных системах, были установлены следующие сервисы: dhcp, nfs, portmap, tftp (клиент и сервер), если понадобится telnet-сессия, то и telnet-cepBep и запущена служба xinetd. На установке выше перечисленных сервисов я останавливаться не буду, хотя бы потому, что большинство их входит в со­став соответствующих дистрибутивов, и если нет в стан­дартной поставке, то их всегда можно найти на соответ­ствующем сайте.

Для настройки Itsp нам понадобятся следующие паке­ты, которые можно взять с http://prdownloads.sourceforge.net/ Itsp/, все они доступны как в виде перекомпилированных пакетов в формате rpm или deb, так и в виде исходников. Какие устанавливать - дело вкуса и опыта. Я скачал в формате tgz. Итак, какие необходимо скачать пакеты (вер­сию не указываю специально, так как к моменту выхода статьи все может измениться, плюс уже давно ходит в бетах версия 4):

   ltsp_core - основной пакет, необходимый для работы;

   ltsp_kernel - ядро, загружаемое на клиентский компьютер;

   ltsp_x_core - пакет, необходимый для запуска X- Window версии 4.x на клиентском компьютере;

   ltsp_x_fonts - пакет со шрифтами (скачал по рекомен­дации на сайте, но вполне можно обойтись и без него).

Если видеокарта не поддерживается в версии 4.x, не­обходимо дополнительно выбрать пакет с версией сер­вера 3.3.6 применительно к видеокарте, установленной на ваших клиентских компьютерах (в моем случае это Itsp_x336_s3), или, если нет, то Itsp_x336_svga, но при этом не будут работать ТгиеТуре-шрифты и сглажива­ние. На сайте также доступны пакеты для поддержки звука, сканера, веб-камер и wireless-устройств на тер­минале, пакеты для организации Windows-терминала и еще много чего. Первым обязательно должен быть ус­тановлен пакет ltsp_core. Установка заключается в рас­паковке (tar xvzf) и запуске инсталляционного скрипта (cd ltsp_xxx, ,/install.sh). Остальные устанавливаются аналогично. Для rpm-пакетов просто дайте команду:

#      rpm -ivh ltsp_core-3.0.9-0.i386.rpm

и аналогичную для остальных. При запуске скрипта уста­новки ltsp_core выдается информация, которая подразу­мевается по умолчанию, все настройки можно изменить в файле config, желательно до начала инсталляции, а то потом придется править во всех файлах по отдельности:

Good! We have found RedHat version 7.3

About to install LTSP, using the following settings:

#      каталог, в который устанавливаются пакеты

LTSP_DIR = /opt/1tsp

SWAP_DIR = /var/opt/ltsp/swapfiles

#      каталог для загружаемого ядра

TFTP_DIR = /tftpboot

#      адрес сети

IP_NETWORK = 192.168.0.0

#      адрес сервера

IP_SERVER = 192.168.0.1

#      маска сети

IP_NETMA.SK = 255.255.255.0

#      широковещательный адрес сети

IP_BROADCAST = 192.168.0.255

После установки всех пакетов перейдите в каталог/opt/ Itsp/templates/ и запустите скрипт ./Itspjnitialize, который внесет необходимые изменения в конфигурационные фай­лы вышеперечисленных сервисов. Внимательно читайте выходные данные, если что-то у вас не установлено, то скрипт выдаст сообщение об ошибке. Теперь давайте пе­рейдем к ручной доводке сервисов.

Сервис dhcp настраивается в файле /etc/dhcpd.conf, который при установке в большинстве дистрибутивов не создается, поэтому первоначально может потребоваться его создать:

#touch /etc/dhcpd.conf

Для того чтобы правильно его настроить, необходи­мо знать МАС-адрес сетевой карты, IP-адрес сервера и сетевую маску. Для выяснения МАС-адреса я нашел в Интернете множество программ, написал одну на Perl, воспользовавшись модулем с CPAN, затем вспомнил, что демон arpd сохраняет информацию о всех МАС-адресах и их IP-адресах в пределах локальной сети, а проблема решилась проще, чем я думал, при запуске образа, ко­торый мы приготовили на дискете раньше, выдается тре­буемый МАС-адрес сетевой карты, установленной на компьютере.

Для начала о некоторых допущениях, связанных с кон­фигурацией локальной сети. В сети 192.168.0.0/255.255.255.0 для бездисковых терминалов выделены адреса с

192.168.0.  100  по 192.168.0.254. Серверы DHCP и LTSP находятся на компьютере 192.168.0.1. Тогда файл /etc/ dhcpd.conf будет иметь такой вид:

subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.100; option subnet-mask     255.255.255.0;

option broadcast-address          192.168.0.255;

option routers                            192.168.0.1;

option domain-name-servers 192.168.0.1; option domain-name "server.org"; option log-servers      192.168.0.1;

host terml {

hardware ethernet 00-02-44-07-FC-C4; fixed-address    192.168.0.100;

option host-name "terml";

option root-path     "192.168.0.l:/opt/ltsp/i386";

filename                 "lts/vmlinuz-2.4.21-ltsp-l";

}

Небольшое пояснение. В начале конфигурационного файла расположены инструкции, относящиеся ко всем компьютерам сети. Их смысл очевиден. Поскольку на терминалах нет жесткого диска, то демону журналиро­вания syslogd в строке option log-servers 192.168.0.1 указывается удаленный сервер, который будет записывать от него сообщения. Для того чтобы демон syslogd на сер­вере мог принимать сообщения от терминалов, в файле конфигурации /etc/sysconfig/syslog, должен использо­ваться ключ -г:

#     Options to syslogd

I      0 disables 'MARK' messages.

#      -r enables logging from remote machines

#      -x disables DNS lookups on messages recieved with -r

#      See syslogd(8) for more details

SYSLOGD_OPTIONS="-m 0 -r "

компьютера клиента. Здесь можно переопределить настройки сервера индивидуально. В строке hardware ethernet 00-02-44-07-FC-C4 указывается аппаратный МАС-адрес сетевой карты, а в строке fixed-address 192.168.0.100 за ним статически закрепляется IP-адрес. Теперь при запросе клиента с указанным МАС-адресом ему всегда будет выдаваться IP-адрес 192.168.0.100. Остальным же он будет назначаться на общих прави¬лах, из таблицы свободных адресов. Строка option root- path указывает на раздел, который будет смонтирован в качестве корневого с помощью службы NFS, его мож-но прописать и в глобальной секции, но только в том случае, если в данной сети используются только без-дисковые станции, иначе ноутбук шефа будет загружать что попало. Для того чтобы данный ресурс был виден в сети, необходимо в файле/etc/exports сервера LTSP ука¬зать каталоги, доступные для сетевого монтирования:

/opt/ltsp/i386 192.168.0.0/255.255.255.0 {го, no_root_squash)

/var/opt/ltsp/swapfiles {rw, no_root_squash)

Слева указаны каталоги, которые экспортирует сервер, первая строка - корневую систему, а вторая - раздел свопирования, если в нем есть необходимость. Справа указаны опции. Флаги го и rw указывают на доступ толь ко для чтения и для записи и чтения соответственно. А no_root_squash заменяет пользователя root более безобидным nobody. Параметры го и no_root_squash, исполь-зуются в файле по умолчанию, и поэтому их можно смело опустить, но так как-то нагляднее.

Ядро может автоматически определить только PCI се-тевую карту, если у вас ISA, то добавьте следующие строки для каждого описываемого клиента.

option option-128         е4:45:74:68:00:00;

option option-129 "NIC=ne 10=0x300";

Здесь хочется отметить, что «option-128» в этом случае не является тас-адресом, это специальный ключ для загрузки Etherboot. Параметр «option-129» указывает ядру, какой именно драйвер сетевой карты необходимо загружать. Параметр filename указывает путь к ядру, который необходимо загружать. Пакет LTSP поставляется с двумя ядрами, поддерживающими большинство сетевых карт: одно описано выше, а второе с префиксом Ipp (Linux Progress Patch) в имени. При использовании последнего ядра на компьютере клиента при загрузке отображается статус-бар, данное ядро рекомендуется использовать, после того как удалось все настроить и загрузиться с обычного.

Дополнительно может понадобиться для экспорта до-машних каталогов пользователей /home добавить следующие строки в файл /etc/exports:

/home 192.168.0.0/255.255.255.0 (rw)

а в файл /оpt/ltsp/i386/etc/fstab:

ltsp-server:/home/ /home nfs defaults,rsize=8192,wsize=8192 0 0

И обязательно добавьте в файл /etc/hosts описание компьютеров сервера и клиентов для нормальной работы службы NFS. Например:

/etc/hosts

127.0.0.1          localhost.localdomain localhost

192.168.0.1       server.org

192.168.0.100   terml

Теперь необходимо перезапустить сервис dhcpd:

[root@grinder etc]# /etc/init:d/dhcpd restart

Останавливается dhcpd: [ СЕ0Й ]

Запускается dhcpd: [ OK ]

[root@grinder etc]# /etc/init.d/dhcpd status

dhcpd {pid 979) выполняется...

На этом настройку dhcpd можно считать законченной. Теперь о настройках остальных сервисов. Общим для некоторых из них является то, что если сервис запускает¬ся с помощью xinetd (tftp, telnet), то он обязательно должен быть разрешен (в файлах/etc/xinet.d/tftp и /etc/xinet.d/ telnet), для этого требуется заменить disable = yes на на disable = по. Также в целях улучшения безопасности могут быть определены IP-адреса, с которых разрешен доступ к данному сервису (по умолчанию localhost), т.е. в нашем случае onlyjrom = 192.168.0.0. Кстати, вообще вышеописанное желательно проводить в сетях, в которых вы полностью доверяете всем компьютерам, а от внешних собратьев закрыться firewall.

Файл /etc/xinet.d/tftp будет иметь такой вид:

 

 

 

service tftp {

socket type

= dgram

protocol

= udp

wait

= yes

user

= root

server

= /usr/sbin/in.tftpd

server args

= -s /tftpboot

disable

= no

per source

= 11

cps

= 100 2

 

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

[гoot@grinder root]# tftp grinder tftp> get lts/vmlinuz-2.4.21-ltsp-l

Received 1062469 bytes in 0.9 seconds

tftp> quit

Имя файла указано так потому, что корневой каталог для этого сервиса определен в файле /etc/xinet.d/tftp как server_args= -s/tftpboot, т.е. каталог/tftpboot делается корневым (chroot), и поэтому если указать полный путь, то сервер просто не найдет необходимый файл.

Меньше всего возни с настройкой сервера шрифтов было в дистрибутиве Red Hat. А с настройкой в остальных мне очень помог разобраться документ http:// www.ltsp.org/contrib/AbiWordfont.txt. В файле /etc/X11/fs/ config в строке «client-limit = 10» установите число компьютеров клиентов, рекомендуемое не более сорока. В файле/etc/X1 1/XF86Config (или XF86Config-4, если вы используете четвертую версию сервера) замените строку:

FontPath "unix/:-1"

на

FontPath "tcp/localhost:7100"

А в файле /etc/rc.d/init.d/xfs замените строку:

daemon —check xfs xfs -port -1 -daemon -droppriv -user xfs

 

 

daemon —check xfs xfs -port 7100 -daemon -droppriv -user xfs

и строку:

daemon —check xfs su xfs -c V’xfs -port -1\" -s /bin/sh

 

 

daemon —check xfs su xfs -c \"xfs -port 7100\" -s /bin/sh

Перезапустите сервер и проверьте, слушает ли он порт под номером 7100. Для того чтобы терминалы могли зап рашивать у сервера сеанс XDM, требуемый для регист­рации пользователя и запуска пользовательской сессии, необходимый при использовании X-Window, требуется в конфигурационном файле /etc/X11/xdm/xdm-config на сер­вере LTSP внести соответствующие изменения:

! SECURITY: do not listen for XDMCP or Chooser requests ! Conment out this line if you want to manage X terminals with xdm

#      этот пункт обязательно закомментировать ! DisplayManager.requestPort: О

#  Эту строчку добавить, правда необязательно. Остальные

#     можно не трогать.

DisplayManager.*.setup:/etc/Xll/xdm/Xsetup_workstation Скрипт Xsetup_workstation имеет такой вид:

#! /bin/sh

/usr/XllR6/bin/xsetroot -solid "#356390" if [- x /usr/bin/xsri]; then

/usr/bin/xsri -geometry +5 +5 -avoid 300x250 J -keepaspect /etc/Xll/xdm/ltsp.gif

fi

И остался «последний и решительный бой». Правка самого главного конфигурационного файла LTSP /opt/ Its p/i386/et c/lts. с о nf. Наиболее подробную информацию о настройках тех или иных параметров можно узнать из файла /opt/lt s p/i386/et c/lts. со nf. readme. Данный файл состоит из раздела [Default], в котором определяются общие для всех клиентов параметры, и разделов, оп­ределяющих индивидуальные для каждого клиента, в них при необходимости можно переопределить те или иные глобальные установки. Благодаря такой схеме появляется возможность более гибкой адаптации к ап­паратной конфигурации терминалов. Итак, пример фай­ла Its.conf:

[Default]

SERVER = 192.168.0.1

#      компьютер, выступающий в роли сервера графических приложений

XSERVER = auto

#     указывает на то, что система сама определяет тип загружаемого

#      XFree86-cepBepa

X_MOUSE_PROTOCOL = "IMPS/2"

#      название протокола манипулятора мыши

#     в данном случае используется мышь со скроллингом, если

#     обыкновенная мышь подключаемая к порту PS/2, то попробуйте

#      просто PS/2

X_MOUSE_DEVICE = "/dev/psaux"

#      указывает на порт PS/2

X_M0USE_RE SOLUTION = 50

X_M0USE_BUTT0NS = 3

L0CAL_APPS = N

USE_XFS = Y # используется сетевой сервер шрифтов RUNLEVEL = 5 SOUND = Y VOLUME = 75

И секция для клиента. В качестве ее названия может выступать имя хоста, MAC- или IP-адрес, т.е. [terml], [192.168.0.100] или [00-02-44-07-FC-C4].

[terml]

XSERVER = XF86_SVGA

#      Тип Х-сервера, который будет выполняться на клиентской

#      станции. Для четвертой версии указывается видеомодуль,

#      например nv. Для XFree86 3.3.6 указывается имя сервера

#     XF86 SVGA, XF86 S3 и т.д.

X_MODE_0 = 800x600 40 800 840 968 1056 600 601 605 628 J +hsync +vsync

#      установка параметров вывода на экран, их может быть

#      несколько от X_M0DE 0 до X_MODE_10

X_VIDEORAM = 4096количество видеопамяти X_MOUSE_PROTOCOL = "Microsoft"

#      мышь с последовательным интерфейсом

X_MOUSE_DEVICE = "/dev/ttySO"

#      мышь, подключаемая к параллельному порту

X MOUSE RESOLUTION = 50

X_M0USE_BUTT0NS = 2 # количество кнопок мыши

#     включение эмуляции третьей кнопки мыши

#      (нажатием двух имеющихся одновременно)

X_M0USE_EMULATE3BTN = Y X_MOUSE_BAUD = 1200 RUNLEVEL = 3

Уровень инициализации (RUNLEVEL) 3 загружает ко­мандную строку bash_shell в консоли, этот параметр же­лательно установить первым для отладки работы серви­сов, и если все получилось, то использовать либо 4 для telnet-ceccnn, позволяющей открывать несколько терми­налов на сервере и переключаться между ними по Alt-F1 до Alt-F9, либо 5 для автоматического старта X-Windows. Для каждого клиента, как видите, есть возможность оп­ределить индивидуальные параметры Х-сервера в сек­ции, но возможен и другой вариант, он особенно удо­бен, если имеется несколько клиентов с одинаковыми видеокартами.

Для этого необходимо указать в параметре XF86CONFIG_FILE = XF86Config.term1 имя конфигура­ционного файла для данного клиента и поместить его в каталог/opt/ltsp/i386/etc/X11/ (предварительно создав каталог Х11). Мне в этом смысле немного повезло, на одном из клиентских компьютеров до этого стоял Linux, поэтому генерировать данный файл заново не при­шлось. Если у вас другая ситуация, то попробуйте ис­пользовать программу /usr/X11 R6/bin/xf86config на сер­вере, установив туда нужную видеокарту (не забудьте сохранить при этом оригинальные файлы). Дополни­тельно можно переопределить параметры клавиатуры, используемые по умолчанию. Для этого предназначе­ны следующие опции:

   XkbModel - модель клавиатуры, наиболее распрост­раненные - рс 101, рс 102, рс 105;

   XkbLayout - раскладка клавиатуры, например us (по умолчанию), ru, ru(winkeys);

   XkbSymbols - таблица скан-кодов, по умолчанию «us(pc 101)», но можно заменить, например на «us(pc105) + ru».

Раз уже коснулись раскладки клавиатуры, то два сло­ва о том, как использовать русскую. Для установки и пе­реключения на русский вариант (в рассматриваемом слу­чае) раскладки клавиатуры в XFree86 применяется два параметра XkbLayout и XkbOptions. Первый, как уже от­мечалось, можно переопределить, а вот для того чтобы была возможность переключаться между раскладками, необходимо выполнить еще некоторые действия. Все на­стройки, касающиеся параметров XFree86 во всех Linux производятся в файле XF86Config для версии 3 и в XF86Config-4 для четвертой версии. Но для терминалов таких файлов изначально не существует, они генериру­ются динамически при запуске. Для этих целей использу­ется скрипт /opt/ltsp/i386/et с/r с. set и рхЗ для клиентов с вер­сией 3 и /opt/ltsp/i386/etc/rc.setupx для четвертой версии, которые, кстати, берут основные параметры для настрой­ки из файла Its.conf. Так вот, для того чтобы переключа­тель заработал, необходимо после строки XkbLayout «${XkbLayout}» для rc.setupx3 или Option «XkbLayout» «${XkbLayout:-»us»}» для rc.setupx прописать параметр, устанавливающий комбинацию для изменения расклад­ки, например:

   XkbOptions «grp:caps_toggle» - переключение по Caps

Lock;

   XkbOptions «grp:alt_shift_toggle» - более привычное для

пользователей Windows переключение по Alt + Shift.

Вот и все. Самое интересное, что это действительно работает. На клиентском компьютере загрузить даже KDE с OpenOffice и причем с вполне терпимой скорос­тью, после перехода на оконный менеджер IceWM и за­пуска аналога OpenWritera от GnomeOffice - AbiWord си­стема вообще летала. Конечно, при увеличении количе­ства клиентов до 10 желателен сервер помощнее, как минимум оперативной памяти 512 Мб. Наиболее очевид­ное применение данной технологии - это наши учебные заведения со старыми компьютерными классами, где до­бавление одного мощного компьютера позволит рабо­тать с современным ПО. В организации интернет-кафе с помощью технологии LTSP поможет скрипт: http:// prdownloads.sourceforge.net/ltsp/ltsp_phpSiCafe-0.0.1 .tgz, назначение которого - учет времени, проведенного пользователями за компьютером. Заинтересовавшимся советую также заглянуть еще на два сайта. Первый http://k12ltsp.org/, этот проект предназначен для уста­новки терминального сервера, разработанного для школ, базируется на дистрибутиве Red Hat. Второй http:// www.ltsp.ru/, как видно из названия, русский сайт проек­та. Здесь уже можно найти переводную документацию по работе с бездисковыми станциями, описание установ­ки виртуальной машины VMWare для запуска приложе­ний, написанных под Windows.

Все это, конечно, интересно и работает уже более года, но совсем недавно познакомившись с проектом OpenMosix (http://openmosix.sourceforge.net/), предлага­ющим ОрепЗоигсе-решение создания кластерных сис­тем на основе компьютеров, соединенных в единую сеть. OpenMosix представляет собой расширение к обычному ядру Linux, при его установке узлы в кластере начинают «общаться» с друг другом, и кластер адаптирует себя к рабочей нагрузке. Процессы, обрабатывающиеся на лю­бом из узлов, при увеличении нагрузки данного компь­ютера по сравнению с другими способны передаваться на любой другой компьютер кластера. OpenMosix посто­янно пытается оптимизировать распределение ресурса между машинами, при этом новый узел может быть до­бавлен «на лету» и автоматически будет подхвачен кла­стером. Так как все openMosix расширения выполняют­ся внутри ядра, каждое из приложений, автоматически извлекает выгоду из распределенной вычислительной концепции openMosix. Кластер ведет себя фактически как многопроцессорная система, правда без ограниче­ния на их максимальное число. И естественно возникло желание испытать это все в деле, тем более что боль­шая часть работы уже проделана.

Как и в приведенном выше примере, один из компь­ютеров играет роль главного (master), а остальные, сколько есть, подчиненные (slave). Для работы понадо­бятся сами ядра с патчем от openMosix и инструменты для работы openmosix-tools. Все это можно найти на странице http://prdownloads.sourceforge.net/openmosix/, где доступны как сами патчи, так и уже перекомпили- рованые (серверные) ядра для разных платформ, при­чем уже доступны патчи для ядер серии 2.6. Мы будем устанавливать при помощи патча, самостоятельно ком­пилируя все ядра.

Для этого берем ядро 2.4.22:

#      wget http://www.kernel.Org/pub/linux/kernel/v2.4/ J

linux-2.4.22.tar.bz2

#      wget http://tab.tuxfamily.org/download/openmosix/ J

 

patch-2.4.22-ОШ-20030811.bz2

 

Теперь все разархивируем:

#      tar -xjvf - linux-2.4.22.tar.bz2

#      cd linux-2.4.22

#      bzcat ../patch-2.4.22-om-20030825.bz2|patch -pi

#      In -sf /path/to/linux-2.4.22 /usr/src/linux

Теперь заходим в него:

#      cd /usr/src/linux

Конфигурируем серверное ядро:

#     make xconfig {menuconfig, gconfig}

И смотрим, чтобы следующие пункты были включены в ядро, а не в виде модулей:

openMosix ---

openMosix process migration support openMosix File-System

Networking options --

Packet Socket Socket Filtering TCP/IP networking IP: multicasting

File systems -----

/proc file system support

Network File Systems -

NFS file system support NFS server support Provide NFSv3 server support

И компилируем новое ядро:

#     make dep

#     make bzlmage && make modules && make modules_install

 

Для ядер серии 2.6 достаточно ввести make all.

 

Копируем ядро на свое место:

#      mv arch/i386/boot/bzImage /boot/vmlinuz-openmosix

 

Конфигурируем загрузчик для работы с новым ядром, и после перезагрузки система будет готова. Если уста­новка производится при помощи перекомпилированных пакетов, все вышеописанное (кроме настройки загруз­чика) будет в систему добавленно автоматически. Для этого вводим:

#      rpm -ivh openmosix-kernel-2.4.22-openmosixl.i686.rpm

 

Установка slave-ядра

Для начала сохраняем конфигурационный файл основ­ного ядра.

#  ср /usr/src/linux/.config /usr/src/linux/.config_master

 

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

Следующие опции нужно включить в ядро.

openMosix ---

openMosix process migration support openMosix File-System

Networking options --

TCP/IP networking

IP: kernel level auto-configuration IP: DHCP support IP: BOOTP support

File systems -----

/proc file system support

Network File Systems -

NFS file system support Provide NFSv3 client support Root file system on NFS

Но получившееся в результате ядро копируем в дру­гое место, а именно в каталог /tftpboot. Например:

#      ср /usr/src/linux/arch/i386/boot/bzImage J

/1ftpboot/1ts/vmlinuz-openmos ix-s1ave

И настраиваем его загрузку описанным выше спосо­бом. В принципе для этого не обязательно иметь установ­ленный полный пакет Itsp, а все необходимое создать вруч­ную, как это все сделать, можно найти в дополнительной литературе, указаной в конце статьи. Но все равно, для того чтобы избежать большого количества ручной работы, сове­тую в таком случае скачать файл ltsp_initrd_kit и ltsp_util_src (http://prdownloads.sourceforge.net/ltsp/ltspjnitrd_kit-3.0-11-i386.tgz и http://prdownloads.sourceforge.net/ltsp/ltsp_util_src-3.0.0-i386.tgz).

Все, что мы делали до сих пор, фактически не отличается от предыдущего варианта ядра. Чтобы заставить компьюте­ры работать в одной связке и обмениваться нагрузкой, необ­ходимо установить пакет openmosix-tools. Его также можно получить уже в виде перекомпилированных пакетов или все это проделать самому. Ничего особенного в компиляции нет:

#      ./configure -with-kerneldir=/usr/src/linux

Флагом -with-kerneldir указываем путь к исходным фай­лам ядра, по умолчанию /usr/src/linux-openmosix:

#      make && make install

Или строим пакет для rpm-based дистрибутивов:

#      rpmbuild -ta openmosix-tools-0.3.4.tar.gz

После окончания установки приступаем к настройке. Для начала в файле /etc/openmosix.map, определим узлы,

которые будут задействованы в кластере. Каждая строка в этом файле состоит из трех частей:

1       192.168.0.1 1

2       192.168.0.100 10

Первым идет openMosix node-number узла в указанном диапазоне, второй строкой - IP-адрес или имя, описанное в файле /etc/hosts, и третьей - количество узлов в этом диа­пазоне. В данном примере нашему серверу присвоен openMosix node-number 1, а десяти узлам в диапазоне

192.168.0.                                     100-192.168.0.109, номера 2-11. Если бы 1Р-ад- реса шли подряд, то можно было бы обойтись и одной строкой. После правки файла делаем его доступным и другим узлам.

#     ср /etc/openmosix.map /opt/ltsp/i386/etc/

Туда же копируем и бинарные файлы openmosix-tools.

#     ср /sbin/setpe /opt/ltsp/i386/sbin/

#     ср /bin/mosrun /opt/ltsp/i386/bin/

#     ср /bin/mosmon /opt/ltsp/i386/bin/

#     cp /bin/mosctl /opt/ltsp/i386/bin/

#     cp /bin/migrate /opt/ltsp/i386/bin/

#     cp /etc/rc.d/init.d/openmosix /qpt/ltsp/i386/etc/rc.openmosix

 

И запускаем openMosix:

#     /etc/init.d/openmosix start

После перезагрузки slave-узлов работу можно прокон­тролировать при помощи утилиты mosctl, введя номер нужного:

#     mosctl status 2

А в файле /etc/in ittab рекомендуется строку:

si::sysinit:/etc/rc.d/rc.sysinit

заменить на:

si::sysinit:/bin/mosrun -h /etc/rc.d/rc.sysinit

Чтобы избежать проблем при использовании сервиса SSH в файле /etc/rc.d/iпit.d/sshd в функции start(), добавь­те следующую линию:

test -f /proc/$$/lock && echo 0 > /proc/$$/lock

Вот и все. Остается пожелать успехов, и я надеюсь, эта статья кому-то поможет.

Кроме документации на сайтах проектов LTSP и openMosix советую просмотреть еще и следующие документы:

1.  Колисниченко Д. Загрузка по сети. - //журнал «Сис­темный администратор», №9(10), 2003 г. - 47-49 с.

2.  LTSP + openMosix: Integration How-To: http://home.onestop.net/jjensen/ltsp-om5r3c.html

3.  openMosix and Diskless Nodes: http://www.gentoo.org/doc/en/openmosix-howto.xml

 

 

СЕРГЕЙ ЯРЕМЧУК

 







На главную









Радио для всех
©
Научно-популярный образовательный ресурс


Создать сайт бесплатно