Среда выполнения перед загрузкой - Preboot Execution Environment

Обзор PXE высокого уровня

В вычислениях Предзагрузочная среда выполнения (PXE, чаще всего произносится как /ˈпɪksя/ пикси) спецификация описывает стандартизованный клиент-сервер среда, которая сапоги сборка программного обеспечения, полученная из сети, на клиентах с поддержкой PXE. На стороне клиента требуется только PXE-совместимый контроллер сетевого интерфейса (NIC) и использует небольшой набор стандартных сетевых протоколов, таких как DHCP и TFTP.

Концепция PXE зародилась в первые дни таких протоколов, как BOOTP / DHCP / TFTP, а с 2015 г. он является частью Унифицированный расширяемый интерфейс встроенных микропрограмм (UEFI) стандарт. В современных центрах обработки данных PXE - самый частый выбор[1] для загрузки, установки и развертывания операционной системы.

Обзор

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

Одной из первых попыток в этом отношении была загрузка Bootstrap с использованием стандарта TFTP. RFC 906, опубликованный в 1984 г., который установил опубликованный в 1981 г. Простой протокол передачи файлов (TFTP) стандарт RFC 783 для использования в качестве стандартного протокола передачи файлов для начальной загрузки. Вскоре после этого последовал Протокол начальной загрузки стандарт RFC 951 (BOOTP), опубликованный в 1985 году, который позволял бездисковой клиентской машине обнаруживать свой собственный IP-адрес, адрес TFTP-сервера и имя NBP, которое необходимо загрузить в память и выполнить. Трудности с реализацией BOOTP, среди прочих причин, в конечном итоге привели к разработке Протокол динамического конфигурирования сервера стандарт RFC 2131 (DHCP) опубликовано в 1997 году. Новаторский подход TFTP / BOOTP / DHCP не оправдал ожиданий, поскольку в то время он не определял требуемую стандартизованную клиентскую сторону среды инициализации.

Preboot Execution Environment (PXE) была представлена ​​как часть Подключено к управлению[2] рамки Intel и описывается в спецификации, опубликованной Intel и SystemSoft. Версия 2.0 PXE была выпущена в декабре 1998 года, а обновление 2.1 было обнародовано в сентябре 1999 года.[3] В среде PXE используется несколько стандартных клиент-серверных протоколов, включая DHCP и TFTP (теперь они определены опубликованным в 1992 г. RFC 1350 ). В схеме PXE клиентская сторона уравнения подготовки является неотъемлемой частью стандарта PXE и ​​реализована либо как Карта сетевого интерфейса (NIC) BIOS расширение или текущие устройства в UEFI код. Этот отличительный уровень прошивки предоставляет клиенту функции базового Универсальный интерфейс сетевого устройства (UNDI), минималистичный UDP /IP стек, клиентский модуль предварительной загрузки (DHCP) и клиентский модуль TFTP, вместе образующие PXE интерфейсы прикладного программирования (API-интерфейсы), используемые NBP при необходимости взаимодействия со службами, предлагаемыми серверным аналогом среды PXE. Низкий уровень TFTP пропускная способность, особенно при использовании на высокихзадержка ссылки, изначально было смягчено опцией TFTP Blocksize Option RFC 2348 опубликовано в мае 1998 г., а позже в TFTP Windowsize Option RFC 7440 опубликовано в январе 2015 года, что позволяет потенциально увеличить объем доставки полезной нагрузки и, таким образом, повысить пропускную способность.

Подробности

Среда PXE основана на комбинации стандартных Интернет-протоколов, а именно UDP / IP, DHCP и TFTP. Эти протоколы были выбраны потому, что они легко реализуются в микропрограммном обеспечении сетевой карты клиента, что приводит к стандартизации небольших размеров.след 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.

После синтаксического анализа DHCP-сервера DHCPOFFER с поддержкой PXE, клиент сможет установить свой собственный сетевой IP-адрес, IP-маску и т. Д., А также указать на ресурсы загрузки, расположенные в сети, на основе полученного IP-адреса TFTP-сервера и имени НБП. Затем клиент переводит NBP в свой собственный оперативная память (RAM) с использованием TFTP, возможно, проверяет его (например, UEFI Безопасная загрузка ), и, наконец, загружается с него. NBP - это всего лишь первое звено в процессе загрузочной цепочки, и они обычно запрашивают через TFTP небольшой набор дополнительных файлов, чтобы запустить минималистичный исполнитель ОС (т.е. WindowsPE, или базовый Ядро Linux +initrd ). Небольшой исполнитель ОС загружает собственные сетевые драйверы и стек TCP / IP. На этом этапе остальные инструкции, необходимые для загрузки или установки полной ОС, предоставляются не через TFTP, а с использованием надежного протокола передачи (например, HTTP, CIFS, или же NFS ).

Интеграция

DHCP против прокси-сервера DHCP

Среда PXE Client / Server была разработана таким образом, чтобы ее можно было легко интегрировать с уже существующей инфраструктурой DHCP и TFTP-серверов. Эта цель проектирования представляла проблему при работе с классическим протоколом DHCP. Корпоративные DHCP-серверы обычно подчиняются строгим политикам, которые предназначены для предотвращения простого добавления дополнительных параметров и правил, необходимых для поддержки среды PXE. По этой причине стандарт PXE разработал концепцию перенаправления DHCP или «proxyDHCP». Идея proxyDHCP заключается в разделении требований PXE DHCP на два независимо запускаемых и администрируемых серверных модуля:

  1. Классический DHCP-сервер, предоставляющий IP-адрес, IP-маску и т. Д. всем загружающимся DHCP-клиентам.
  2. Сервер proxyDHCP, предоставляющий IP-адрес TFTP-сервера и имя NBP. только для PXE-идентифицированных загружающихся клиентов.

В среде DHCP-сервера и прокси-сервера DHCP[3]:18 клиент PXE первоначально передает один пакет DHCPDISCOVER PXE и ​​получает два дополнительных DHCPOFFER; один от обычного DHCP-сервера без поддержки PXE, а второй - с сервера proxyDHCP. Оба ответа вместе предоставляют необходимую информацию, чтобы позволить клиенту PXE продолжить процесс загрузки. Этот ненавязчивый подход позволяет настроить среду PXE, не затрагивая конфигурацию уже работающего DHCP-сервера. Служба proxyDHCP также может работать на том же хосте, что и стандартная служба DHCP, но даже в этом случае они представляют собой два независимо запускаемых и администрируемых приложения. Поскольку две службы не могут использовать один и тот же порт 67 / UDP на одном хосте, proxyDHCP работает на порту 4011 / UDP. Подход proxyDHCP оказался чрезвычайно полезным в широком диапазоне сценариев PXE, от корпоративных до домашних.

Доступность

PXE был задуман с учетом нескольких системных архитектур. Версия 2.1 спецификации определила идентификаторы архитектуры для шести типов систем, включая IA-64 и DEC Alpha. Однако PXE v2.1 только полностью покрыл IA-32. Несмотря на эту очевидную неполноту, Intel недавно решила широко поддерживать PXE в новом UEFI спецификация, расширяющая функциональность PXE на все среды EFI / UEFI. Текущая спецификация интерфейса унифицированного расширяемого микропрограммного обеспечения 2.4A, раздел 21 Сетевые протоколы - SNP, PXE и ​​BIS определяет протоколы, которые обеспечивают доступ к сетевым устройствам при выполнении в среде служб загрузки UEFI. Эти протоколы включают простой сетевой протокол (SNP), протокол базового кода PXE (PXE) и протокол служб целостности загрузки (BIS).[4][5]Сегодня в среде PXE определение клиентской архитектуры редко основывается на идентификаторах, изначально включенных в спецификацию PXE v2.1, вместо этого каждый компьютер, который будет загружаться из сети, должен иметь параметр DHCP 93 для указания архитектуры клиента. Это позволяет серверу PXE знать (во время загрузки) точную архитектуру клиента из первого сетевого загрузочного пакета. Значения архитектуры клиентской системы перечислены (среди других параметров PXE) в опубликованном за 2006 г. RFC 4578 (Параметры протокола динамической конфигурации хоста (DHCP) для среды Intel Preboot eXecution Environment (PXE)).

С появлением IPv6 DHCP превратился в DHCPv6; потребность в опциях, поддерживающих PXE в рамках нового протокола DHCP, была решена в опубликованном 2010 г. RFC 5970 (Параметры DHCPv6 для сетевой загрузки).

Исходное расширение микропрограммы клиента PXE было разработано как Дополнительное ПЗУ для ИА-32 BIOS, так что персональный компьютер (ПК) изначально был сделан с поддержкой PXE путем установки контроллер сетевого интерфейса (NIC), предоставивший дополнительное ПЗУ PXE. Сегодня клиентский PXE-код напрямую включен в собственную прошивку сетевой карты, а также как часть прошивки UEFI на оборудовании UEFI.

Даже если исходная клиентская прошивка PXE была написана Intel и всегда предоставлялась бесплатно в качестве подключаемого IA32 формат объектного кода модуль, включенный в их Product Development Kit (PDK), мир с открытым исходным кодом создал на протяжении многих лет нестандартные производные проекты, такие как gPXE /iPXE предлагая свои собственные ПЗУ. Хотя ПЗУ на базе Intel реализуют клиентскую сторону стандарта PXE более 20 лет, некоторые пользователи были готовы обменять дополнительные функции на стабильность и соответствие стандарту PXE.[6]

Принятие

Принятие PXE с версии 2.1 было повсеместным; Сегодня найти сетевую карту без прошивки PXE практически невозможно. Наличие недорогих Гигабитный Ethernet оборудование (сетевые карты, переключатели, маршрутизаторы и т. д.) сделал PXE самым быстрым из доступных методов установки операционной системы на клиенте, конкурируя с классическим CD, DVD, и флешка альтернативы.

За прошедшие годы несколько крупных проектов включали поддержку PXE, в том числе:

Что касается разработки NBP, существует несколько проектов, реализующих менеджеры загрузки, которые могут предлагать расширенные функции меню загрузки, возможности создания сценариев и т. Д .:

Все вышеупомянутые проекты, когда они могут загружать / устанавливать более одной ОС, работают по парадигме «Диспетчер загрузки - Загрузчик». Первоначальный NBP - это диспетчер загрузки, способный получить свою собственную конфигурацию и развернуть меню параметров загрузки. Пользователь выбирает вариант загрузки, и загрузчик, зависящий от ОС, загружается и запускается, чтобы продолжить выбранную конкретную процедуру загрузки.

Братья и сестры

яблоко придумал очень похожий подход к сетевой загрузке под эгидой Протокол обнаружения загрузочного сервера (BSDP) спецификация. BSDP v0.1 был первоначально опубликован Apple в августе 1999 г.[7] последняя версия 1.0.8 была опубликована в сентябре 2010 года.[8]В Сервер OS X включает системный инструмент под названием NetBoot. Клиент NetBoot использует BSDP для динамического получения ресурсов, позволяющих загружать подходящую операционную систему. BSDP создается поверх DHCP с использованием информации от производителя для обеспечения дополнительных функций NetBoot, которых нет в стандартном DHCP. Протокол реализован в клиентской прошивке. Во время загрузки клиент получает IP-адрес через DHCP, а затем обнаруживает загрузочные серверы с помощью BSDP. Каждый сервер BSDP отвечает загрузочной информацией, состоящей из:

  • Список загрузочных образов операционной системы
  • Образ операционной системы по умолчанию
  • Текущий выбранный клиентом образ операционной системы (если определен)

Клиент выбирает операционную систему из списка и отправляет на сервер сообщение, указывающее на свой выбор. Выбранный загрузочный сервер отвечает, предоставляя загрузочный файл и загрузочный образ, а также любую другую информацию, необходимую для загрузки и запуска выбранной операционной системы.

Потомки среды

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

Документация по стандартам IETF

RFC #ЗаголовокОпубликованоАвторУстаревшая и обновленная информация
RFC 783Протокол TFTP (Версия 2)Июнь 1981 г.К. СоллинзУстарело - RFC 1350
RFC 906Загрузка начальной загрузки с использованием TFTPИюнь 1984 г.Росс Финлейсон-
RFC 951Протокол начальной загрузкиСентябрь 1985 г.Билл КрофтОбновлено RFC 1395, RFC 1497, RFC 1532, RFC 1542, RFC 5494
RFC 1350Протокол TFTP (Версия 2)Июль 1992 г.К. СоллинзОбновлено RFC 1782, RFC 1783, RFC 1784, RFC 1785, RFC 2347, RFC 2348, RFC 2349
RFC 2131Протокол динамического конфигурирования сервераМарт 1997 г.Р. ДромсОбновлено RFC 3396, RFC 4361, RFC 5494, RFC 6842
RFC 2348Вариант размера блока TFTPМай 1998 г.Г. Малкин-
RFC 4578Параметры DHCP для Intel PXEНоя 2006 г.М. Джонстон-
RFC 5970Параметры DHCPv6 для сетевой загрузкиСен-2010Т. Хут-
RFC 7440Параметр Windowsize TFTPЯнв-2015П. Масотта-

Смотрите также

Рекомендации

  1. ^ Аврамов, Люсьен (31 декабря 2014 г.). Центр обработки данных на основе политик с ACI: архитектура, концепции и методология. Cisco Press. п. 43. ISBN  978-1587144905. В современных центрах обработки данных администраторы редко устанавливают новое программное обеспечение через съемные носители, например DVD. Вместо этого администраторы полагаются на загрузку PXE (Preboot eXecution Environment) на серверы образов.
  2. ^ «Wired for Management Baseline - версия 2.0» (PDF). Корпорация Intel. 1998-12-18. Получено 2014-02-08.
  3. ^ а б «Спецификация среды выполнения предварительной загрузки (PXE) - версия 2.1» (PDF). Корпорация Intel. 1999-09-20. Архивировано из оригинал (PDF) на 2013-11-02. Получено 2014-02-08.
  4. ^ «Спецификация унифицированного расширяемого интерфейса микропрограмм» (PDF). UEFI. 2013-12-02. Получено 2014-04-04.
  5. ^ «Анализ производительности загрузки UEFI PXE» (PDF). Корпорация Intel. 2014-02-02. Архивировано из оригинал (PDF) на 2014-08-08. Получено 2014-04-04.
  6. ^ "Etherboot / gPXE Wiki". Etherboo.org.
  7. ^ «NetBoot 2.0: протокол обнаружения загрузочного сервера (BSDP) v0.1» (Док). Корпорация Apple. 2003-12-02. Получено 2014-04-04.
  8. ^ «NetBoot 2.0: протокол обнаружения загрузочного сервера (BSDP) v1.08» (Док). Корпорация Apple. 2010-09-17. Получено 2014-04-04.

внешняя ссылка