wiki:od:rpxe - Wiki на Slackware.su

Перевел: Graf
Дата перевода: октябрь 2016 г.
Оригинал: http://slackware.osuosl.org/slackware-14.2/usb-and-pxe-installers/README_PXE.TXT

PXE: Установка Slackware по сети


Когда придет время для установки Slackware на ваш компьютер, вы обнаружите ограниченное число вариантов расположения установочных пакетов Slackware. Либо это (не) официальный Slackware CDROM или DVD, либо уже существующий раздел жесткого диска с предварительно скопированными на него пакетами перед началом процедуры установки, либо это пакеты скачанные с сетевого сервера ( при помощи NFS, HTTP или FTP-протокола).

Количество доступных опций для загрузки Slackware инсталлятора точно так же ограничено: либо вы загрузите компьютер с первого загрузочного CD диска из множества Slackware CD, либо с DVD, либо с использованием USB накопителя. Есть даже LOADLIN, DOS на основе Linux загрузчика, но давайте не будем касаться прошлого, тем более с Slackware 12,0 отказались от загрузочной дискеты в целом.

Но что делать, если у вашего компьютера нет CD-ROM привода и он не загружаться с USB накопителя? Многие известные на рынке бренды ПК (например, ультра-портативные ноутбуки), которые не в состоянии установить Slackware традиционным способом. Тем не менее,эти машины обычно оснащены сетевыми устройствами, такими как Bluetooth, беспроводными и проводными сетевыми картами. Как решить эту дилемму? Купить внешний CD привод?

Есть другой способ загрузки компьютера, который поддерживает установщик Slackware. То есть «сетевая загрузка». Сетевая загрузка, или PXE загрузка, должна поддерживаться вашей сетевой картой и BIOS. Кроме того, вместо установки пакетов из Slackware CD или DVD, вам понадобится сетевой сервер, который сможет указать вашему компьютеру как получить эти пакеты из сети.

В этом README, я покажу вам, как выполнить установку, которая использует сеть в качестве носителя, с сервера в локальной сети, который содержит ядро и корневую файловую систему (которая содержит настройки программы), а также все пакеты Slackware. Это означает, что нет необходимости для дискет или компакт-дисков.

Будьте осторожны: установка всего этого не тривиальна, и вам необходимо знаний Linux большее, чем на уровне начинающего, но этот текст и сопровождающие сценарии, например, в последнем разделе должны помочь вам и будут работать, даже если вы не вполне понимаете, что происходит :-)

PXE - объяснение загрузки

Обычно, метод загрузки компьютера по сети называется PXE или «Preboot Execution Environment». Если вы хотите, чтобы ваш компьютер загружался с PXE, он должен иметь сетевую карту с PXE-совместимой прошивкой, и BIOS, который поддерживает сетевую загрузку. Большинство современных сетевых карт (и компьютеров) продаются на рынке уже с такой поддержкой. При загрузке компьютера по сети, сетевая карта загружает загрузчик, ядро и файловую систему при этом, любая операционная система, которая была установлена на компьютере до этого, останется нетронутой. Вы можете, так же хорошо, загрузиться в бездисковых компьютерах с помощью PXE - на самом деле это работает как тонкие клиенты и Linux Terminal Server Project.

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

Этапы установки Slackware PXE

Процесс инсталляции Slackware по сети выглядит примерно так:

  1. Вы запускаете компьютер на котором собираетесь принимать Slackware;
  2. При загрузке вы должны быть уверены что выбрали network boot в BIOS или активизировали custom startup sequence, войдя в boot меню нажатием функциональной клавиши «F12», или заранее выбрав network boot как первую опцию в BIOS.
  3. Когда компьютер загружается, сетевая карта активирует свой PXE код и пытается контактировать с PXE сервером. Когда такой сервер существует в сети он говорит карте где загрузить часть загружаемого кода, ядро ОС (Ядро Slackware Linux) и первоначальный виртуальный диск (initrd -сжатый образ корневой файловой системы где находится программы установки, библиотеки и хранящиеся в них модули ядра). Вы увидите страницу полную непонятных сообщений, таких как карту трансляций по локальной сети и зондирование всевозможных конфигураций, кандидатов для загрузки;
  4. Если желаемый PXE сервер найден, сетевая карта вашего компьютера скачает ядро и initrd, загрузить ядро Linux, распакует initrd в виртуальный диск и запустит последовательность инициализации инсталлятора Slackware. Это будет уже знакомая территория и будет выглядеть так, как-будто вы загрузились с CDROM'а или дискеты. Но самое интересное еще не закончилось .. Поскольку мы загрузили компьютер используя код который не берет начало с нашего компьютера, мы также должны получить оставшиеся данные - пакеты Slackware - из сети. Просто, свежезагруженное ядро не имеет никакого представления как оно загрузилось в компьютер: вы должны будете инициализировать сеть снова и снова. Микропрограмма PXE сетевой карты выполнила свою работу и больше не участвует в картине. Итак:
  5. Нам нужно загрузить драйвер ядра для нашей сетевой карты и найти сетевой сервер, который содержит дерево пакетов Slackware (так называемый «источник»). В настоящее время, вы можете выбрать установку с NFS-сервера, сервера Samba или HTTP/FTP-сервера. Начиная установку и выбор одного из этих сетевых источников пакетов, вы получите возможность настройки сетевой карты. Если ваша сетевая карта не поддерживается ни одним из доступных драйверов, вам не повезло и придется пересмотреть ваши варианты.
  6. С этого момента установка продолжится как обычно, при условии, что Вы выберите - «Install from NFS (Network File System)»,«Install from FTP/HTTP server» или «Install from Samba share» в качестве источника Slackware пакетов.

Требования к рабочей станции

Как было сказано до этого, требования для компьютера на который вы хотите установить Slackware, следующие:

  1. сетевая карта (не беспроводная) с микрокодом PXE, поддерживаемая Slackware
  2. BIOS компьютера позволяющий загрузку из сети.

Больше никаких требований не нужно для инсталляции из сети, кроме тех которые уже отвечают возможности инсталлировать и запускать Slackware.

Требования к серверу

Это интересная часть (поскольку по моему мнению многие люди считают это черной магией). PXE сервер на самом деле смесь нескольких компонентов. Нам необходимо:

  1. Служба, которая понимает протокол BOOTP. BOOTP является сетевым протоколом, нечто вроде DHCP, и он используется PXE прошивкой для трансляции в сети своего желания найти подходящие серверы для скачивания загрузочного кода. Сервер DHCP - пакет, который является частью Slackware, удовлетворяет этому требованию, так как использует BOOTP, а за одно и DHCP. Эти пакеты «DHCPD» и «Dnsmasq»- выберите тот, который вы захотите.
  2. Служба закачки для кода начальной загрузки. Для этого нужен TFTP (Trivial File Transfer Protocol) сервер. Slackware поставляется с реализацией сервера TFTP называемой «tftpd-hpa», это то, что нам нужно.
  3. И для установки Slackware необходим NFS, HTTP, FTP или Samba сервер,потому что мы должны выполнить сетевую установку. Мы можем использовать стоковые (поставляемые со Slackware) NFS, HTTP, FTP или Samba сервера для этого.

Конфигурирование BOOTP/DHCP/TFTP/NFS служб

Мы рассмотрим, как настроить DHCP, TFTP и NFS службы на Slackware компьютере так, чтобы они работали вместе в качестве сервера PXE. В качестве упражнения для пользователя, остается узнать, как настроить Apache (HTTP) или ProFTPD (FTP) в случае установки через HTTP или FTP. В более поздних примерах, я буду считать, что следующая ссылка является действительной для вашего HTTP/FTP сервера:

http://192.168.0.1/mirror/slackware/slackware-13.37
ftp://192.168.0.1/pub/mirror/slackware/slackware-13.37 

Сервер будет запускать все необходимые службы, то есть будет выступает в качестве DNS, DHCP, TFTP и NFS (или HTTP/FTP/Samba) сервера в локальной сети. Если вы решили отделить DHCP и TFTP службы на два разных сервера (не имеет значения, где NFS/HTTP/FTP/Samba сервер работает), я включил информацию о том, что вы должны знать в следующий раздел, посвященный DHCP.

Для простоты обучения, я сделаю несколько предположений. Эти предположения нашли свое отражение в IP-адресах и диапазонах адресов, которые я использую в моих примерах, в именах каталогов, компьютеров и сетевых доменов. Это означает, что если вы используете примеры, приведенные в этой статье, вы должны убедиться, что замените все вхождения этих особенностей на значения, которые относятся к вашей сети.

  • Наша экспериментальная сеть использует IP адреса в диапазоне от 192.168.0.0 до 192.168.0.254. Это эквивалентно сетевому диапазону 192.168.0.0/24 или 192.168.0.0/255.255.255.0.
  • Наш сетевой сервер использует IP адрес 192.168.0.1 и шлюз по умолчанию 192.168.0.10. Сервер и шлюз могут быть (но не обязательно) одной и той же физической машиной.
  • Диапазон IP адресов, который DHCP сервер будет давать для временного использования компьютерам на которых разрешен DHCP/BOOTP от 192.168.0.50 до 192.168.0.100.Это оставляет достаточно места, чтобы иметь много машин с фиксированными IP-адресами, если вы нуждаетесь в них.
  • DNS домен будет «my.lan».
  • Каталоги используются следующим образом: Верхний уровень полного дерева каталогов Slackware 13.37 (за исключением исходного кода, если у вас мало места на диске) является «/mirror/slackware/slackware-13.37»
  • Каталог, в котором мы будем хранить загрузочные файлы на сервер TFTP является «/tftpboot/slackware-13.37»

DHCP

Скорее всего у вас уже есть DHCP сервер запущенный в сети. Вы можете попробовать изменить его конфигурацию таким образом, что он будет выполнять то что мы хотим или, если это невозможно (например, потому что DHCP сервер запущен на DSL/Cable маршрутизаторе) вы можете остановить (запретить) его и настроить Slackware DHCP сервер для вашей сети с более расширенной функциональностью.

Slackware включает пакет сервера ISC DHCP (dhcpd). Два примера конфигурационных файлов /etc/dhcpd.conf для этого DHCP сервера включены в последний раздел статьи.

Если вы не хотите утруждаться сложными конфигурациями и хотите быстрого решения, которое просто будет работать в вашей сети, используйте первый пример файла /etc/dhcpd.conf также как и стартовый скрипт /etc/rc.d/rc.dhcpd и вы можете поднять и запустить сервер за минуты. Это не требует редактирования файлов, примеры работают прямо из коробки.

Если вы знаете что вы делаете и понимаете (более или менее) как работает DHCP сервер, вы можете взглянуть на второй, более сложный, /etc/dhcpd.conf пример, который имеет больше свойств и предлагает управление над компьютерами, которым позволено выполнять сетевую загрузку.

Остальная часть этой статьи посвящена настройке со сложной конфигурацией DHCP.

По умолчанию, нам не следует позволять сетевую загрузку в нашей сети (это безопасный курс - представьте компьютер который выполняет непреднамеренную загрузку с сети и вдруг обнаруживает себя с запущенным инсталлятором Slackware!). В файл конфигурации /etc/dhcpd.conf мы добавим секцию «group» в которой сможем добавить те компьютеры, которым позволительно загружаться с сети; типичный оператор host для компьютера выглядит так:

 host t43 { 
     hardware ethernet 00;12:34:56:78:9a;
     fixed-address 192.168.0.3; 
 }

Ничего показательного; компьютер определяется по аппаратному адресу (Mac-адрес) сетевой карты и мы позволяем DHCP серверу всегда назначать один и тот же IP-адрес. Все параметры конкретной загрузки содержатся в блоке «group» и выглядят так:

 group {
     allow bootp;
     next-server 192.168.0.1;
     use-host-decl-names on;
     if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
 	filename "/slackware-13.37/pxelinux.0";
     }
     host ABC {
     ...
     }
     
     host XYZ {
     ...
     }
 } 

Это позволяет серверу DHCP обнаружить клиентов со сетевой загрузкой, которые используют PXE и обслужить их, PXElinux загрузчик мы делаем доступными в «/slackware-13.37/pxelinux.0». Что делает этот загрузчик, будет объяснено ниже по статье.

Параметр next-server содержит IP-адрес TFTP сервера. Это, часто, идентично IP-адресу DHCP сервера, но если у вас есть TFTP сервер который работает на другом IP-адресе, отличным от DHCP сервера (т.е. работают на различных серверах), то вместо этого вы можете добавить удаленный IP-адрес, подобный этому (предположим что TFTP сервер работает на адресе 192.168.0.254):

 next-server 192.168.0.254;

Если вы используете версию программы «ISC» dhcpd > = 3.0.3, то добавление строки «next-server <ipaddress>;» является обязательным. Для старых релизов это требуется, только тогда, когда TFTP и DHCP серверы на самом деле имеют различные адреса.

Если вы не укажите адрес «next-server», то поле данных «siaddr» возвращается клиенту установленным на ноль, где потом оно, по умолчанию, будет с таким же IP-адресом, как и у DHCP сервера (который, очень часто, может быть и IP-адресом TFTP сервера). Клиент PXE использует 'siaddr' поле, чтобы определить IP-адрес сервера TFTP, таким образом PXE загрузка остановится в точке поиска сервера TFTP.

Если вы уже используете «dnsmasq» как ваш DNS/DHCP сервер, тогда вышеуказанные инструкции для ISC DHCP сервера не применимы к вашей установке. Вместо этого, вы должны настроить dnsmasq со следующими эквивалентными параметрами:

dnsmasq --dhcp-boot=/slackware-13.37/pxelinux.0,"192.168.0.1",192.168.0.1 

или добавить строку в /etc/dnsmasq.conf:

dhcp-boot=/slackware-13.37/pxelinux.0,"192.168.0.1",192.168.0.1

IP-адрес «192.168.0.1» встречается дважды; они всегда должны быть идентичными, и должны быть адресом сервера TFTP.

TFTP

Сервис tftpd управляется inetd. Разрешите строку tftpd в /etc/inetd.conf удалением символа комментария в начале строки:

tftp  dgram  udp  wait  root  /usr/sbin/in.tftpd  in.tftpd -v -s /tftpboot -r blksize

и перезагрузите inetd:

# /etc/rc.d/rc.inetd restart

Нам нужно создать каталог /tftpboot где будут содержаться файлы начальной загрузки, которые tftpd будет обслуживать:

# mkdir /tftboot

Этот будет корневым безопасным каталогом (параметр -s /tftpboot в /etc/inetd.conf). Сервис tftpd теперь настроен и работает. Нам просто нужно заполнить этот корневой католог, но я оставлю это для другого параграфа.

В качестве альтернативы in.tftpd, вы можете использовать встроенный TFTP сервер Dnsmasq. Если вы уже используете Dnsmasq в качестве сервера DHCP, это имело бы смысл. Добавить два следующие параметры командной строки для Dnsmasq :

--enable-tftp --tftp-root=/tftpboot

или добавьте две следующие строчки в /etc/dnsmasq.conf :

enable-tftp
tftp-root=/tftpboot

NFS

Вам нужно экспортировать каталог, где вы храните ваши локальные копии пакетов Slackware, например, добавив следующее в /etc/exports:

/mirror/slackware      192.168.0.0/24(ro,sync,insecure,all_squash,subtree_check)

Если ваши пакеты Slackware находятся где-то ниже /mirror/Slackware (как в нашем примере), то вышеуказанные строки делают это дерево каталогов доступным (для чтения) NFS клиентам в локальной сети определенным в диапазоне 192.168.0.0/24. Если вы добавили эту строку в файл /etc/exports, то вам необходимо перезапустить сервер NFS:

# /etc/rc.d/rc.nfsd restart 

Для простоты:

Оставшаяся часть этой главы является списком шагов, необходимых, для того, чтобы это просто работало, не имея опыта работы с NFS и не имея такого работающего сервера на данный момент (помните, что любые пути/IP-адреса, используемые здесь и относящиеся к нашей сети, используемой в качестве примера - нужно откорректировать по мере необходимости):

  • Создайте файл /etc/exports со следующим содержимым:
 /mirror/slackware 	192.168.0.0/24(ro,sync,insecure,all_squash)
  • Каталог, указанный в /etc/exports, является целевым, куда нужно скопировать (или переместить) файлы Slackware : каталог «/mirror/slackware/slackware-13.37» должен быть корневым в дереве Slackware,содержащим такие файлы, как ChangeLog.txt и подкаталоги, как «Slackware» (или «slackware64», если вы работаете с 64-битной версией) и «kermels».
  • Сделайте исполняемым скрипт запуска NFS сервера, и таким образом он будет стартовать при каждой загрузке:
# chmod +x /etc/rc.d/rc.nfsd
  • Запустите NFS сервер (таким образом вы не должны уже перезагружаться):
# /etc/rc.d/rc.nfsd start

Конфигурация PXELinux

В предыдущем пункте описано в общих терминах, как настроить службу TFTP, но он не рассказывает вам, как заполнить структуру каталога TFTP. Сетевые клиенты, которые загружают файлы с сервера TFTP будут получать файлы, которые есть в этой структуре каталогов.

PXELinux похож на isolinux, который является загрузчиком используемым для загрузочного Slackware CDROM №1. На самом деле обе программы написаны одним и тем же автором и доступны из пакета syslinux.

Структура каталога tftp

Как видно из раздела о DHCP, сервер DHCP был настроен так, что предлагал любому заинтересованному клиенту PXE (т.е. компьютеру с сетевой картой) файл «/slackware-13.37/pxelinux.0» - этот файл содержит загрузочный код, который скачавается первым и запускает ядро Linux, а затем загружает и извлекает корневую файловую систему, содержащую программу установки и все остальное, что нам нужно. Файл «/slackware-13.37/pxelinux.0» указывает путь относительно корня сервера TFTP. PXE клиент будет использовать TFTP протокол для получения этого загрузчика.

Итак, что мы сделаем:
создадим каталог «Slackware-13,37» и скопируем туда необходимые файлы.
Во-первых, сам PXELINUX загрузчик:

  mkdir /tftpboot/slackware-13.37
  mkdir /tftpboot/slackware-13.37/pxelinux.cfg
  cp /usr/share/syslinux/pxelinux.0 /tftpboot/slackware-13.37/

Кроме того, нам нужны файлы из Slackware CDROM которые показывают информативные сообщения в самом начале. Предположим, что локальная копия релиза Slackware находится в «/mirror/slackware/slackware-13.37» (измените путь в командах ниже, если у вас другое местоположение):

  cp /mirror/slackware/slackware-13.37/isolinux/message.txt /tftpboot/slackware-13.37/
  cp /mirror/slackware/slackware-13.37/isolinux/f2.txt /tftpboot/slackware-13.37/

Очень важно: ещё нам нужны исходный образ виртуального диска (initrd.img) и файл конфигурации pxelinux, который содержит инструкции для клиентов PXE:

  cp /mirror/slackware/slackware-13.37/isolinux/initrd.img /tftpboot/slackware-13.37/
  cp /mirror/slackware/slackware-13.37/usb-and-pxe-installers/pxelinux.cfg_default /tftpboot/slackware-13.37/pxelinux.cfg/default

И наконец нам нужны все ядра которые вы можете выбрать после загрузки инсталлятора:

 cp -a /mirror/slackware/slackware-13.37/kernels /tftpboot/slackware-13.37/

Пробуем

Теперь у вас есть полностью настроенный PXE сервер. Попробуйте! Возьмите компьютер, который может загружаться с сети, запустите его и наблюдайте за тем, как он контактирует с сервером PXE, загружает код PXE, загружает и представляет вам знакомое окно установки Slackware! С этого момента вы находитесь на знакомой территории: выберите ядро, и вперед.

Если вы не знакомы с сетевыми установками, вот несколько советов:

Программа установки использует UDEV, чтобы загрузить нужный драйвер(ы) для вашей сетевой карты. Вы можете войти как root, использовать (с)FDISK для создания разделов и запустить «setup». К тому времени вы добираетесь до точки, где выберите предпочтительный способ установки по сети, программа установки попросит вас предоставить параметры конфигурации сети (IP адрес, маску подсети, шлюз). Если сервер DHCP был найден в вашей локальной сети, то у вас будет альтернативный вариант использования DHCP и автоматической настройки интерфейса.

Если по каким-либо причинам вы не хотите использовать UDEV, вы можете передать параметр «noudev» при загрузке в командной строке. Это приведет к тому, что инстллятор будет вести себя по-старому, где вы должны будете загрузить драйвер ядра для сетевой карты. Вам нужно будет запустить команду «network», которая является интерактивной программой и которая позволит вам выбрать драйвер, или позволить Slackware исследовать карту и загрузить соответствующий драйвер. Вы можете нажать клавишу «L», чтобы получить список всех доступных сетевых драйверов, которые можно выбрать (не все из них будут использоваться автоматически). Если сетевая программа не распознает карту, но вы знаете, какой драйвер нужен для карты и не видите его в списке, вам не повезло!
Если вы забыли запустить программу «network», перед запуском «setup», диалог конфигурации сети запустится, когда придет время, так что вам не придется начинать все сначала.

Как только появится диалоговое окно, вы сможете выбрать варианты установки «Install from NFS (Network File System)»,«Install from FTP/HTTP server» или «Install froma Samba share» в зависимости от того, что из этого вы настроили для использования и есть в наличии. Вам нужно будет поставить пару значения для IP-адреса и каталога на сетевом сервере.

В качестве первого упражнения, указаны значения для использования с сервером NFS (для нашей сети в примере):

Ваш IP-адрес (выбрать любой неиспользуемый): 192.168.0.111
Ваша маска:                                  255.255.255.0
Шлюз:                                        192.168.0.10
Адрес NFS сервера:                           192.168.0.1
Каталог со Slackware на сервере NFS:         /mirror/slackware/slackware-13.37/slackware 

Несколько следующих примерных значений для использования с FTP сервером (для нашей сети в примере):

Ваш IP-адрес (выбрать любой неиспользуемый): 192.168.0.111
Ваша маска:                                  255.255.255.0
Шлюз:                                        192.168.0.10
Адрес FTP сервера:                           ftp://192.168.0.1
Каталог со Slackware на ftp сервере:         /pub/mirror/slackware/slackware-13.37

Несколько следующих примерных значений для использования с HTTP сервером (для нашей сети в примере):

Ваш IP-адрес (выбрать любой неиспользуемый): 192.168.0.111
Ваша маска:                                  255.255.255.0
Шлюз:                                        192.168.0.10
Адрес HTTP сервера:                          http://192.168.0.1
Каталог со Slackware на веб сервере:          /mirror/slackware/slackware-13.37

Заключительные примерные значения для использования с Samba ресурсом (для наше сети в примере):

Ваш IP-адрес (выбрать любой неиспользуемый): 192.168.0.111
Ваша маска:                                  255.255.255.0
Шлюз:                                        192.168.0.10
Samba ресурс:                                //192.168.0.1/mirror
Примечание № 1 - если вы выбрали автоматическую настройку сети с использованием DHCP в предыдущем шаге, вероятно, можно использовать реальные имена хостов вместо IP адреса. Это будет зависеть от настроек локальной сети, если DHCP-и DNS-сервисы настроены правильно, каждый сетевой хост будет иметь имя , которое сопоставимо с его IP-адресом.
Примечание № 2 - в случае сервера NFS, вам придется указать путь к дереву со Slackware пакетами, в том числе и к подкаталогу «/Slackware». Для HTTP-и FTP-серверов, достаточно указать корень дерева Slackware-13.37 без подкаталога «Slackware». Программа установки сама выяснит, где находятся пакеты.

