Различия между версиями 2 и 3
Версия 2 от 2008-08-06 11:29:25
Размер: 20942
Редактор: ConstantinYershow
Комментарий:
Версия 3 от 2008-08-06 11:32:38
Размер: 20944
Редактор: ConstantinYershow
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 32: Строка 32:

Сетевая загрузка

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

Отступление: терминальный сервер

Терминал-сервер. Лектор вспоминает его, просто чтобы его упомянуть. В состав ПСПО входит 4 дистрибутива: мастер (большой), юниор (средний), лайт (маленький, для дохлых компьютеров) и терминал-сервер для ситуации, когда одна машина нормальная, а остальные никакие. Терминал-сервер содержит в себе концепцию класса, но специфическую, когда никакого администрирования на клиентских машинах не производится, более того, на локальных машинах можно даже не иметь винчестера, главное - научить их загружаться через сеть. Это можно сделать путём сетевой загрузки, по протоколу PXE, а можно подсунуть дискету/сидюк, лишь бы это приводило к тому, что они хотят загружаться из сети. Далее на клиентских машинах разворачивается только х-сервер (та часть графической оболочки, которая умеет рисовать и работает с мышью и клавиатурой) и больше ничего, за исключением всяких хитростей по доступу к флешкам и т.п. После чего эти машины подключаются по протколу взаимодействия графических подсистем, который называется xdmcp, к серверу, и запуск всех приложений происходит на сервере. Сервер должен быть хорошей машиной; лектор полагает, что любая современная машина подойдёт для класса из 10 компьютеров. 256 мб памяти на одного пользователя (полноценный развесистый терминальный сеанс) хватает с запасом. Если вы ограничены в средствах, считается так: 256 мб на сам сервер + 128 мб на каждый терминальный сеанс. 8 машин на гигабайте работают легко, 10 машин на гигабайте работают уже с некоим скрипом. Если 16 машин работают на 2 гб, начинаются проблемы с быстродействием дисковой подсистемы, когда у вас во столько же раз больше процессов, во сколько раз больше пользователей, и каждый из них чего-то в каком-то месте хочет. Оптимальный вариант - машина с двумя винчестерами, которые работают как один большой, и, соответственно, в два раза быстрее. Другой вариант - увеличить объём памяти и, соответственно, дискового кэша, чтобы всё это в памяти болталось. Чем хорош терминальный сервер - вы не администрируете локальные машины в принципе. Это - просто железяка, она включается и работает. Когда-нибудь в будущем вы воовще можете их выбросить и купить не полноценные компьютеры, а так называемые терминалы. У которых есть монитор (хороший), клавиатура (тоже хорошая) и сисблок без винчестера, с минимальной памятью, лишь бы он работал. Администрирование сокращается во столько раз, во сколько раз у вас меньше компьютеров: ну, сгорит один, из запасника можно достать другой, воткнуть - и всё продолжит работать. (конец отступления)

Мы возвращаемся к ситуации, когда необходимо, чтобы на локальных машинах была установлена операционная система. Что нужно для того, чтобы происходила сетевая установка (написанное здесь специфично для альтлинукса): нужно организовать сетевую загрузку машины. Для этого нужно, прежде всего, установить DHCPD (Dynamic Host Configuring Protocol Daemon), пакет называется dhcp-server. Он есть в дистрибутиве "мастер". Dynamic Host Configuring Protocol значит - "протокол динамической настройки компьютера". По включении компьютера по определённым правилам вы ему скармливаете набор настроек. Вообще говоря, пртокол очень сложный, он позволяет передавать сотни настроек, причём настройки разного уровня, в том числе и с точки зрения сетевых протоколов. Например, раздача IP может быть организована динамически (каждому новому компьютеру будет выдаваться очередной IP адрес из набора) - если вас не очень волнует, что в вашу сеть включится кто-то лишний, либо по MAC-адресам (каждому MAC-адресу соответствует свой жёстко определённый IPшник). Бывают и другие варианты, всё зависит от того, насколько возможно решить задачу административным путём. В любом случае dhcp не помешает в классе. Даже если вы не планируете сетевую загрузку, в особенности, если в вашем учреждении не один сегмент сети и вы хотите, чтобы с пользовательской машины был доступ не только до сервера, но и куда-то дальше, было бы неплохо настроить на них IP-адреса. Либо это делается руками при установке, либо с помощью DHCP.

