Введение

Стандарт загрузки с сервера, эпизод анимационного сериала «Время приключений».

В области вычислительной техники спецификация Preboot eXecution Environment, PXE (чаще всего произносится как /'//p//I//k//s//i:/ pixie, часто называемая PXE Boot/pixie boot) описывает стандартизированную клиент-серверную среду, которая загружает программный комплекс, полученный из сети, на клиентах с поддержкой PXE. На стороне клиента требуется только сетевой интерфейс (NIC) с поддержкой PXE и используется небольшой набор отраслевых стандартных сетевых протоколов, таких как DHCP и TFTP. Концепция PXE возникла в первые дни протоколов BOOTP/DHCP/TFTP, и с 2015 года она является частью стандарта Unified Extensible Firmware Interface (UEFI). В современных центрах обработки данных PXE является наиболее часто используемым способом загрузки, установки и развертывания операционных систем.

Обзор

С момента появления компьютерных сетей существовала постоянная потребность в клиентских системах, способных загружать соответствующие образы программного обеспечения с соответствующими параметрами конфигурации, получаемыми во время загрузки с одного или нескольких сетевых серверов. Для достижения этой цели клиенту необходимо использовать набор служб предварительной загрузки, основанных на отраслевых стандартных сетевых протоколах. Кроме того, программа Network Bootstrap Program (NBP), которая первоначально загружается и выполняется, должна быть разработана с использованием уровня клиентской прошивки (на устройстве, которое будет загружено через PXE), обеспечивая аппаратно-независимый стандартизированный способ взаимодействия с окружением сетевой загрузки. В этом случае доступность и соответствие стандартам являются ключевым фактором, необходимым для обеспечения совместимости системы сетевой загрузки. Одной из первых попыток в этом направлении была загрузка с использованием стандарта TFTP RFC 906, опубликованного в 1984 году, который установил стандарт Trivial File Transfer Protocol (TFTP) RFC 783, опубликованный в 1981 году, в качестве стандартного протокола передачи файлов для загрузки. Вскоре после этого последовал стандарт Bootstrap Protocol RFC 951 (BOOTP), опубликованный в 1985 году, который позволял дисковому клиенту обнаруживать свой собственный IP-адрес, адрес TFTP-сервера и имя NBP, которые должны быть загружены в память и выполнены. Сложности реализации BOOTP, среди прочих причин, в конечном итоге привели к разработке стандарта Dynamic Host Configuration Protocol RFC 2131 (DHCP), опубликованного в 1997 году. Пионерский подход TFTP/BOOTP/DHCP оказался недостаточным, поскольку в то время он не определял необходимую стандартизированную клиентскую часть среды подготовки. Preboot Execution Environment (PXE) была представлена как часть платформы Wired for Management компанией Intel и описана в спецификации, опубликованной Intel и SystemSoft. Версия PXE 2.0 была выпущена в декабре 1998 года, а обновление 2.1 было опубликовано в сентябре 1999 года. Среда PXE использует несколько стандартных протоколов клиент-сервер, включая DHCP и TFTP (в настоящее время определены RFC 1350, опубликованным в 1992 году). В схеме PXE клиентская сторона процесса подготовки является неотъемлемой частью стандарта PXE и реализуется либо в виде расширения BIOS сетевой карты (NIC), либо в виде текущих устройств в коде UEFI. Этот уникальный уровень прошивки предоставляет клиенту функции базового универсального сетевого интерфейса устройства (UNDI), минималистичного стека UDP/IP, клиентского модуля предварительной загрузки (DHCP) и клиентского модуля TFTP, которые вместе образуют интерфейсы прикладного программирования PXE (API), используемые NBP при взаимодействии с сервисами, предоставляемыми серверной частью среды PXE. Низкая пропускная способность TFTP, особенно при использовании по каналам связи с высокой задержкой, была первоначально смягчена опцией Blocksize для TFTP RFC 2348, опубликованной в мае 1998 года, а затем опцией Windowsize для TFTP RFC 7440, опубликованной в январе 2015 года, что позволило потенциально увеличить размер передаваемых данных и, таким образом, повысить пропускную способность.

Подробности

Окружающая среда PXE базируется на сочетании общепринятых интернет-протоколов, а именно UDP/IP, DHCP и TFTP. Эти протоколы были выбраны благодаря простоте их реализации в прошивке сетевой карты (NIC) клиента, что позволяет создавать стандартизированные PXE ROM с небольшим размером. Стандартизация, малый размер образов прошивки PXE и их низкое потребление ресурсов – одни из ключевых целей разработки, обеспечивающие идентичную реализацию клиентской части стандарта PXE на широком спектре систем, от мощных клиентских компьютеров до одноплатных компьютеров (SBC) с ограниченными ресурсами и систем на кристалле (SoC). DHCP используется для предоставления соответствующих сетевых параметров клиенту и, в частности, местоположения (IP-адреса) TFTP-сервера, на котором размещены, готовые к загрузке, начальная загрузочная программа (NBP) и дополнительные файлы. Для запуска сеанса загрузки PXE, компонент DHCP прошивки PXE клиента отправляет DHCPDISCOVER-пакет, содержащий специфические для PXE опции, на порт 67/UDP (порт DHCP-сервера); он запрашивает необходимую сетевую конфигурацию и параметры сетевой загрузки. Специфические опции PXE идентифицируют инициированную транзакцию DHCP как транзакцию PXE. Обычные DHCP-серверы (без поддержки PXE) смогут ответить стандартным DHCPOFFER, содержащим сетевую информацию (например, IP-адрес), но не специфические параметры PXE. Клиент PXE не сможет загрузиться, если получит ответ только от DHCP-сервера, не поддерживающего PXE. После обработки DHCPOFFER от DHCP-сервера с поддержкой PXE, клиент сможет установить собственный сетевой IP-адрес, маску подсети и т.д., а также указать на сетевые ресурсы загрузки, основываясь на полученном IP-адресе TFTP-сервера и имени NBP. Затем клиент передает NBP в свою оперативную память (RAM) с использованием TFTP, возможно, проверяет его (например, с помощью UEFI Secure Boot) и, наконец, загружается с него. NBP – это лишь первое звено в цепочке загрузки, и обычно они запрашивают через TFTP небольшой набор дополнительных файлов для запуска минималистичного окружения ОС (например, WindowsPE или базовое ядро Linux + initrd). Это минималистичное окружение ОС загружает свои собственные сетевые драйверы и стек TCP/IP. На этом этапе оставшиеся инструкции, необходимые для загрузки или установки полноценной ОС, предоставляются не через TFTP, а с использованием надежного протокола передачи данных (такого как HTTP, CIFS или NFS).

Семья

Microsoft создала неперекрывающееся расширение среды PXE с помощью своего уровня согласования загрузочной информации (BINL). BINL реализован как серверная служба и является ключевым компонентом их стратегий служб удаленной установки (RIS) и служб развертывания Windows (WDS). Он включает в себя определенные процессы подготовки и сетевой протокол, который можно рассматривать как расширение DHCP, разработанное Microsoft. BINL – это запатентованная технология Microsoft, использующая стандартную клиентскую прошивку PXE. В настоящее время публично доступной спецификации BINL не существует.