Вот во что это вылилось на данный момент: Сервер Сетевой Установки ОС по локальной сети Ultimate Deployment Appliance RUS [Релизы].
Как включить на компьютере, который надо загрузить по сети, опцию загрузки в BIOS смотрите здесь.
- Устанавливаемые службы:
- Служба 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
Устанавливаем 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
Устанавливаем 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, а только его часть, где находятся нужные нам файлы). Актуальная версия Для просмотра ссылок Вы должны быть авторизованы на форуме.
Код: Выделить всё
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
Все вопросы сюда.
Мануал в разработке