Сетевая загрузка PXE: как работает и как настроить

Ошибка PXE-E53: No boot filename received или циклическое сообщение PXE-M0F: Exiting PXE ROM при включении компьютера почти всегда означает одно из двух: либо машина пытается загрузиться по сети из-за неверного порядка загрузки в BIOS, либо PXE-сервер в сети не отвечает корректно. Прежде чем менять настройки, проверьте, стоит ли Network Boot первым в списке загрузочных устройств — если вы не настраивали сетевую загрузку намеренно, это и есть причина.

Сетевая загрузка PXE (Preboot Execution Environment) — технология, позволяющая компьютеру загружать операционную систему или установщик не с локального диска, а по сети с удалённого сервера. Она активно применяется в корпоративных средах для массового развёртывания Windows и Linux, запуска диагностических утилит и работы бездисковых рабочих станций. В этой статье разберём принцип работы PXE, настройку серверной и клиентской части, а также типичные ошибки.

Как работает PXE: этапы загрузки

Процесс сетевой загрузки состоит из нескольких последовательных этапов, и сбой на любом из них приводит к характерной ошибке. Сначала сетевая карта с поддержкой PXE отправляет в сеть DHCP-запрос с расширенными опциями, сообщая, что клиенту нужна не только сетевая конфигурация, но и адрес загрузочного сервера. DHCP-сервер (или отдельный proxyDHCP) отвечает IP-адресом клиента, адресом TFTP-сервера и именем загрузочного файла.

Далее клиент обращается по протоколу TFTP (Trivial File Transfer Protocol) к указанному серверу и скачивает загрузчик — например, pxelinux.0 для BIOS-режима или bootx64.efi для UEFI. Загрузчик получает управление, подгружает конфигурацию и ядро операционной системы, после чего стартует установка или запуск среды вроде Windows PE.

  • 🔌 DHCP — выдача IP-адреса и параметров загрузки (опции 66 и 67).
  • 📡 TFTP — передача начального загрузчика клиенту.
  • 📦 HTTP/NFS/SMB — доставка основного образа ОС на поздних этапах.
  • 🧭 NBP (Network Bootstrap Program) — сам загрузочный файл, запускаемый клиентом.

Что нужно для организации PXE-загрузки

Для работающей инфраструктуры сетевой загрузки потребуется несколько компонентов. Во-первых, DHCP-сервер, способный передавать дополнительные опции: адрес сервера загрузки (опция 66, next-server) и имя загрузочного файла (опция 67, bootfile-name). Подойдёт как сервер на базе ISC DHCP или dnsmasq в Linux, так и роль DHCP в Windows Server.

Во-вторых, нужен TFTP-сервер с размещёнными загрузочными файлами. Популярные варианты — tftpd-hpa на Linux или встроенный TFTP в составе WDS (Windows Deployment Services). В-третьих, клиентские машины должны иметь сетевую карту с поддержкой PXE — она есть практически во всех современных материнских платах и ноутбуках.

Отдельно учитывайте режим прошивки клиента. Загрузочный файл для Legacy BIOS и для UEFI — разные, и неверный выбор NBP является одной из самых частых причин неудачной загрузки. Если в сети есть оба типа клиентов, DHCP-сервер настраивают на выдачу разных имён файлов в зависимости от архитектуры клиента.

📊 Для какой задачи вы используете (или планируете) PXE-загрузку?
Массовая установка Windows
Развёртывание Linux
Диагностика и восстановление систем
Бездисковые рабочие станции

Настройка клиента: BIOS и UEFI

На стороне клиента настройка сводится к включению сетевой загрузки и выбору её приоритета. Войдите в BIOS/UEFI (обычно клавишей Del или F2 при включении, но комбинация зависит от производителя — сверьтесь с документацией вашей платы или ноутбука) и найдите раздел загрузки, обычно называемый Boot.

Необходимо активировать опцию вроде Network Boot, PXE Boot или LAN Boot ROM — название зависит от версии прошивки. Затем переместите сетевой адаптер на нужную позицию в порядке загрузки. В UEFI-режиме может потребоваться отключить Secure Boot, если загрузчик не подписан доверенным сертификатом — это частая причина мгновенного возврата в меню загрузки без видимой ошибки.

☑️ Проверка клиента перед PXE-загрузкой

Выполнено: 0 / 5
⚠️ Внимание: если PXE-загрузка не нужна, оставлять сетевой адаптер первым в списке загрузки не стоит — при недоступности локального диска или случайном изменении порядка компьютер будет каждый раз тратить время на попытку сетевой загрузки и завершать её ошибкой PXE-M0F.

Настройка сервера: общий порядок

Конкретные шаги зависят от выбранной платформы, поэтому ниже — универсальный порядок, применимый к большинству решений. Для Windows-среды стандартным вариантом является роль WDS, для Linux — связка dnsmasq или ISC DHCP + tftpd-hpa + загрузчик Syslinux/PXELINUX или iPXE.

Общая последовательность такова: установите и настройте DHCP с опциями 66 и 67, разверните TFTP-сервер и разместите в его корневом каталоге загрузочные файлы, затем подготовьте конфигурацию меню загрузки и сами образы ОС. После этого проверьте, что порты не заблокированы брандмауэром: DHCP использует UDP 67/68, TFTP — UDP 69.

Пример фрагмента конфигурации dnsmasq для выдачи параметров PXE:

dhcp-boot=pxelinux.0

enable-tftp

tftp-root=/srv/tftp

Если DHCP уже обслуживается другим сервером, который нельзя менять, настройте dnsmasq в режиме proxyDHCP — он будет отвечать только PXE-клиентам, дополняя ответы основного сервера, не конфликтуя с ним.

Сравнение популярных решений для PXE

Выбор инструмента зависит от масштаба сети и целевых систем. Ниже — сравнение распространённых вариантов по ключевым признакам.

РешениеПлатформаОсновное назначениеСложность настройки
WDSWindows ServerРазвёртывание WindowsСредняя
Microsoft SCCM/MECMWindows ServerКрупные корпоративные развёртыванияВысокая
dnsmasq + PXELINUXLinuxУниверсальная загрузка, небольшие сетиНизкая
iPXEКроссплатформенныйРасширенные сценарии, загрузка по HTTPСредняя
FOG ProjectLinuxКлонирование и развёртывание образовСредняя

Для небольшой сети или тестового стенда проще всего начать с dnsmasq: один сервис закрывает и DHCP, и TFTP. Если задача — регулярная установка Windows на десятки машин, логичнее рассмотреть WDS, который нативно интегрируется с инфраструктурой Microsoft.

Типичные ошибки PXE и их диагностика

Коды ошибок PXE стандартизированы, и по ним можно сузить поиск. Возможная причина каждой ошибки определяется этапом, на котором оборвалась загрузка, поэтому важно точно записать код и момент его появления.

  • PXE-E51 — не получены ответы от DHCP или proxyDHCP. Проверьте доступность DHCP-сервера и настройку ретрансляции (DHCP Relay / IP Helper), если клиент в другой подсети.
  • PXE-E53 — DHCP-ответ получен, но без имени загрузочного файла. Проверьте опции 66/67 или конфигурацию proxyDHCP.
  • PXE-E32 — тайм-аут TFTP. Файл не скачивается: проверьте, запущен ли TFTP-сервис и открыт ли UDP-порт 69.
  • PXE-M0F — клиент выходит из PXE, не найдя загрузочный сервер. Часто следствие предыдущих ошибок или отсутствия PXE-инфраструктуры в сети.
⚠️ Внимание: если клиент и сервер находятся в разных подсетях, широковещательные DHCP-запросы не пройдут через маршрутизатор без настройки DHCP Relay (агента ретрансляции) на сетевом оборудовании. Это одна из самых частых причин «невидимого» PXE-сервера в сегментированных сетях.

Полезный метод диагностики — захват трафика на стороне сервера. Если в дампе виден DHCP Discover от клиента, но нет ответа — проблема в DHCP. Если ответ есть, а TFTP-запроса не следует — клиент не получил или не понял параметры загрузки. Такой поэтапный анализ быстрее, чем перебор настроек вслепую.

Почему UEFI-клиент не грузится, хотя BIOS-клиенты работают

DHCP выдаёт всем клиентам один и тот же файл pxelinux.0, который предназначен только для Legacy BIOS. UEFI-клиенту нужен EFI-загрузчик (например, bootx64.efi или snponly.efi для iPXE). Решение — настроить на DHCP раздачу разных имён файлов в зависимости от опции 93 (Client System Architecture), которую клиент сообщает в запросе.

Безопасность и производительность PXE-сети

PXE по своей природе не шифрует трафик: TFTP передаёт файлы в открытом виде, а любой клиент в сети может запросить загрузку. В изолированной инсталляционной VLAN это приемлемо, но в общей сети стоит ограничить доступ к TFTP-серверу и использовать выделенный сегмент для развёртывания. Если применяется iPXE, возможна загрузка по HTTPS, что заметно повышает защищённость.

По производительности учтите, что TFTP — медленный протокол с подтверждением каждого блока. Для передачи больших образов лучше использовать связку, где по TFTP скачивается только маленький загрузчик, а основной образ тянется по HTTP или SMB. Так работает, в частности, iPXE, и выигрыш во времени развёртывания может быть существенным.

Часто задаваемые вопросы

Можно ли использовать PXE без отдельного сервера?

Нет, серверная часть обязательна — клиенту нужно откуда-то получить загрузчик. Однако в роли сервера может выступать обычная рабочая станция с установленным dnsmasq или аналогичным ПО, выделенное оборудование не требуется.

Почему компьютер при включении показывает PXE-E61: Media test failure?

Эта ошибка означает, что клиент не обнаружил сетевое соединение — возможная причина в отключённом кабеле, неисправном порте коммутатора или отключённом сетевом адаптере в BIOS. Если вы не планировали сетевую загрузку, просто уберите сетевой адаптер из начала списка загрузочных устройств.

Работает ли PXE через Wi-Fi?

Классический PXE рассчитан на проводные сетевые адаптеры: поддержка загрузки по Wi-Fi в прошивках встречается редко и зависит от конкретной модели устройства. На практике для беспроводных сценариев используют загрузку с USB-носителя с последующим доступом к сети.

Чем iPXE отличается от обычного PXE?

iPXE — расширенный загрузчик с открытым кодом, который поддерживает загрузку по HTTP/HTTPS, скрипты, аутентификацию и другие возможности, недоступные базовому PXE-ROM сетевой карты. Его можно запустить как цепочку после штатного PXE.

Опасно ли включать PXE в домашней сети?

Само по себе включение сетевой загрузки на клиенте безопасно — без PXE-сервера в сети машина просто перейдёт к следующему загрузочному устройству. Риск появляется, если в сети работает посторонний DHCP/PXE-сервер: тогда возможна загрузка нежелательного образа, поэтому в недоверенных сетях сетевую загрузку лучше держать выключенной.