PXE boot сервер на CentOS 6.5.

Добавляем репозитории
yum -y install tftp-server syslinux dhcp httpd

vim /etc/xinetd.d/tftp:

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -u tftp -c -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

Создаём пользователя, под которым будет работать tftp сервер
useradd -d /tftpboot -s /sbin/nologin -c "tftp-user" -M tftp

service xinetd restart
chkconfig xinetd on

Подготавливаем файлы для загрузки по сети:
mkdir -p /tftpboot/{pxelinux.cfg,images}
cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /tftpboot
mkdir /tftpboot/images/{centos,debian,opensuse,win7,acronis}

mount -o loop CentOS-6.5-x86_64-bin-DVD1.iso /mnt
cp -Rr /mnt/* /tftpboot/images/centos
umount /mnt

mount -o loop debian-testing-amd64-DVD-1.iso /mnt
cp -Rr /mnt/* /tftpboot/images/debian
umount /mnt
wget http://ftp.nl.debian.org/debian/dists/jessie/main/installer-amd64/current/images/netboot/debian-installer/amd64/{linux,initrd.gz} -P /tftpboot/images/debian/isolinux

mount -o loop openSUSE-13.1-DVD-x86_64.iso /mnt
cp -Rr /mnt/* /tftpboot/images/opensuse
umount /mnt
wget http://tehnikpc.net/ftp/repo/opensuse/{linux,initrd} -P /tftpboot/images/opensuse

mount -o loop windows7x64.iso /mnt
cp -r /mnt/* /tftpboot/images/win7
umount /mnt

Создаём файл ответов для Debian:
vim /tftpboot/images/debian/isolinux/preseed.cfg

d-i debian-installer/language string ru
d-i debian-installer/country string RU
d-i debian-installer/locale string ru_RU.UTF-8
d-i netcfg/choose_interface select auto
d-i clock-setup/utc boolean false
d-i time/zone string Europe/Kiev
tasksel tasksel/first multiselect standard, desktop
tasksel tasksel/desktop select xfce
d-i pkgsel/upgrade select full-upgrade
popularity-contest popularity-contest/participate boolean false
d-i cdrom-detect/eject boolean false

Генерируем загрузочный образ PXE для Windows 7:
Загружаем http://download.microsoft.com/download/9/1/5/9153E40C-13C0-4A12-AB5A-7EB950ED9D6A/KB3AIK_RU.iso и устанавливаем на Windows 7
На Windows 7 запускаем Командную строку средств развертывания от имени администратора и вводим команды:
mkdir c:\winpe
rd c:\winpe
copype.cmd amd64 c:\winpe
imagex /mountrw winpe.wim 1 mount

Редактируем скрипт запуска PXE c:\winpe\mount\Windows\System32\startnet.cmd:
wpeinit
net use z: \\192.168.0.1\pxe
z:\setup.exe

Если у вас стоит пароль к samba:
wpeinit
net use z: \\192.168.0.1\pxe вашпароль /user:вашпользователь
z:\setup.exe

В той же командной строке:
imagex /unmoumt mount /commit
copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\winpe\ISO
copy c:\winpe\winpe.wim c:\winpe\ISO\sources\boot.wim
oscdimg -n -bc:\winpe\Etfsboot.com c:\winpe\ISO c:\winpe\win7pex64.iso

Копируем сгенерированный образ c:\winpe\win7pex64.iso в папку для образов /tftpboot/images/win7 на tftp сервер

Загружаем какую-нибудь сборку Acronis например http://www.ex.ua/load/98820677 и копируем образ в /tftpboot/images/acronis

Создаём меню загрузки PXE
vim /tftpboot/pxelinux.cfg/default:

default menu.c32
menu title pxe boot menu
prompt 0
timeout 1200
label Boot from local drive
        localboot
menu begin
menu title os install
label ..
menu exit
label   centos
        kernel images/centos/isolinux/vmlinuz
        append initrd=images/centos/isolinux/initrd.img method=http://192.168.0.1/pxe/centos/ devfs=nomount
label   debian
        kernel images/debian/isolinux/linux
        append priority=critical vga=normal initrd=images/debian/isolinux/initrd.gz ramdisk_size=32768 method=http:/192.168.0.1/pxe/debian/ preseed/url=http://192.168.0.1/pxe/debian/isolinux/preseed.cfg
label   opensuse
        kernel images/opensuse/linux
        append initrd=images/opensuse/initrd ramdisk_size=65536 splash=verbose showopts instmode=http netconfig=dhcp netdevice=eth0 install=http://192.168.0.1/pxe/opensuse/
label windows 7
        kernel memdisk
        append iso initrd=images/win7/win7pex64.iso
menu end
menu begin
menu title utilities
label ..
menu exit
label   acronis
        kernel memdisk
        append iso initrd=images/acronis/acronis.iso
menu end

Открываем доступ по HTTP к файлам дистрибутивов Linux
vim /etc/httpd/conf.d/pxeboot.conf:

Alias /pxe /tftpboot/images/
<Directory /tftpboot/images/>
        Options Indexes FollowSymLinks
        Order Deny,Allow
        Deny from all
        Allow from 192.168.0.0/24
</Directory>

service httpd restart
chkconfig httpd on

Добавляем общий ресурс в samba
vim /etc/samba/smb.conf:

[pxe$]
        path = /tftpboot/images/win7
        comment = windows 7 pxe install folder
        read only = yes
        guest ok = yes
        hosts allow = 192.168.0.0/24

service smb start
chkconfig smb on

Настраиваем DHCP сервер
vim /etc/dhcp/dhcpd.conf:

authoritative;
option option-128 code 128 = string;
option option-129 code 129 = text;
allow booting;
allow bootp;
option domain-name "tehnikpc.net";
option domain-name-servers 192.168.0.1;
default-lease-time 720000;
max-lease-time 720000;
min-lease-time 720000;
log-facility local6;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.0.255;
        range dynamic-bootp 192.168.0.2 192.168.0.50;
        next-server 192.168.0.1;
        filename "pxelinux.0";
}

Открываем порты в фаерволле:

iptables -I INPUT 2 -s 192.168.0.0/24 -d 192.168.0.1 -i eth0 -p tcp -m state --state NEW -m multiport --dports 80,445 -j ACCEPT
iptables -I INPUT 3 -s 192.168.0.0/24 -d 192.168.0.1 -i eth0 -p udp -m multiport --dports 67,69 -j ACCEPT
service iptables save

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *