форумы  рассылка  download Перейти на новую версию сайта:
www.slackware.ru
Искать    где:    






    
slackware.ru > форумы > Дистрибутив 783 (0)
Дистрибутив
перейти на уровень верх 
показать как ленту 
скрыть содержимое сообщений 
 Re: Сетевая установка Slackware 12
   zholyd 2008-03-21 06:59:27 [3046] ответов 0
  У меня была почти такая же проблема! Не мог поставить Slackware 12 на ноутбук! Нет FDD, а с CD-ROM'а почему-то не грузится! У меня был старый комп на него я поставил Slackware 11 (можно 12). Настроил на нем NFS и dhcp! Соединил комп и ноутбук cross-кабелем. На ноутбуке выбрал в BIOS загрузку с сетевой карты. Поставилось без проблем! Подробности можно прочитать в файле pxe.txt в директории miniiso-pxe-usb-installers.
У меня кстати есть перевод этой статьи из файла pxe.txt

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

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

Число возможных опций для загрузки инсталлятора Slackware также ограничено: либо вы загружаете свой компьютер с первого CDROM из набора Slacware CD, либо с DVD, или (в тех случаях где BIOS компьютера отказывается опознавать CD загружаемым) создаете boot/root дискеты и загружаетесь с них. Есть даже loadlin, основанный на DOS загрузчик Linux, но не отвечающий нашим требования из-за устарелости.

Но что если ваш PC не имеет флоппи-дисковода или даже CDROM? Известные компьютеры на сегодняшнем рынке (ультра портативные ноутбуки например) которые неспособны установить Slackware традиционным способом. Тем не менее эти машины обычно оборудованы сетевой периферией как например bluetooth, беспроводные и проводные сетевые карты. Как решить эту дилемму? Купить внешний CD-дисковод?

Есть один способ загрузки вашего компьютера который инсталлятор Slackware пока не поддерживает. Это загрузка из сети. Сетевая загрузка или PXE загрузка требует поддержки от сетевой карты вашего компьютера и BIOS. Также вместо инсталляции пакетов с набора дисков Slackware, вам будет необходим сетевой сервер который может инструктировать ваш компьютер как получать эти пакеты из сети.

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

Я опишу как настроить сервер с соответствующим программным обеспечением, и как модифицировать некоторые файлы на Slackware CDROM так чтобы PXE загрузка стала поддерживаемым инсталяционным методом для Slackware Linux.

PXE
________________________________________________________________________________________________________________________

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

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

Мы раскроем требования для такого сервера в одном из следующих параграфов.

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

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

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

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

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

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

Требования сервера.
__________________________________________________________________________________________

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

1. Сервис который понимает протокол BOOTP. BOOTP - сетевой протокол довольно похожий на DHCP и он используется микропрограммой PXE для вещания по сети желающий найти подходящий сервер для загрузк оттуда кода начальной загрузки. ISC DHCP сервер поставляется как часть Slackware полностью удовлетворяет этому требованию поскольку использует BOOTP также как DHCP.
2. Сервис загрузки для кода начальной загрузки. Для этого нужен TFTP сервер (протокол тривиальной передачи файлов). Slackware поставляется с реализацией сервера TFTP называемой tftpd-hpa который является тем что нам нужно.
3. И для инсталлятора Slackware нужен NFS сервер потому что мы должны выполнить установку по сети. Slackware не знает концепцию установки с ftp сервера (пока?). Мы можем использовать для этого NFS сервер как хранилище Slackware.

Реализация сервисов
__________________________________________________________________________________________

Мы будем наблюдать как настроить DHCP, TFTP и NFS сервисы на компьютер Slackware таким образом они будут вместе работать как сервер PXE.

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

1. Наша образцовая сеть использует IP адреса в диапазоне от 192.168.0.0 до 192.168.0.254. Это эквивалент сетевого диапазона 192.168.0.0/24 или 192.168.0.0/255.255.255.0.

2. Наш сетевой сервер должен иметь IP адрес 192.168.0.1 и шлюз по умолчанию 192.168.0.10. Сервер и шлюз могут быть (но не обязательно) одной и той же физической машиной.
3. Диапазон IP адресов который DHCP сервер будет давать для временного использования компьютерам на которых разрешен DHCP/BOOTP от 192.168.0.50 до 192.168.0.100.
4. DNS домен будет "my.lan".
5. Сервер будет запускать все требуемые сервисы т.е. действовать как DNS, DHCP, TFTP и NFS сервер локальной сети. Если вы решите отделить DHCP и TFTP сервисы на два разных сервера (не имеет значения где запущен NFS сервер), я добавлю коментарий на то что вам следует обратить внимание в разделе DHCP который идет следующим.
6. Используемые каталоги следующие:
1. Самый верхний уровень полного дерева каталогов Slackware 11.0 (исключая исходный код если у вас мало дискового пространства) /mirror/slackware/slackware-11.0
2. Каталог где мы будем хранить загрузочные файлы для TFTP сервера /tftpboot/slackware-11.0

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 block и выглядят так:

________________________________________________________________________________________________________________________________

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-11.0/pxelinux.0";
}

host ABC {
.....
}

host XYZ {
.....
}
}

_________________________________________________________________________________________

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

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

________________________________________________________
next-server 192.168.0.254;
________________________________________________________


ПРИМЕЧАНИЕ: Если у вас работает версия ISC dhcpd которая >= 3.03, добавление строки next-server является обязательным. Для старых релизов это необходимо только тогда если TFTP и DHCP серверы на самом деле имеют различные адреса.
Если получили отказ установив адрес next-server, поле siaddr в данных возвращенных к клиенту установиться в ноль где наконец оно будет по умолчанию к собственному IP-адресу DHCP сервера (котором часто случается быть IP-адресом TFTP сервера также). Клиент PXE использует поле siaddr чтобы определить IP-адрес TFTP-сервера и таким образом PXE загрузка застопориться.


ПРИМЕЧАНИЕ: Если вы уже используете dnsmasq как ваш DNS/DHCP сервер, тогда вышеуказанные инструкции для ISC DHCP сервера не применимы к вашей установке. В этом случае у меня есть другая статья на Wiki (которая сфокусирована на QEMU) для вас где я документировал требуемые модификации для сервера dnsmasq.


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 теперь сконфигурирован и запущен. Нам теперь надо просто населить его корневой каталог но я оставлю это на другой параграф


NFS

Для настройки NFS сервера я просто укажу вам на другую статью в этом Wiki file- and printsharing on the local network

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

/mirror/Slackware 192.168.0.0/24(ro,sync,insecure,all_squash)

В случае ваши пакеты Slackware размещены где нибудь ниже /mirror/Slackware (как в нашей сети примере). Вышеуказанные строки делают это дерево каталогов доступным (для чтения) NFS клиентам в локальной сети определенным в диапазоне 192.168.0.0/24.

2. Если вы добавили это в файл /etc/exports вам будет нужно снова запустить NFS сервер

/etc/rc.d/rc.nfsd restart

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

1. Создайте файл /etc/exports со следующим содержимым:

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

Используйте каталог упомянутый в /etc/exports для копирования (или перемещения) содержимого ваших Slackware файлов в: Каталог /mirror/slackware/slackware-11.0 который должен быть корневым в дереве Slackware, содержащим такие файлы как Changelog.txt и подкаталоги slackware и kernels.

2. Создайте исполняемый скрипт таким образом NFS сервер будет стартовать при каждой загрузке:

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

3. Запустите NFS сервер (таким образом вы не должны уже перезагружаться):

/etc/rc.d/rc.nfsd start

Конфигурация PXELinux
______________________________________________________________________
PXELinux похож на isolinux, который является загрузчиком используемым для загрузочного Slackware CDROM #1. На самом деле обе программы написаны одним и тем же автором и доступны из пакета syslinux.
Мы начнем с конфигарационного файла isolinux.cfg и образа root диска initrd.img которые используются для создания Slackware CDROM и изменяя их таким образом могут быть использованы с pxelinux загрузчиком.

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


Как вы можете видеть в разделе DHCP сервер DHCP предлагает любые интересные PXE клиенты (т.е. сетевую карту вашего компьютера) файл /slackware-11.0/pxelinux.0 обозначает путевое имя относящееся к корню TFTP сервера. PXE клиент будет использовать протокол TFTP чтобы получить этот загрузчик. Таким образом что мы делаем: создайте этот каталог slackware-11.0 и скопируйте требуемые файлы в него. Сперва сам pxelinux загрузчик:

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

Так же нам нужны файлы из Slackware CDROM которые показывают информативные сообщения в начале. Предположим ваше зеркало релиза Slackware может быть найдено в /mirror/Slackware/slackware-11.0/ (измените пути нижеуказанных командах если ваше размещение отличается)

cp /mirror/Slackware/slackware-11.0/isolinux/message.txt /tftpboot/slackware-11.0/
cp /mirror/Slackware/slackware-11.0/isolinux/f2.txt /tftpboot/slackware-11.0/
cp /mirror/Slackware/slackware-11.0/isolinux/f3.txt /tftpboot/slackware-11.0/

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

cp -a /mirror/Slackware/slackware-11.0/kernels /tftpboot/slackware-11.0/

Создание образа initrd.img

Обычный способ инсталляции Slackware из репозитория NFS сервера, загрузить Slackware CDROM и запустить (pcmcia и) network чтобы загрузить все драйверы для вашей сетевой карты перед запуском setup чтобы комментировать процедуру инсталляции. Когда вы напечатаете pcmcia и/или network инсталлятор Slackware будет искать соответствующий файл драйвера на доступном CDROM и если не будет найден ни один CDROM он предложит вставить дискету.
Теперь с загрузкой из сети мы предполагаем что там нет CDROM и флоппи дисковода доступных для нас. Так нам нужно добавить все драйвера которые необходимы для корневой файловой системы которую PXElinux загрузчик загрузил из TFTP сервера (содержащего файл initrd.img).

Это базовая процедура - мы выполняем ее на сервере. Я все полагаю что ваше локальное зеркало релиза Slackware может быть найдено в /mirror/slackware на вашем сервере:

Создайте staging area где мы выполняем всю нашу изящную работу:

mkdir -p /tmp/pxe

Распакуйте образ содержащий корневую файловую систему из сжатого файла initrd.img:

gunzip -cd /mirror/Slackware/slackware-11.0/isolinux/initrd.img > /tmp/pxe/initrd.dsk

Примонтируйте куда-нибудь ваш образ скажем /tmp/pxe/initrd:

cd /tmp/pxe
mkdir initrd
mount -o loop,ro initrd.dsk initrd/

Примонтируйте образы network и pcmcia образов дисков тоже:

mkdir pcmcia
mount -o loop,ro /mirror/Slackware/slackware-11.0/isolinux/pcmcia.dsk pcmcia/
mkdir network
mount -o loop,ro /mirror/Slackware/slackware-11.0/isolinux/network.dsk network/

Вы вероятно заметили я примонтировал эти образы только для чтения; мы собираемся только копировать файлы из них.
1. Используйте команду dd чтобы создать новый файл достаточного размера (названный newinitrd). В конце процесса этот файл будет содержать файловую систему которая содержит комбинированное содержимое образов дисков Slackware которые мы только что примонтировали как петлевые устройства.
Под достаточным я подразумеваю должен быть по крайней мере комбинированных размерова раскомпрессированного образов дисков которые мы собираемся копировать в новую файловую систему. В моем примере команда dd ниже которую я использую с номером 9500 размером блоков в 1кб который складывается в 9,5 мб файл:

dd if=/dev/zero of=/tmp/pxe/newinitrd bs=1k count=9500

Как я получил такое число 9500? Вы суммировали размеры initrd.dsk, network.dsk, и pcmcia.dsk файлов и убедитесь что вы используете номер не меньше чем сумма. Следующая команда является способом гика возвратить значение суммы:

echo $(( $(du -sk initrd.dsk|cut -f1)+$(du -sk network.dsk|cut -f1)+$(du -sk pcmcia.dsk|cut -f1) ))

