Сетевая установка PXE boot c *nix сервера

Для использования подойдет любая операционная система.
Использовали Debian 7.
root@debian:~# more /etc/debian_version
7.11

1. Установка и настройка TFTP Сервера:
Ставим tFtp сервер.
sudo apt-get install tftpd-hpa
Редактируем конфиг
sudo nano /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/var/lib/tftpboot”
TFTP_ADDRESS=”0.0.0.0:69″
TFTP_OPTIONS=”–secure -m /var/lib/tftpboot/tftp-remap -v”

Создаем файл sudo nano /var/lib/tftpboot/tftp-remap
с содержимым автозамен для установки Windows:
r bootmgr.exe /seven/bootmgr.exe
r abortpxe.com /seven/abortpxe.com
r hdlscom1.com /seven/hdlscom1.com
r hdlscom1.n12 /seven/hdlscom1.n12
r hdlscom2.com /seven/hdlscom2.com
r hdlscom2.n12 /seven/hdlscom2.n12
r pxeboot.com /seven/pxeboot.com
r pxeboot.n12 /seven/pxeboot.n12
r WdsConfig.inf /seven/WdsConfig.inf
r wdsnbp.com /seven/wdsnbp.com
r \\Boot\\BCD seven/Boot/BCD
r \\boot\\boot.sdi seven/Boot/boot.sdi
r \\Boot\\winpe.wim seven/Boot/winpe.wim

2. Создаем наше PXE меню.
Качаем архив syslinux. Скачиваем последнюю версию и изымаем pxelinux.0, chain.c32, menu.c32:

# wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.04.tar.bz2
# tar xf syslinux-4.04.tar.bz2
# cp syslinux-4.04/core/pxelinux.0 /srv/tftp/

либо руками качаем с https://www.kernel.org/pub/linux/utils/boot/syslinux/
Файлы находятся в директориях:
syslinux-4.04\core\pxelinux.0
syslinux-4.04\com32\modules\chain.c32
syslinux-4.04\com32\menu\menu.c32

Эти три файла грузим в наш корень tftp сервера /var/lib/tftpboot

создаем наше меню /var/lib/tftpboot/pxelinux.cfg/default
содержимое:

ui menu.c32
PROMPT 0
menu background background.png
menu title PXE boot menu

LABEL bootlocal
menu label Boot from first HDD
kernel chain.c32
append hd0 0
timeout 120000
TEXT HELP
The system will boot after time is up.
ENDTEXT

LABEL Windows ->
KERNEL menu.c32
APPEND pxelinux.cfg/windows

LABEL Linux ->
KERNEL menu.c32
APPEND pxelinux.cfg/linux

LABEL FreeBSD ->
KERNEL menu.c32
APPEND pxelinux.cfg/bsd

LABEL HDD and RAM utils ->
KERNEL menu.c32
APPEND pxelinux.cfg/du

LABEL LiveCDs ->
KERNEL menu.c32
APPEND pxelinux.cfg/livecds

LABEL Antiviruses ->
KERNEL menu.c32
APPEND pxelinux.cfg/av

создаем меню Windows /var/lib/tftpboot/pxelinux.cfg/windows
PROMPT 0
UI samenu.c32
menu background background.png
MENU TITLE Windows

LABEL <- Main Menu KERNEL menu.c32 APPEND pxelinux.cfg/default LABEL Windows 10 (x32/x64) kernel ten/pxeboot.0 LABEL Windows 7 (x32/x64) kernel seven/pxeboot.0 LABEL Windows XP kernel xp/pxeboot.0 LABEL <- Main Menu KERNEL menu.c32 APPEND pxelinux.cfg/defaul
и т.д.

На этом PXE меню готово так как у нас отдельный DHCP сервер, если такового нет дополнительно нужно его установить.

IMG_20170216_124631

Теперь добавим разные способы установки.
Samba описана в статье для сетевой установки Windows 7

Доступ по протоколу http, устанавливаем apache
aptitude install apache2
Редактируем конфиг:
nano /etc/apache2/sites-enabled/000-default
и указываем корень к нашим смонтированным OS /var/lib/tftpboot/images к примеру.
Перезагружаем apache
service apache2 restart

Редактируем fstab nano /etc/fstab и дописываем туда наши ISO

/var/lib/tftpboot/iso/win7/win7.iso /var/lib/tftpboot/iso-seven udf,iso9660 user,loop 0 0
/var/lib/tftpboot/iso/Mint/linuxmint-18.1-mate-32bit.iso /var/lib/tftpboot/images/mint/linuxmint-18.1-mate-32bit udf,iso9660 user,loop 0 0
/var/lib/tftpboot/iso/CentOS/CentOS-7-i386-DVD-1511.iso /var/lib/tftpboot/images/centos/CentOS-7-i386-DVD-1511 udf,iso9660 user,loop 0 0

Ставим NFS
aptitude install nfs-kernel-server
nano /etc/exports

# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/var/lib/tftpboot/images/mint/linuxmint-18.1-mate-32bit *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure)
/var/lib/tftpboot/images/centos/CentOS-7-i386-DVD-1511 *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure)

Запускаем: /etc/init.d/nfs-kernel-server start