« Про Интеловкую гарантию. | Казань, Сотворение мира, типа фотоотчет » |
Сервер сетевой загрузки на Centos/RHEL
Поскольку в очередной раз понадобилось поднять сетевую загрузку, наваял конспектик.
Итак нам понадобятся сервер tftp, dhcp, syslinux и nfs/ftp/http (в зависимости от настроения и того, что юудем грузить). Для определенности, будем считать сто мы делаем сетевую установку того же CentOS.
Делаем 'yum install tftp-server dhcp syslinux'
TFTP
Сервер TFTP работает через xinetd и после установки (по умолчанию) отключен. Идем в /etc/xinetd.d/ и в файле tftp меняем строку "disable = yes" на "disable = no" и с помощью ntsysv отмечаем xinetd для автоматического запуска. Можно сразу сделать '/etc/init.d/xinetd start'.
После установки tftp в корне системы повляется каталог /tftpboot. В него нужно поместить файлы необходимые для начальной загрузки. Это как минимум pxe-загрузчик, его настройки, ядро linux, initrd для него.
PXE-загрузчик
В этой роли будет работать pxelinux из комплекта syslinux. После установки нужные запчасти лежат в /usr/lib/syslinux, откуда их (собственно, ее, т.к. запчасть нужна только одна) нужно скопировать в /tftpboot. Делаем 'cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxelinux.0'
Теперь настройки. Pxelinux будет их искать с каталоге pxelinux.cfg расположенном там же, где и тело загрузчика, т.е. итого в /tftpboot/pxelinux.cfg. В этом каталоге сначала ищется файл вида 01-88-99-aa-bb-cc-dd, т.е. 01-мак-адрес-компьютера-в-нижнем-регистре. Если такого файла не находится, то ищется файл вида C000025B, т.е. IP-адрес компьютера (192.0.2.91) в шестнадцатиричной записи в верхнем регистре. Если такого тоже не нахидится, то делается еще несколько попыток, отрезая от этого имени по одному знаку с конца. Наконец, когда ни один вариант не обнаружен, пробуем открыть файл default, и если снова не получается, значит не срослось . Такая схема позволяет как сделать общую концигурацию для всех (или нескольких) машин, так и несколько настроек для группы или индивидуально для каждого компьютера. Будем считать, что нам нужны одни настройки для всех, во всяком случае по началу.
mkdir /tftpboot/pxelinux.cfg
cd /tftpboot/pxelinux.cfg
nano default
Содержимое файла, для примера возьмем отсюда:
label linux
kernel vmlinuz
append initrd=initrd.img boot_server=192.168.0.3 ip=dhcp ksdevice=link ks=ftp://192.168.0.3/kickstart.ks
т.е. bootrom сетевой карты загружает и запускает pxelinux, тот находит файл pxelinux.cfg/default и в соответсствии с инструкциями в нем грузит ядро vmlinuz, начальную ФС
initrd.img
и запускает ядро с передачей ему указанных параметров. Что эти параметры означают, расписано по ссылке выше. Теперь неплохо бы положить собственно эти ядро и initrd туда, откуда pxelinux будет их забирать. Т.е. в нашем случае нужно скопировать vmlinuz
и initrd.img
с установочного диска Centos из каталога images/pxeboot в каталог /tftpboot.
DHCP
В начале у меня конечно подразумевается, что DHCP ставится сейчас, вместе с остальными запчастями. Но рассказывать про настройку DHCP "в целом" - долго и нудно. Посему будем считать, что уже есть работающий ISC DHCP-сервер и нужно только поправить его настройки для работы сетевой загрузки.
Итак, лезем в файл /etc/dhcpd.conf. Здесь нужно в желаемый диапазон (или глобально, по желанию) добавить следующее:
allow booting;
allow bootp; # Собственно, разрешаем сетевую загрузку. Эти опции дожны быть глобальными.
next-server 192.168.0.1; # Адрес TFTP-сервера. Если совпадает с DHCP-сервером, можно пропустить. Если различаются - обязателен.
filename "/pxelinux.0"; # Имя файла, который будет грузить бутром сетевой карты.
В остальном, стандартный DHCP.
Что с этим делать дальше, можно прочитать например здесь.