Мы затем создаем файловую систему внутри этого файла (и используем флаг -F к mkfs.ext2 чтобы обозначить что мы полностью осведомлены что применяем команду к неблочному устройству). Также настраиваем файловую систему таким образом никогда не будет запроса о проверке файловой системы (fsck) когда он будет монтироваться:

mkfs.ext2 -m 0 -F /tmp/pxe/newinitrd
tune2fs -i 0 /tmp/pxe/newinitrd

Теперь мы имеем полезную ФС монтируйте этот файл (для чтения записи):

mkdir -p /tmp/pxe/out/
mount -o loop /tmp/pxe/newinitrd /tmp/pxe/out/

Копируйте содержимое трех образов Slackware дисков во все еще пустой новый файл:

cp -a /tmp/pxe/initrd/* /tmp/pxe/out/
cp -a /tmp/pxe/network/* /tmp/pxe/out/
cp -a /tmp/pxe/pcmcia/* /tmp/pxe/out/

Измените скрипты которые исполняются когда вы набираете pcmsia и network так они больше не будут искать CDROM или флоппи дисководы для примонтировать образы с них - потому что весь нужный материал находится в новой корневой файловой системе:

cd ////
cat pcmcia > /tmp/pxe/out/bin/pcmcia
cat network > /tmp/pxe/out/bin/network
patch -p0 /tmp/pxe/out/scripts/network.sh network.sh.diff

Регенерируйте зависимости файлов модулей ядра:

gunzip -cd /mirror/Slackware/slackware-11.0/kernels/sata.i/System.map.gz > /tmp/pxe/System.map
rm -f /tmp/pxe/out/lib/modules/2.4.33.3/modules.*
/sbin/depmod -a -b /tmp/pxe/out -F /tmp/pxe/System.map 2.4.33.3

Размонтируйте все образы и упакуйте gzip'ом новую файловую систему, таким образом мы можем копировать ее в каталог tftboot:

umount /tmp/pxe/initrd
umount /tmp/pxe/network
umount /tmp/pxe/pcmcia
umount /tmp/pxe/out
gzip -9f /tmp/pxe/newinitrd
mv /tmp/pxe/newinitrd.gz /tftpboot/slackware-11.0/initrd.img

Обратите внимание вы не можете gzip'овать файл образа корректно если он примонтирован!

И наконец очистите каталог

rm -r /tmp/pxe

ПРИМЕЧАНИЕ: Я написал скрипт create_slackboots.sh который делает все это автоматически (и более) вы можете загрузить его на http://www.slackware.com/~alien/tools/slackboot/.
Не забудьте также загрузить другие файлы которые вы найдете на этом URL потому что скрипты нужны эти патч для pcmcia и network скриптов. Осознвайет что этот скрипт также добавляет содержимое network26.dsk (сетевые драйверы для huge26.s ядра) в наш большой initrd.img который я пропустил из детальных шагов выше чтобы держать рассказ читабельным.

Вы можете также просто загрузить готовый к использованию initrd.img. У меня есть также дополнительный конфигурационный файл pxelinux. Если вы скорее хотите создать этот файл для себя, используйте вышеупомянутый скрип create_slackboots.sh или прочитайте следующий параграф.

Создание конфигурационного файла pxelinuxe

Copy the isolinux.cfg file from the Slackware CDROM to the tftp directory:

mkdir -p /tftpboot/slackware-11.0/pxelinux.cfg
cp /mirror/Slackware/slackware-11.0/isolinux/isolinux.cfg /tftpboot/slackware-11.0/pxelinux.cfg/default

и редактрируйте полученный файл так чтобы каждое присутствие абсолютного пути /kernels было заменено с относительным путевым именем ядер, и размер виртуального диска увеличивается увеличивается к достигает такого размера где наш более большая корневая файловая система до сих пор расположена. Практическое правило: так как мы добавляем содержимое файловых систем pcmcia.dsk и network.dsk initrd.img, нам нужен виртуальный диск который размером приблизительно на 3MB больше чем используемый для загрузки с CDROM. Я предполагаю 9.5 MB будет достаточно (это должно быть по крайней мере равно размеру раскомпрессированного файла newinitrd который мы создаил в предыдущем разделе):

sed -i -e "s/ramdisk_size=[[:digit:]]*/ramdisk_size=9500"/ \
-e "s#/kernels/#kernels/#" \
/tftpboot/slackware-11.0/pxelinux.cfg/default

Примечание: Скрип create_slackboots.sh упомянутый в предыдущем разделе создаст этот файл для вас вместе с нужным файлом initrd.img.
Попробуйте

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

Если вы не знакомы с установкой через NFS, здесь подсказки:

*
После того как вы войдете как root и создадите разделы с помощью fdisk или cfdisk, вы должны загрузить модуль ядра для вашей сетевой карты.
Это вероятно будет не карта PCMCIA (Я не знаю каких-либо из этих карт выполняющих загрузку PXE), поэтому нет нужды запускать pcmcia для поддержки карт PCMCIA.
Вы должны запустить команду network которая является интерактивной программой позволяющей вам выбрать драйвер или позволить Slackware попробовать карту и загрузить соответствующий драйвер. Если программа network отказывается обнаруживать карту, и вы знаете что за драйвер карты вам нужен но не видите ее в с списке, то вам не повезло!

*
Выберите инсталляцию через NFS как только получите диалог SOURCE. Вам нужно будет обеспечить несколькими значениями для 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-11.0/slackware

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

Удачи!
Примеры конфигурационных скриптов
Первый пример dhcpd.conf

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

# dhcpd.conf
#
# Configuration file for ISC dhcpd
#

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;

# Allow bootp requests
allow bootp;

# Point to the TFTP server:
next-server 192.168.0.1;

# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
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-11.0/pxelinux.0";
}
}

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

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

# dhcpd.conf
#
# Configuration file for ISC dhcpd
#

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;

# Ignore bootp requests:
ignore bootp;

# option definitions common to all configured networks...
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;
# We reserve the range 192.168.0.1 to 192.168.0.49 for static IP addresses
pool {
# Known clients (i.e. configured with a 'host' statement)
# that request an IP address via DHCP
range 192.168.0.50 192.168.0.100;
# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
max-lease-time 2419200;
deny unknown clients;
}
pool {
# Guests
range 192.168.0.150 192.168.0.200;
# Default lease is 8 hours (28800 sec.)
default-lease-time 28800;
# Max lease is 24 hours (86400 sec.)
max-lease-time 86400;
deny known clients;
}
}

# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.

# === Group definitions =============================================
# Define groups of computers that you want to give special attention.

group {
# Non-PXE machines

# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 2 weeks (1209600 sec.)
max-lease-time 1209600;

#host penguin {
# hardware ethernet xx:xx:xx:xx:xx:xx;
# fixed-address 192.168.0.2;
#}
}

group {
# PXEboot

# Default lease is 1 day (86400 sec.)
default-lease-time 86400;
# Max lease is 2 days (172800 sec.)
max-lease-time 172800;

# Allow bootp requests for this group:
allow bootp;

# Point to the TFTP server (required parameter!):
next-server 192.168.0.1;

# If you want to log the boot process, you will need to configure
# your logserver to allow logging from remote hosts.
#option log-servers 192.168.0.1;

use-host-decl-names on;

if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
filename "/slackware-11.0/pxelinux.0";
}
else if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
filename "/slackware-11.0/kernels/sata.i/bzImage";
}

host t43 {
hardware ethernet yy:yy:yy:yy:yy:yy;
fixed-address 192.168.0.3;
}
} # end of PXEboot group

RC script

A Slackware start/stop script for the DHCP server that you can save as /etc/rc.d/rc.dhcpd.

Don?t forget to make the script executable:

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

. You can add the following lines to /etc/rc.d/rc.local so that the DHCP service starts when your server boots:

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

#!/bin/sh
#
# /etc/rc.d/rc.dhcpd
# This shell script takes care of starting and stopping
# the ISC DHCPD service
#

# Put the command line options here that you want to pass to 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
 ответить


Страница (всего: 1) [0]

Правила | Контакты | Баннер
(c) 2000-2010 Zonus. Все права защищены.