Конфигурационный файл dhcpd лежит в /etc/dhcpd.conf. Обратим внимание на две вещи: все сети, которыев вашей машине есть, должны быть описаны. Дело в том, что DHCPD - капризный демон, если он видит сеть, которая в нём не описана, отказывается работать. Кстати, в одной локальной сети должен быть только один DHCP сервер. Какие настройки он умеет отдавать?

  • IP-адрес. В данном случае мы видим пример динамической отдачи IP-адреса. Другой вариант - написать "машина такая-то" (указывать MAC-адрес) и указать, какой ip выдавать ему.
  • Маршрутизатор по умолчанию
  • Сервер dns, он называется неймсервер, служба, которая преобразует IP-адреса в доменные имена и обратно, она устроена как распределённая база данных.
  • Все настройки вроде сетевой маски.
  • Имя домена по умолчанию.

Если выпустить из внимания две другие настройки, filename и nextserver, которые нужны именно для сетевой загрузки, то машина будет раздавать всем компьютерам в локальной сети адреса из указанного диапазона. Любая машина с установленным альтом, если ей сказать "настроить сеть автоматически", запускет клиент к dhcp, который назвается dhcpcd.

Возвращаемся к настройке. Итак, dhcp настроен. Есть ещё две волшебных настройки, связанных с сетевой загрузкой: чтобы она работала (то есть передача по сети не только каких-то настроек, но и файлов на компьютер), со стороны компьютеров необходимо, чтобы в них работала сетевая загрузка. Как правило, об этом свидетельствуют слова в настройках биоса о том, что загрузочным устройством является сеть, int 18 или там 19, либо вы покупаете сетевую карту, на которой есть бутром, то есть прошивка для сетевой загрузки. При включении компьютера с такой сетевой картой вам говорят: "нажмите, там, Alt+B, Shift+F10 или какое-то ещё волшебное сочетание, чтобы настроить параметры сетевой загрузки". В этй сетевой загрузке может быть много вариантов, правильно выбирать PXE. Оно включает в себя и получение настроек по dhcp, и ещё кое-чего, о чём будет сказано ниже. Итак, чтобы работали сетевая загрузка и установка, нужно, чтобы на клиентах поддерживался протокол pxe, они должны быть подключены к локальной сети и к серверу, где есть dhcp, и на сервере должен быть специальный демон, называемый tftp (trivial file transfer potocol) сервер (специальный протокол передачи файлов, крайне упрощённый, чтобы его клиентскую часть (то есть программу, которая умеет скачивать файлы согласно этому протоколу) можно было запихать в память сетевой карточки). Собственно, пресловутый бутром и есть программа, записанная в пзу сетевой карты, которая загружается в оперативную память и заниимается ровно одной вещью: по протоколу pxe получает настройки по dhcp/bootp, потом сообразно этим настройкам получает информацию о том, откуда брать специальный файл - загрузчик, скачивает его, загружает в память и запускает его. В отличие от ситуации, когда у вас передаётся только сетевая настройка, в протокол pxe входит стадия скачивания некое программы и запуска её. Это всё делает прошивка в сетевой карте. На сервере должен быть некий демон, tftp, которому и подкладывается эта специальная программа. Тем самым организёется каталог /var/lib/tftp/boot, в который можно помещать файлы, кторые будут скчиваться по протоколу tftp, как если бы они лежали в корне. Дальше есть множество разных вариантов. Здесь требуется поставить пакет syslinux. Лектор напоминает, пакет syslinux - пакет загрузчиков, который позволяет загружать linux с разных ностителей, в частности, загрузчик pxelinux, и некоторые программы, которые сопутствуют этому делу.

