Загрузка по сети — очень удобная штука. Еще удобней, когда Вы сами котролируете весь процесс.
В этой статье я рассмотрю базовую установку полноценного pxe boot сервера в Red Hat based систему CentOS 6.
Задача рассматриваемого сервера заключается в двух подзадачах:
- Выдать ip адрес клиенту.
- Начать процесс загрузки
Рассмотрим все по порядку.
###
Установим демон 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 и они будут видеть меню установки системы.
ссылки: