Должны быть установлены пакеты: tftp tftp-server dhcp-common dhcp-server nfs-server
Должен работать DNS-сервер, указанный в /etc/dhcp/dhcpd.conf.
Адреса клиента не должно быть в /etc/hosts.deny
Должны быть запущены сервисы dhcpd, nfs, portmap, nfslock, tftp (через xinet.d)
Сетевая карта
Если сетевая карта отдельная, для загрузки с неё нужно
вставить микросхему с прошивкой
проставить в биосе загрузку с LAN (или иногда есть параметр «активировать IRQXX» 18 или 19 или 17)
например у rtl8139 надо утилитой rset8139 настроить размер микросхемы bootrom
Для
Загрузчик Etherboot
Готовый загрузчик скачивается с сайта http://rom-o-matic.net
В зависимости от типа, он может грузиться либо через PXE, либо с дискеты.
Без указанного имени файла (file в dhcpd.conf) принимать (DHCP offer) адрес не будет
Загрузчик PXE
Если в плату уже встроен загрузчик PXE, задачу можно свести к Etherboot. Загрузчик etherboot должен быть для конкретной сетевой карты.
Сначала к DHCP обращается PXE, получает себе Etherboot-загрузчик. Далее этот загрузчик грузит ядро. Поскольку обращаются они одинаково, проверяем кто именно обращается:
Сервис раздачи адресов DHCPD
Пример записи в dhcpd.conf:
root-path задаёт параметр nfsroot ядру, указывая, с какой машины, из какого каталога монтировать NFS – в моей сборке этого патча нет.
В параметре filename путь к файлу указывается относительно корневого каталога, указанного для TFTP.
Полный пример:
Упрощённый протокол передачи файлов: TFTP
Удостовериться в правильном пути к каталогу tftp при запуске сервиса. Должен быть /var/lib/tftpboot, баг по этому поводу послан.
Настройка NFS
Записать в /etc/exports экспорт корневой файловой системы для загружающейся машины
Ядро
Используется обычное ядро и специально подготовленный initrd. Обратим внимание, что в initrd загружается модуль для сетевой карты, так что надо ли все известные модули по очереди грузить, либо определять сетевую карту, либо initrd делать персональный для каждой карты.
Для initrd нужен специальный busybox с патчем для получения пути для загрузки по nfs (хотя это можно сделать и скриптом по IP в initrd).
Файл с ядром для загрузки должен быть специально подготовлен:
mkelf-linux
VER=`uname -r`
mkinitrd -with nfs -f -v -omit-scsi-modules initrd-up.img ${VER}lav1
mkelf-linux -root-dir=/var/lib/tftpboot/root_system -output=vmlinuz vmlinuz-up initrd-up.img
Требуемые пакеты
Замечания
1. Не испытана загрузка через PXE без сведения к Etherboot.
2. Не слишком ли большая корневая система требуется для сетевой загрузки?
3. Предельно совместить сетевую загрузку с ALT.