Посмотрим некоторые из них. Нас интересует содержимое каталога /usr/lib/syslinux/. Тут есть файлы нескольких форматов: .bin, .com, .c32, .0 ... которые предназначены для загрузки в разные среды. В частности, те, которые загружаются прямо в сетевую карточку называются .0 и .c32. Есть документация, её формат назыается .doc, но если вы думаете, что она в формате microsoft document, вы ошибаетесь. Memdisk - очень хорошая штука, позволяет по сети подгрузить memdisk, а к нему образ дискеты, то есть, фактически сэмулировать загрузку с дискетки на машине, где её нет. Ещё лектор использовал menu и vesamenu. Что такое menu - файл syslinux.conf (похожий на lilo.conf) можно подгрузить по сети, чтобы пользователь при сетевой загрузке выбрал, какой вариант он хочет загрузить. То есть, подгрузить по сети сначала меню, а потом уже настоящую сетевую загрузку. Если же сетевая карта поддерживает vbe1, то можно сделать графическое меню с разными красивостями. Вот это и есть vesamenu.

Нас, конечно, будет в первую очередь интересовать загручзчик pxelinux.0. В терминологии последовательности загрузки это - вторичный загрузчик, то есть тот, который должен загружаться не из пзу, а непосредственно с устройства. Основная его задача - подгрузить откуда-то ядро и стартовый виртуальный диск. Загрузка этих двух файлов - это то, с чего начитнается загрузка linux. Ядро - это ядро, а в стартовом виртуальном диске находится очень маленький линукс, который содержит все модули, нужные для дальнейшей загрузки и работы системы. У него (pxelinux) есть конфигурационный файл, загружаемый прежде всего, в котором написано, что грузить дальше. В нём можно сделать несколько разных вариантов выбора.

Для удобства работы с сетью, pxelinux.0 загружает конфигурационный файл по определённым правилам. pxelinux сначала пытается загрузить конфигурационный файл, который по имени совпадает с шестнадцатеричным представлением полученного по pxe IP-адреса. Если на вашей машине это не работает, значит, бутром у вас просто выключен. Зачем так сделано? Есть жёсткая привязка к mac-адресу машины; для каждой машины можно иметь собственную настройку, есть привязка к IP адресу компьютера или целой сети, и можно машины с одними IP адресами загружать по одной конфигурации, а другие, у которых сеть другая, по другой конфигурации.

Рассмотрим конфигурационный файл default.

timeout 0
prompt 1
default install

label install
 kernel install/vmlinuz
 append initrd=install/full.cz fastboot automatic=method:nfs,network:dhcp,server:10.30.2.1,directory:/srv/boot/lite ai live stagename=altinst

Синтаксис слегка замороченный, но ничего сложного нет. prompt означает, ожидать ли подсказки, timeout 0 означает ждать, пока пользователь не нажмёт enter. Тут есть один хак: если включён num lock, он будет ждать, а если выключен - нет. Дальше идут настройки для конкретной загрузки. label означает некое имя загрузки. Его, кстати, можно в ответ на подсказку написать - не то, которое по умолчанию, а какое-то. Дальше нужно указать, как называется ядро. Дальше нам нужно указать, какие у этого ядра параметры, параметр initrd=файл - его разбирает сам syslinux, он загружает этот файл тоже, потому что это стартовый виртуальный диск, остальные параметры, которые он не понимает, он передаёт ядру. Всё это документированно на сайте freesourseinfo.

Как сделать установку на конкретный диапазон: создать соответствующий конфигурационный файл на конкретный диапазон IP адресов (с соответствующим именем) рядом с default'ом. На уровне dhcp можно выделить диапазон, внутри кторого вы будете отдавать pxe и другой диапазон, внутри кторого вы не будете отдавать pxe.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

20

1

1

1

1

ConstantinYershow, VladimirLysikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080722/02NetBoot (последним исправлял пользователь eSyr 2009-03-23 02:03:43)