Когда компьютер при включении выводит строку PXE-E53: No boot filename received или бесконечно крутит сообщение Checking Media Presence, это значит, что сетевая карта пытается выполнить загрузку через PXE, но не получает от сервера нужные данные. Подобная картина встречается и при намеренной настройке сетевой установки ОС, и при случайном включении PXE в BIOS, когда машина «забыла» про локальный диск.
PXE (Preboot Execution Environment) — это технология, позволяющая компьютеру загрузиться не с жёсткого диска или USB-флешки, а по сети: клиент получает IP-адрес по DHCP, скачивает загрузчик по TFTP и запускает его. Технология широко применяется для массового развёртывания Windows и Linux, запуска бездисковых рабочих станций, диагностических сред и восстановления систем без физического доступа к машине.
В этой статье разберём, как работает PXE изнутри, как включить его в BIOS/UEFI, как поднять собственный PXE-сервер и что делать, когда загрузка зависает или падает с ошибкой.
Как работает загрузка через PXE: этапы процесса
Чтобы понимать, где искать неисправность, нужно представлять цепочку событий. Сетевой адаптер с поддержкой PXE содержит собственный код в ПЗУ (или использует UNDI-драйвер из UEFI) и при включении начинает действовать как самостоятельный загрузочный агент.
Процесс проходит в несколько стадий:
- 🔌 DHCPDISCOVER — клиент рассылает широковещательный запрос на получение IP-адреса, добавляя в него PXE-расширения (идентификатор архитектуры, класс устройства).
- 📡 Ответ DHCP/PXE-сервера — клиенту выдаётся IP-адрес, адрес TFTP-сервера (опция 66) и имя загрузочного файла (опция 67).
- 📥 Загрузка NBP — клиент по TFTP скачивает Network Boot Program (например,
pxelinux.0илиwdsnbp.com) в оперативную память. - 🚀 Запуск загрузчика — NBP получает управление и дальше подгружает меню, ядро ОС или установщик уже по TFTP, HTTP или SMB.
Если любой из этапов обрывается, загрузка останавливается именно на нём — и текст ошибки обычно указывает, на какой стадии произошёл сбой. Именно поэтому диагностику удобно вести по коду ошибки, а не методом перебора.
Включение PXE-загрузки в BIOS и UEFI
Названия пунктов меню и их расположение различаются у разных производителей материнских плат и ноутбуков, поэтому точный путь нужно сверять с документацией конкретной модели. Общая логика, однако, везде одинакова: сначала включается сама функция сетевой загрузки, затем она поднимается в приоритете загрузки.
Типовой порядок действий выглядит так:
- ⚙️ Войдите в BIOS/UEFI при включении (обычно клавиши
Del,F2илиF12— точную клавишу подсказывает заставка производителя). - 🌐 Найдите параметр вроде
PXE Boot,Network Boot,Boot from LANилиOnboard LAN Boot ROMи переведите его вEnabled. - 📋 В разделе приоритета загрузки (
Boot Priority,Boot Order) переместите сетевой адаптер выше локального диска, если требуется постоянная загрузка по сети. - 💾 Сохраните изменения (
Save & Exit) и перезагрузите машину.
Для разовой загрузки менять порядок не обязательно: на большинстве плат есть меню выбора загрузочного устройства (Boot Menu), где сетевой адаптер появляется отдельной строкой после включения PXE.
⚠️ Внимание: режим Secure Boot в UEFI блокирует загрузку неподписанных сетевых загрузчиков. Если PXE-загрузка обрывается сразу после получения файла, проверьте, не включён ли Secure Boot, и используйте подписанные загрузчики либо временно отключите проверку подписи на тестовой машине.
Legacy PXE и UEFI PXE: в чём разница
Режим загрузки клиента определяет, какой загрузочный файл он запросит у сервера. Клиент в режиме Legacy (BIOS/CSM) ожидает 16-битный загрузчик вроде pxelinux.0, а клиент в режиме UEFI — EFI-приложение, например bootx64.efi. Если сервер отдаёт «не тот» файл, клиент либо не сможет его запустить, либо зависнет сразу после скачивания.
Архитектуру клиента видно по идентификатору в DHCP-запросе (опция 93, Client System Architecture). Правильно настроенный PXE-сервер анализирует этот идентификатор и отдаёт каждому клиенту подходящий загрузчик. В простых конфигурациях с одним типом машин достаточно жёстко указать один файл в опции 67.
| Параметр | Legacy PXE | UEFI PXE |
|---|---|---|
| Тип загрузчика | 16-битный (pxelinux.0) | EFI-приложение (.efi) |
| Secure Boot | Не применим | Поддерживается, требует подписанных файлов |
| Стиль разметки диска | Обычно MBR | Обычно GPT |
| Типичная ошибка несовпадения | Зависание после загрузки файла | Отказ запуска, возврат в меню загрузки |
Практический вывод прост: режим клиента (Legacy или UEFI) и тип загрузочного файла на сервере должны совпадать. Это одна из самых частых причин «неработающего» PXE в смешанных сетях, где рядом стоят старые и новые машины.
Настройка собственного PXE-сервера
Минимальный PXE-сервер состоит из двух служб: DHCP (выдаёт адреса и параметры загрузки) и TFTP (отдаёт загрузочные файлы). Они могут работать на одной машине или быть разнесены, а DHCP-роль в корпоративной сети часто уже занята — тогда PXE-параметры добавляют в существующий сервер.
На Linux популярна связка dnsmasq или ISC DHCP плюс tftp-hpa, либо универсальный загрузчик iPXE, который умеет скачивать файлы по HTTP — это заметно быстрее и надёжнее TFTP. В Windows-инфраструктуре роль PXE обычно выполняет WDS (Windows Deployment Services), а для автоматизации развёртывания его дополняет MDT или Configuration Manager.
Для dnsmasq базовая конфигурация выглядит примерно так:
dhcp-range=192.168.1.50,192.168.1.150,12h
enable-tftp
tftp-root=/srv/tftp
dhcp-boot=pxelinux.0
После запуска служб в корень TFTP (/srv/tftp) помещают загрузчик и его конфигурацию. Проверить доступность файла можно с любой машины в сети командой TFTP-клиента — если файл скачивается, значит, транспорт работает и проблему следует искать в DHCP-опциях или в самом загрузчике.
☑️ Проверка PXE-сервера перед тестом
Почему iPXE часто предпочтительнее классического PXE
iPXE — это открытый сетевой загрузчик, который можно «подсадить» в цепочку после штатного PXE. Он поддерживает загрузку по HTTP/HTTPS, скрипты с условной логикой, меню с аутентификацией и работу через маршрутизируемые сети. Типовая схема: клиент по TFTP получает маленький iPXE, а всё остальное (ядра, образы) тянет уже по быстрому HTTP.
Типичные ошибки PXE и их диагностика
Большинство сбоев сетевой загрузки имеет характерный код, который выводится прямо на экран клиента. Зная код, можно сразу сузить поиск до одного звена цепочки, не перебирая настройки вслепую.
- 🚫 PXE-E51: No DHCP or proxyDHCP offers received — клиент не получил ответ от DHCP. Проверьте, что сервер работает, клиент в нужном VLAN, а между ними нет фильтрации широковещательного трафика.
- 🚫 PXE-E53: No boot filename received — адрес получен, но имя загрузочного файла не передано. Проверьте опцию 67 (или директиву
dhcp-boot) на DHCP-сервере. - 🚫 PXE-E32 / TFTP open timeout — клиент не смог скачать файл с TFTP. Проверьте, запущен ли TFTP-сервис, верный ли путь к файлу и не блокирует ли файрвол UDP-порт 69.
- 🚫 PXE-E11: ARP timeout — проблемы на канальном уровне: клиент не видит шлюз или сервер. Проверяйте кабель, порт коммутатора и настройки VLAN.
Если код ошибки отсутствует, а загрузка просто «зависает» после скачивания файла, почти наверняка загрузчик не подходит под режим клиента (Legacy против UEFI) либо блокируется Secure Boot. В этом случае полезно временно переключить тестовую машину в другой режим и посмотреть, изменится ли поведение.
⚠️ Внимание: в сетях с несколькими DHCP-серверами (например, роутер и WDS одновременно) клиент может получать конфликтующие ответы, и PXE-загрузка будет работать нестабильно. Оставьте один источник PXE-параметров, а лишние «помощники» отключите.
Где применяется PXE на практике
Главный сценарий — массовое развёртывание операционных систем. Администратору не нужно обходить десятки компьютеров с флешкой: машины загружаются по сети, получают образ и устанавливают ОС автоматически, часто вообще без участия человека. В связке с WDS/MDT так разворачивают Windows, с Cobbler, Foreman или netboot.xyz — дистрибутивы Linux.
Второй сценарий — диагностика и восстановление. По PXE удобно загружать Live-среды, средства тестирования памяти вроде Memtest86+, антивирусные спасательные диски и утилиты клонирования. Машина с неисправным диском или без ОС всё равно сможет загрузиться и дать доступ к инструментам.
Третья область — бездисковые рабочие станции и тонкие клиенты, где вся система грузится с сервера при каждом включении. Такой подход упрощает централизованное обновление: образ меняется в одном месте, а все клиенты получают его при следующей загрузке.
Практические рекомендации по надёжности
TFTP — простой, но медленный и не слишком устойчивый к потерям протокол. Для передачи больших образов (ядро, initrd, установочные файлы) лучше поднимать HTTP-сервер и передавать тяжёлые данные через него, оставив TFTP только для первичного загрузчика. Такая схема заметно сокращает время установки.
Отдельного внимания заслуживает безопасность. PXE по умолчанию не шифрует трафик и не проверяет подлинность сервера, поэтому любой узел в сети теоретически может «ответить» клиенту раньше легитимного сервера и подсунуть свой загрузчик. В недоверенных сетях сегментируйте PXE-клиентов в отдельный VLAN и ограничивайте, кто может отвечать на DHCP-запросы.
⚠️ Внимание: не оставляйте PXE первым в порядке загрузки на рабочих машинах без необходимости. Помимо задержки при каждом включении (тайм-аут ожидания DHCP), это создаёт риск случайной переустановки системы, если PXE-сервер настроен на автоматическое развёртывание.
Наконец, документируйте конфигурацию: какие файлы лежат в TFTP, какие опции выдаёт DHCP, для каких архитектур настроены загрузчики. При обновлении сервера или смене парка машин эти записи сэкономят часы диагностики.
Часто задаваемые вопросы о PXE
Работает ли загрузка через PXE по Wi-Fi?
Штатный PXE рассчитан на проводные сетевые адаптеры: код загрузчика встроен в прошивку Ethernet-контроллера, а у Wi-Fi-модулей такой поддержки, как правило, нет. Существуют обходные решения на базе iPXE, но они требуют предварительной загрузки с локального носителя, что лишает идею смысла. Для сетевой загрузки используйте кабель.
Чем опции 66 и 67 отличаются от proxyDHCP?
Опции 66 (TFTP server) и 67 (Bootfile name) задаются прямо на основном DHCP-сервере. Если изменять его нельзя (например, им управляет другой отдел), применяется схема proxyDHCP: отдельный PXE-сервис отвечает клиенту параллельно с основным DHCP и сообщает только параметры загрузки, не выдавая адресов.
Можно ли загрузить по PXE обычный ISO-образ?
Напрямую — нет: PXE передаёт загрузчик, а не готовый ISO. Однако загрузчики вроде iPXE и memdisk (из пакета Syslinux) умеют монтировать ISO из памяти или по сети, что позволяет запускать, например, установщики Linux и Live-системы. Для Windows-образов обычно используют загрузку через WinPE.
Почему после включения PXE компьютер долго включается?
Если сетевая загрузка стоит первой в приоритете, а PXE-сервера в сети нет, клиент каждый раз ждёт тайм-аут DHCP-ответов — это может занимать десятки секунд. Решение: вернуть локальный диск на первое место и вызывать PXE вручную через Boot Menu, когда он действительно нужен.
Нужна ли лицензия или специальное железо для PXE-сервера?
Нет. Серверную часть можно поднять на бесплатных инструментах (dnsmasq, iPXE, netboot.xyz) на любой машине в сети. Со стороны клиента требуется лишь сетевой адаптер с поддержкой PXE — она есть практически во всех современных материнских платах и ноутбуках. Продукты Microsoft (WDS) входят в Windows Server и лицензируются вместе с ним.