установка pxe boot сервера


Загрузка по сети — очень удобная штука. Еще удобней, когда Вы сами котролируете весь процесс.

В этой статье я рассмотрю базовую установку полноценного pxe boot сервера в Red Hat based систему CentOS 6.

Задача рассматриваемого сервера заключается в двух подзадачах:

  1. Выдать ip адрес клиенту.
  2. Начать процесс загрузки

Рассмотрим все по порядку.

###

Установим демон dnsmasq — полноценный dhcp сервер, только еще и легковесный.

sudo yum -y install dnsmasq

Запустим его со своими параметрами ip адресации.

sudo /usr/sbin/dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/dnsmasq.pid
--conf-file= --except-interface lo
--listen-address 192.168.0.1 --dhcp-range 192.168.0.2,192.168.0.254
--dhcp-leasefile=/var/run/default.leases --dhcp-lease-max=253 --dhcp-no-override
--dhcp-boot=pxelinux.0

Здесь стоит обратить внимание на опции:

–listen-address 192.168.0.1 –dhcp-range 192.168.0.2,192.168.0.254

задают прослушивающий интерфейс и подсеть выдаваемых адресов

и –dhcp-boot=pxelinux.0 — назначает файл для загрузки по tftp. Если у Вас tftp, вдруг, на другом сервере, то его можно указать вот так:

–dhcp-boot=pxelinux.0,server-hostname,192.168.222.1

где server-hostname — доменное имя сервера (если его и нет, все равно нужно указать какое-нибудь), а 192.168.222.1 — его ip адрес.

Теперь разрешим доступ к нашему dhcp серверу извне:

sudo iptables -I INPUT 1 -p udp --dport 67 -j ACCEPT

Настройка TFTP

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

sudo yum -y install tftp-server syslinux

Теперь нужно включить его в xinetd. Кстати, если до этого он не был установлен, то он подтянется как зависимость.

sudo sed -i '/disable/ s/yes/no/' /etc/xinetd.d/tftp

Ну и включить его в автозагрузку не помешает.

sudo chkconfig xinetd on
sudo service xinetd restart

По умолчанию, файлы tftp раполагаются в /var/lib/tftp, я не стал менять эту директорию, но если Вам это необходимо или просто интересно, то изменить ее можно в /etc/xinetd.d/tftp

Скопируем необходимые файлы в папку tftp.

sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
sudo cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
sudo cp /usr/share/syslinux/memdisk /var/lib/tftpboot/

Я решил положить файлы устанавливаемой системы в директорию images, вы же вольны положить их куда угодно в рамках папки tftpboot.

sudo mkdir /var/lib/tftpboot/{pxelinux.cfg,images}
sudo mkdir /var/lib/tftpboot/images/centos
sudo wget http://mirror.yandex.ru/centos/6/os/i386/images/pxeboot/vmlinuz
-O /var/lib/tftpboot/images/centos/vmlinuz
sudo wget http://mirror.yandex.ru/centos/6/os/i386/images/pxeboot/initrd.img
-O /var/lib/tftpboot/images/centos/initrd.img

Можно заранее положить iso образ на hdd машины, которую будем грузить по сети, а можно установить систему по http/ftp url. В рамки данной статьи не входит описание настройки http/ftp сервера.

Настроим меню загрузчика. Для этого создадим файл /var/lib/tftpboot/pxelinux.cfg/default

и наполним его следующим содержимым

default /vesamenu.c32

menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color disabled 0 #ffffffff #00000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu background #1F45A5

menu title PXE Network Boot Menu

prompt 0
timeout 300

label Boot from first hard disk
        localboot 0x80

label CentOS 6
        kernel /images/centos/vmlinuz
        append initrd=/images/centos/initrd.img

Разрешим клиентам соединяться с tftp сервером

sudo iptables -I INPUT 1 -p udp --dport 69 -j ACCEPT

Это всё. Теперь можно грузить машины по pxe и они будут видеть меню установки системы.

ссылки:

http://habrahabr.ru/post/82552/

http://centos.name/?page/howto/PXE-Setup