Настройка TFTP для PXE-загрузки | Thinstation по русски

Настройка TFTP для PXE-загрузки

Часто, при настройке загрузки thinstation по сети при помощи PXE возникает вопрос - "Как это сделать, какой сервер TFTP использовать ?", я для этой цели, и в качестве DHCP+DNS сервера, давно использую под Linux простенький сервер - dnsmasq, под Windows - TFTPD64 или можно настроить Mikrotik.

Устанавливается dnsmasq командой, в зависимости от вашей ОС: 
HTML ломает некоторые знаки. Для точного копирования команд справа от листинга есть кнопка <>)

aptitude install dnsmasq

или
yum install dnsmasq

или, если в вашем репозитории нет готового пакета, скачать со страницы загрузки и скомпилировать.

Ну и минимальный файл конфигурации для PXE, сервер имеет ip 192.168.111.254, шлюзом и TFTP-сервером является он же, PXE файлы лежат в папке /tftpboot:

# Назначаем сетевой интерфейс:
interface=eth0
# Отключаем сетевой интерфейс, если надо:
#except-interface=eth2
#DNS
domain=WORKGROUP
no-resolv
expand-hosts
# DNS server
server=8.8.8.8
server=8.8.4.4 
# DHCP
#раздаём адреса (диапазон с 50 по 200)
dhcp-range=192.168.111.50,192.168.111.200,255.255.255.0,72h

dhcp-option=option:router,192.168.111.254
dhcp-option=6,192.168.111.254
dhcp-option=option:ntp-server,192.168.111.254
dhcp-option=15,WORKGROUP
dhcp-lease-max=150
dhcp-leasefile=/var/log/dnsmasq.leases
cache-size=15

# Пишем статические адреса, что бы dhcp не раздавал их кому попало:
dhcp-host=00:1F:D0:6D:4C:BC,termserver,192.168.111.11
dhcp-host=90:E6:BA:CA:E2:0D,1c,192.168.111.100
dhcp-host=00:E0:52:CC:28:09,webserver,192.168.111.111

# Включаем TFTP-сервер:
enable-tftp

# Задаём путь до файлов загрузки:
tftp-root=/tftpboot
dhcp-boot=pxelinux.0,boothost,192.168.111.254

Для просмотра выданных IP из пула DHCP просто отдаём команду

cat /var/lib/misc/dnsmasq.leases

Данная конфигурация, с небольшими дополнениями для специфических настроек, работает без проблем более 5 лет.

Если у вас уже есть DHCP-сервер, то добавляем ему опции PXE и ставим только tftp-сервер - рекомендую под linux использовать tftpd-hpa, конфиг в 4 строчки:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--ipv4 --secure --create --umask 027 --permissive"

Опции:
create разрешает серверу создавать новые файлы,
ipv4 предписывает ему ожидать подключений только на адресах IPv4,
umask предписывает сбрасывать бит записи для группы и все биты доступа для остальных пользователей,
permissive предписывает не проводить никаких проверок прав доступа к файлу сверх производимых операционной системой.

Для Windows замечательно подходит tftpd32 или для сервера 2003.

Ну и после настройки tftp-сервера кладём в директорию /tftpboot следующин файлы:

initrd
vmlinuz
pxelnux.0
ldlinux.c32

и папку pxelinux.cfg с файлом default:

TIMEOUT 0
DEFAULT default
LABEL default
KERNEL ::vmlinuz
APPEND initrd=::initrd splash=silent,theme:default load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=786432 console=tty1 vt.global_cursor_default=0 quiet loglevel=3 LM=3

Если включена загрузка конфигурации TS по сети (в thinstation.conf.buildtime NET_FILE_ENABLED=On и NET_FILE_METHOD=tftp), то смотрим параметр param basepath в build.conf и если параметр (точка), то файл thinstation.conf.network + другие файлы для сетевой конфигурации TS кидаем в корень /tftpboot или создаём в /tftpboot папку, заданную параметром param basepath и кладём в неё файл thinstation.conf.network + другие файлы для сетевой конфигурации TS.

PS
При ошибке загрузки сетевых файлов нужно отключить пакеты networkmanager и udisks-glue и включить пакет ts-classic.

Обсудить на форуме (комментариев 14).