Различия между версиями 14 и 15
Версия 14 от 2008-09-16 22:04:16
Размер: 23484
Редактор: VsevolodKrishchenko
Комментарий:
Версия 15 от 2008-09-16 22:09:02
Размер: 23782
Редактор: VsevolodKrishchenko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 73: Строка 73:
Для установки TFTP-сервера требуется поставить соответствующий пакет: Для установки TFTP-сервера требуется поставить соответствующий пакет, разрешить службу и перезагрузить метасервер xinetd, через который и работает сервер tftp:
Строка 76: Строка 76:
# chkconfig tftp on
# service xinetd restart
Строка 78: Строка 80:
На сервере организуется каталог /var/lib/tftpboot, в который можно помещать файлы, которые будут скчиваться по протоколу tftp, как если бы они лежали в корне. Для того, чтобы получить эти файлы, требуется поставить пакет syslinux: На сервере при установке пакета tftp-server появляется каталог `/var/lib/tftpboot`, в который нужно поместить файлы, которые будут скачиваться по протоколу tftp, как если бы они лежали в корневой директории сервера. Для того, чтобы получить эти файлы, требуется поставить пакет syslinux:

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

Создание класса на основе терминального сервера

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

В состав ПСПО входит 4 дистрибутива: Мастер (большой), Юниор (средний), Лайт (маленький, для старых компьютеров) и Терминал-сервер для ситуации, когда одна машина современная, а остальные "никакие". Терминал-сервер поддерживает концепцию организации класса, при которой никакого администрирования на клиентских машинах не производится. Более того, на этих машинах можно даже не иметь винчестера, главное --- научить их загружаться через сеть. Это можно сделать путём сетевой загрузки, используя протокол PXE, а можно использовать загрузочный CD или USB-накопитель, лишь бы это в конечном счете приводило к загрузке операционной системы по сети.

Начало работы обычного компьютера выглядит примерно следующим образом. После загрузки собственно операционной системы на клиентских машинах запускается X-сервер (та часть графической оболочки, которая умеет рисовать на экране и работает с мышью и клавиатурой), а также средства для работы с локальными к флешкам и подобными устройствами. После запуска X-сервера эти машины подключаются по протколу взаимодействия графических подсистем, который называется XDMPC, к терминальному серверу, и запуск всех приложений происходит на терминальном сервере. Сервер должен быть достаточно хорошей машиной; скорее всего, любая современная машина подойдёт для класса из 10 компьютеров. На одного пользователя в классе обычно хватает 256 Мб памяти. Если вы совсем ограничены в средствах, можно считать необъожимый объем памяти так: 256 Мб на сам сервер + 128 Мб на каждый терминальный сеанс. Восемь машин при гигабайте памяти на сервере работают достаточно легко. Если шестнадцать машин работают на 2 Гб памяти, то узким местом системы будет уже с быстродействие дисковой подсистемы. Возможный вариант в этом случае -- машина с двумя винчестерами, которые работают, как один большой (raid 0). Другой вариант -- увеличить объём памяти и, соответственно, дискового кэша, чтобы больше данных находилось в оперативной памяти.

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

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

Более подробно о терминальном сервере можно прочитать здесь;

Создание класса на основе самостоятельных компьютеров

По ряду причин вариант использования терминального сервере не рассматривается как основной при использовании ПСПО, поэтому мы возвращаемся к ситуации, когда необходимо, чтобы на локальных машинах была установлена операционная система, причем единообразным образом. Для этого можно использовать автоматизированную сетевую установку системы с сервера, где развернут нужный дистрибутив, например, Линукс Мастер (отметим, что здесь и далее описываются настройки для ALT Linux).

Что нужно для того, чтобы происходила сетевая установка? Вначале нужно организовать сетевую загрузку машины. Для этого нужно, прежде всего, установить службу dhcpd (Dynamic Host Configuring Protocol Daemon), пакет называется dhcp-server. Он есть в дистрибутиве Мастер, подробнее процесс описан в  Настройка DHCP-сервера.

Dynamic Host Configuring Protocol в переводе с английского --- "протокол динамической настройки компьютера". При включении компьютера по определённым правилам ему по сети передается набор настроек. Вообще говоря, этот протокол очень сложен, он позволяет передавать сотни настроек разного уровня, в том числе и с точки зрения сетевых протоколов. Например, раздача IP может быть организована динамически (каждому новому компьютеру будет выдаваться очередной IP адрес из набора) --- если вас не очень волнует, что в вашу сеть включится кто-то лишний, либо по MAC-адресам (каждому MAC-адресу соответствует свой жёстко определённый IP). Бывают и другие варианты, всё зависит от того, насколько возможно решить задачу административным путём. В любом случае dhcp не помешает в классе, даже если не планируется сетевая загрузка, в особенности, если в учреждении не один сегмент сети.

Конфигурационный файл dhcpd лежит в /etc/dhcpd.conf:

subnet 10.0.2.0 netmask 255.255.255.0 {}

subnet 172.16.0.0 netmask 255.255.255.0 {
        option routers                  172.16.0.1;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      172.16.0.1;

        range dynamic-bootp 172.16.0.101 172.16.0.199;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "pxelinux.0";
        next-server 172.16.0.1;
}

Этот пример предполагает, что у сервера есть два сетевых интерфейса: внешний в сети 10.0.2.0/24 и внутренний с адресом 172.16.0.1. Предполагаетс, что на сервере развернут ретранcлятор DNS-запросов 172.16.0.1 ( Служба DNS (Bind)), если его нет, следует указать адрес DNS-сервера провайдера. Обратим внимание на две вещи: все сети, к которым подключена машина, должны быть описаны. Дело в том, что dhcpd - капризный демон, и если он видит сеть, которая в нём не описана, он отказывается работать. И второе --- в одной локальной сети должен быть только один DHCP-сервер.

