Поднимаем сервер PXE-Boot на Debian 7
Что можно сделать с этим Для просмотра ссылок Вы должны быть авторизованы на форуме.-boot'ом? Зачем он нужен?
Ну... Рассуждать можно долго и нудно. Достоинства там расписывать, возможности в теории...
Я поступлю проще. Расскажу с из-за чего у меня возникла идея поднять сервер PXE-Boot на Debian 7 и во что это вылилось на данный момент.
Вот во что это вылилось на данный момент: Сервер Сетевой Установки ОС по локальной сети Ultimate Deployment Appliance RUS [Релизы].
Как включить на компьютере, который надо загрузить по сети, опцию загрузки в BIOS смотрите здесь.


Вот во что это вылилось на данный момент: Сервер Сетевой Установки ОС по локальной сети Ultimate Deployment Appliance RUS [Релизы].
Как включить на компьютере, который надо загрузить по сети, опцию загрузки в BIOS смотрите здесь.
А началось это с того, что возникла нужда установить на старенький ноутбук у которого CD-привод приказал долго жить ОС Windows XP. Единственное решение, которое заработало - PXE-boot. Потом на очереди подошла Windows 7, Debian, Ubuntu и т.д. Ну, ладно, ОС устанавливаются, что можно ещё организовать? Да много чего. Например, тест памяти Memtest86+, Acronis, Clonezilla, Paragon Hard Disk Manager и т.д. и т.п. В итоге у меня получился реанимационный комплекс. В интернете полно всяких описаний как сварганить себе флешку-реаниматор. А у меня получился сервер-реаниматор. Да и поднять его оказалось не так сложно. Муторно, да. Но если всё делать постепенно, по мере необходимости, то и не возникнет никаких трудностей. Убедил? Тогда вперёд! 

Описание служб
Для организации полноценного сервера PXE-boot на Debian 7 нам нужно установить несколько служб. Я их перечислю в порядке установки и кратко поясню для чего они нужны.
Приступим к установке служб. Исходные данные сервера:- Устанавливаемые службы:
- Служба DHCP - раздаёт настройки сети и информацию о том, где искать загрузочные файлы и какой из них запускать первым (dhcp3-server).
- Служба TFTP - раздаёт загрузочные файлы на начальном этапе (tftpd-hpa).
- Служба Syslinux предоставит нам меню для выбора ОС и опций её загрузки.
- Служба доступа к файлам - будет раздавать файлы на поздних этапах по протоколам SMB, NBD, HTTP, NFS и т.д.
- Служба кэширующий прокси - будет хранить копии устанавливаемых пакетов разных дистрибутивов Linux (Apt-Cacher-Ng)
Доменное имя: debmirror.lan
IP-адрес: 192.168.1.111
Шлюз: 192.168.1.1
Маска: 255.255.255.0
Установка службы DHCP
Устанавливаем isc-dhcp-server: популярный DHCP сервер, ставший стандартом де-факто для большинства UNIX систем.
Код: Выделить всё
aptitude install isc-dhcp-server
Код: Выделить всё
nano /etc/default/isc-dhcp-server
Код: Выделить всё
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
# Путь к файлу конфигурации сервера. Изменим, т.к. будем писать свой конфиг
DHCPD_CONF=/etc/dhcp/pxeboot.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid
# Additional options to start dhcpd with.
#Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#Separate multiple interfaces with spaces, e.g. "eth0 eth1".
# Имена сетевых интерфейсов, которые будет обслуживать сервер. Если на
# вашем сервере их несколько, разделяйте пробелами, например, так "eth0 eth1".
INTERFACES="eth0"
Код: Выделить всё
nano /etc/dhcp/pxeboot.conf
Код: Выделить всё
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none; ddns-updates off;
allow booting;
# Прописываем что как назвывается и где находится
option domain-name "debmirror.lan";
option domain-name-servers 192.168.1.1;
option routers 192.168.1.1;
# Правила идентификации DHCP запросов от PXE и Etherboot клиентов.
class "pxe" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
}
class "etherboot" {
match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
}
# Выделяем ппул адресов для клиентов pxe и etherboot
subnet 192.168.1.0 netmask 255.255.255.0 {
option broadcast-address 192.168.1.255;
pool {
default-lease-time 180; # выдавать аренду дольше нет смысла
max-lease-time 360; # максимальное время аренды
server-name "debmirror.lan"; # имя pxe-севера
next-server 192.168.1.111; # в мануалах пишут, что можно прописывать
# доменное имя, но здесь лучше так
filename "pxelinux.0"; # имя загрузочного файла
option root-path "192.168.1.111:/mirror/tftp"; # указываем путь к
# каталогу явно
allow members of "pxe"; # разрешаем pxe
allow members of "etherboot"; # разрешаем etherboot
range 192.168.1.50 192.168.1.59; # количество возможных клиентов
}
}
Перезапустим isc-dhcp-server для применения новых настроек:
Код: Выделить всё
/etc/init.d/isc-dhcp-server restart