С этого момента, установка проводится так же, как если бы источником был CDROM.

Удачи!
Eric Hameleers.

Примеры настройки скриптов

Первый пример "/etc/dhcpd.conf"

Простой /etc/dhcpd.conf для вашего DHCP-сервера, где все компьютеры могут загружаться по сети с помощью PXE.

 # dhcpd.conf
 #
 # Файл конфигурации для ISC dhcpd
 #
 # Если этот сервер DHCP является официальным сервером DHCP 
 # для локальной сети, авторитетный директивы должны быть задействованы.
 authoritative;
 ddns-update-style none; 
 
 # Разрешить запросы BOOTP
 allow bootp;
 
 # Указатель на TFTP сервер
 next-server 192.168.0.1;
 
 # По умолчанию аренда составляет 1 неделю (604800 сек.)
 default-lease-time 604800;
 
 # Максимальная аренда составляет 4 недели (2419200 сек.)
 max-lease-time 2419200;
 
 subnet 192.168.0.0 netmask 255.255.255.0 {
     option domain-name "my.lan";
     option broadcast-address 192.168.0.255;
     option subnet-mask 255.255.255.0;
     option domain-name-servers 192.168.0.1;
     option routers 192.168.0.10;
     range dynamic-bootp 192.168.0.50 192.168.0.100;
     use-host-decl-names on;
     if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
       filename "/slackware-13.37/pxelinux.0";
   }
 } 

Второй пример "/etc/dhcpd.conf"

Более продвинутый /etc/dhcpd.conf для вашего DHCP сервера, в котором вы можете указать, какие именно компьютеры могут загружаться по сети с помощью PXE (но вам придется собрать их MAC-адреса и поместить в отдельную запись host{} ):

 # dhcpd.conf
 #
 # Файл конфигурации для ISC dhcpd
 #
 # Если этот сервер DHCP является официальным сервером DHCP 
 # для локальной сети, авторитетный директивы должны быть задействованы.
 authoritative;
 ddns-update-style none;
 
 # Игнорировать запросы BOOTP
 ignore bootp;
 
 # общая опция определения для всех сконфигурированных сетей..
 option domain-name-servers 192.168.0.1;
 
 subnet 192.168.0.0 netmask 255.255.255.0 {
     option domain-name "my.lan";
     option broadcast-address 192.168.0.255;
     option subnet-mask 255.255.255.0;
     option routers 192.168.0.10;
     # Мы оставляем диапазон с 192.168.0.1 до 192.168.0.49 для статических IP-адресов
     pool {
       # Известные клиенты (т.е. настроены с заявленым "host"),
       # которые запрашивают IP-адреса через DHCP
       range 192.168.0.50 192.168.0.100;
       # аренда по умолчанию 1 неделя (604800 сек.)
       default-lease-time 604800;
       # максимальная аренда 4 недели (2419200 сек.)
       max-lease-time 2419200;
       deny unknown clients;
     }
     pool {
       # Гости
       range 192.168.0.150 192.168.0.200;
       # аренда по умолчанию 8 часов (28800 сек.)
       default-lease-time 28800;
       # максимальная аренда 24 часа (86400 сек.)
       max-lease-time 86400;
       deny known clients;
     }
 } 
 
 # Хосты, которые требуют специальной опции  могут быть
 # перечислены в принимающих хостах. Если адрес не указан, то адрес будет
 # выделен динамически (если это возможно), но конкретный хост по-прежнему будет 
 # получать информацию от декларированного хоста.
  
 # Так же могут быть указаны фиксированные IP адреса для хостов. Но эти адреса
 # не должны быть указаны как доступные для динамического
 # назначения. Хосты, для которых были указаны фиксированные IP адреса
 # могут загрузиться с помощью BOOTP или DHCP. Хосты, без
 # постоянного адреса могут загружаться только с DHCP, если есть
 # диапазон адресов в подсети, к которой BOOTP клиент соединяется с установленным dynamic-bootp флагом 
 
 # ==== Группа определений =======
 # Определение группы компьютеров, которым необходимо уделять особое внимание.
 
 group {
   # машины без PXE
   # по умолчанию время аренды 1 неделя (604800 сек.)
   default-lease-time 604800; 
   # максимальное время аренды 2 недели (1209600 сек.)
   max-lease-time 1209600;  
 
   # host penguin {
   #  hardware ethernet xx:xx:xx:xx:xx:xx;
   #  fixed-address 192.168.0.2;
   # }
 }
 
 group {
   # PXEboot 
 
   # по умолчанию время аренды 1 день(86400 сек.)
   default-lease-time 86400;
   # максимальное время аренды 2 дня (172800 сек.)
   max-lease-time 172800;  
 
   # Разрешить запросы BOOTP для этой группы:
   allow bootp;
 
   # Указатель на сервер TFTP (обязательный параметр!):
   next-server 192.168.0.1; 
 
   # Если вы хотите журналировать процесс загрузки, вам нужно будет настроить
   # logserver, чтобы разрешить журналирование с удаленных хостов.
   #option log-servers 192.168.0.1; 
 
   use-host-decl-names on;
 
    if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
      filename "/slackware-13.37/pxelinux.0";
    }
    else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
      filename "/slackware-13.37/kernels/hugesmp.s/bzImage";
    }
 
   host t43 {
     # Добавьте сюда МАС адрес вашего компьютера:
      hardware ethernet yy:yy:yy:yy:yy:yy;
      fixed-address 192.168.0.3;
   }
 }  # конец группы PXEboot 

RC скрипт для DHCP

Скрипт старта/остановки для DHCP сервера вы можете сохранить как «/etc/rc.d/rc.dhcpd».

Не забудьте сделать его исполняемым:

 chmod +x /etc/rc.d/rc.dhcpd

Вы можете добавить следующую строку в /etc/rc.d/rc.local для автоматического запуска DHCP во время загрузки сервера:

 if [ -x /etc/rc.d/rc.dhcpd ]; then
   # Start the DHCP server:
     /etc/rc.d/rc.dhcpd start
 fi

Содержимое файла «/etc/rc.d/rc.dhcpd»:

 #!/bin/sh
 #
 # /etc/rc.d/rc.dhcpd
 # Этот скрипт заботится о запуске и остановке службы ISC DHCPD
 # 
 
 # вставьте параметры командной строки здесь, те что вы хотите передать DHCPD
 DHCPD_OPTIONS="-q eth0"
 
 [ -x /usr/sbin/dhcpd ] || exit 0
 
 [ -f /etc/dhcpd.conf ] || exit 0
 
 start() {
     # Start daemons.
     echo -n "Starting dhcpd:  /usr/sbin/dhcpd $DHCPD_OPTIONS "
     /usr/sbin/dhcpd $DHCPD_OPTIONS
     echo
 }
 
 stop() {
     # Stop daemons.
     echo -n "Shutting down dhcpd: "
     killall -TERM dhcpd
     echo
 }
 
 status() {
   PIDS=$(pidof dhcpd)
   if [ "$PIDS" == "" ]; then
     echo "dhcpd is not running!"
   else
     echo "dhcpd is running at pid(s) ${PIDS}."
   fi
 } 
 
 restart() {
     stop
     start
 }
 
 # See how we were called.
 case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
        ;;
 esac
 
 exit 0 

Автор:
Eric Hameleers alien@slackware.com 21-mar-2011
Wiki ссылка:
http://www.slackware.com/~alien/dokuwiki/doku.php?id=slackware:pxe

Печать/экспорт
QR Code
QR Code wiki:od:rpxe (generated for current page)