Какие настройки умеет отдавать DHCP-сервер:

  • IP-адрес; как уже было сказано, можно настроить либо динамическую выдачу IP-адреса, либо написать "машина такая-то" (MAC-адрес) и указать, какой IP выдавать ему;
  • маршрутизатор по умолчанию (поле option routers);

  • сервер DNS (поле option domain-name-servers), который преобразует IP-адреса в доменные имена и обратно;

  • маску сети (поле option subnet-mask).

  • и другие, например имя домена.

Если выпустить из внимания две другие настройки, filename и next-server, которые нужны именно для сетевой загрузки и будут рассмотрены позже, то машина будет раздавать всем компьютерам в локальной сети адреса из указанного в поле range dynamic-bootp диапазона. Любая машина с установленным ПСПО для автоматической настройки сети запускает клиент dhcp, который называется dhcpcd.

Настройка сетевой загрузки

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

Итак, служба протокола DHCP настроена. Есть ещё две настройки, связанных с сетевой загрузкой операционной системы: во-первых, для ее работы необходима поддержка сетевой загрузки на клиентах, и во-вторых, для нее необходима передача файлов начальной загрузки по протоколу TFTP.

Как правило, о способности клиента загрузиться по сети свидетельствуют слова в настройках BIOS о том, что загрузочным устройством является сеть, int 18 или 19, либо на сетевой карте есть плата BootROM, то есть прошивка для сетевой загрузки, и при включении компьютера с такой сетевой картой вам говорят: "нажмите Alt+B, Shift+F10 или что-то чтобы настроить параметры сетевой загрузки". В этой настройке сетевой загрузки может быть много вариантов, правильно выбирать вариант под названием "PXE". Протокол PXE включает в себя получение настроек по DHCP и некоторые другие возможности.

Клиенты, поддерживающие протокол PXE, должны быть подключены к локальной сети с работающим DHCP-сервером, и на сервере (указанном в поле next-server) должен быть специальный демон, называемый TFTP-сервер. TFTP (Trivial File Transfer Protocol) --- это специальный протокол передачи файлов, крайне упрощённый, чтобы его клиентскую часть (программу, которая умеет скачивать файлы согласно этому протоколу) можно было уместить в памяти сетевой карты. Собственно, BootROM и содержит программу, записанная в ПЗУ сетевой карты, которая загружается в оперативную память и занимается ровно одной вещью: по протоколу PXE получает настройки по DHCP/BOOTP, потом сообразно этим настройкам получает информацию о том, откуда брать специальный файл --- загрузчик, скачивает его, загружает в память и запускает. В отличие от ситуации, когда передаются только настройки сети, в протокол PXE входит стадия скачивания некой программы и запуска её. Всё это делает прошивка сетевой карты.

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

Для установки TFTP-сервера требуется поставить соответствующий пакет, разрешить службу и перезагрузить метасервер xinetd, через который и работает сервер tftp:

# apt-get install tftp-server
# chkconfig tftp on
# service xinetd restart

На сервере при установке пакета tftp-server появляется каталог /var/lib/tftpboot, в который нужно поместить файлы, которые будут скачиваться по протоколу tftp, как если бы они лежали в корневой директории сервера. Для того, чтобы получить эти файлы, требуется поставить пакет syslinux:

# apt-get install syslinux

Syslinux --- пакет загрузчиков, который позволяет загружать Linux с разных ностителей, в частности, в нем есть загрузчик pxelinux и некоторые другие программы, предназначенные для сетевой загрузки.

Нас интересует содержимое каталога /usr/lib/syslinux/:

$ ls /usr/lib/syslinux/
chain.c32      dmitest.c32         mboot.c32  pcitest.c32   vesamenu.c32
com32          ethersel.c32        mbr.bin    pxelinux.0
copybs.com     isolinux-debug.bin  memdisk    syslinux.com
cpuidtest.c32  isolinux.bin        menu.c32   syslinux.exe

Здесь мы видим файлы нескольких форматов: .bin, .com, .c32, .0 .exe, которые предназначены для загрузки в разные среды. В частности, те, которые загружаются прямо в сетевую карточку называются .0 и .c32.

Файл memdisk --- очень хорошая штука, позволяет по сети подгрузить memdisk, а к нему образ дискеты, то есть сэмулировать загрузку с дискетки на машине, где её нет. Ещё лектор использовал menu и vesamenu. Что такое menu - файл syslinux.conf (похожий на lilo.conf) можно подгрузить по сети, чтобы пользователь при сетевой загрузке выбрал, какой вариант он хочет загрузить. То есть, подгрузить по сети сначала меню, а потом уже настоящий загрузчик. Если же сетевая карта поддерживает vbe1, то можно сделать графическое меню с помощью vesamenu.

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

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

Рассмотрим конфигурационный файл /var/lib/tftpboot/pxelinux.cfg/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. Тут есть один хак: если включён NumLock, pxelinux будет ждать, а если выключен --- нет. Дальше идут настройки для конкретной загрузки. label --- это имя варианта загрузки. Его, кстати, можно в ответ на подсказку написать --- не то, которое по умолчанию, а какое-то. Дальше нужно указать, как называется ядро и какие у этого ядра параметры, параметр initrd=файл разбирается загручиком syslinux, он загружает этот файл --- стартовый виртуальный диск, остальные параметры, которые он не понимает, он передаёт ядру. Всё это документированно на сайте freesourсe.info(конкретную ссылку?).

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


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

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

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

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

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

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

Level

Maintainer

Start date

End date

55

1

1

1

1

ConstantinYershow, VladimirLysikov, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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