Установка Службы TFTP
Устанавливаем tftpd-hpa: TFTP-сервер с поддержкой специфичных требований к PXE. Единственный, по-крайней мере известный мне, сервер, который "умеет" переименовывать файлы "на лету" (зачем это нам надо, спросите Вы? Мы с этим столкнёмся при установке ОС Windows. Там я опишу эту проблему подробнее).
Код: Выделить всё
aptitude install tftpd-hpa
Код: Выделить всё
/mirror/tftp
Код: Выделить всё
dpkg-reconfigure tftpd-hpa
► Показать
Важно: TFTP сервер раздаёт содержимое только указанного корневого каталога.Или отредактировать конфигурационный файл,вручную изменить настройкиКод: Выделить всё
nano /etc/default/tftpd-hpa
и перезапустить TFTP-серверКод: Выделить всё
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/mirror/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
Код: Выделить всё
/etc/init.d/tftpd-hpa restart
Так, TFTP у нас установлен и настроен, идём дальше.
Установка Syslinux
Устанавливаем Для просмотра ссылок Вы должны быть авторизованы на форуме. (вернее не сам Syslinux, а только его часть, где находятся нужные нам файлы). Актуальная версия Для просмотра ссылок Вы должны быть авторизованы на форуме.
Код: Выделить всё
cd /mirror/tftp/
mkdir syslinyx
cd syslinyx
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.xz
tar -xpJf syslinux-6.03.tar.xz

► Показать
Код: Выделить всё
cd /mirror/tftp
Код: Выделить всё
mkdir pxelinux.cfg
Код: Выделить всё
mkdir boot
Код: Выделить всё
cd boot/
find /mirror/tftp/syslinux/syslinux-6.03/ -name "memdisk" -exec cp '{}' . \;
find /mirror/tftp/syslinux/syslinux-6.03/bios/com32 -name "chain.c32" -exec cp '{}' . \;
find /mirror/tftp/syslinux/syslinux-6.03/bios/com32 -name "vesamenu.c32" -exec cp '{}' . \;
find /mirror/tftp/syslinux/syslinux-6.03/bios/com32 -name "menu.c32" -exec cp '{}' . \;
Код: Выделить всё
cd ..
find /mirror/tftp/syslinux/syslinux-6.03/* -name "pxelinux.0" -exec cp '{}' . \;
find /mirror/tftp/syslinux/syslinux-6.03/* -name "ldlinux.c32" -exec cp '{}' . \;
find /mirror/tftp/syslinux/syslinux-6.03/bios/com32 -name "libutil.c32" -exec cp '{}' . \;

Не знаю, чем руководствуются разработчики syslinux, но до сих пор кодировка шрифтов должна быть только CP866.
Красивости и локализацию сделаем позднее, сейчас нам надо создать простенькое меню, чтобы поверить работу pxe-сервера.
Важно: имя файла должно быть именно default.
Код: Выделить всё
nano pxelinux.cfg/default
Код: Выделить всё
default boot/menu.c32
menu title Boot menu
label bootHDD
menu label Boot from HDD
#menu default
localboot 0x0
► Показать
Загрузка ОС
Если обычно мануалы пишут по принципу "от простого к сложному", то здесь будут ссылки на установку той или иной ОС или утилиты по мере поступления задачи. Первой была задача установить ОС Windows XP.
[How To] Установка Windows XP по сетиВсе вопросы сюда.
Мануал в разработке