Настройка загрузки по сети через UEFI BIOS: пошаговое руководство

UEFI BIOS позволяет осуществлять загрузку системы по сети с использованием протокола PXE (Preboot Execution Environment). Это особенно полезно в корпоративных средах, где необходимо загружать операционные системы или восстановительные образы на множество компьютеров без необходимости использовать физические носители.

Для настройки загрузки по сети в UEFI необходимо активировать соответствующую опцию в BIOS и убедиться, что сетевой интерфейс поддерживает PXE. После этого BIOS станет искать загрузочный сервер в локальной сети, что обеспечивает быстрое развертывание и управление системами.

Расширяем функционал WDS: добавление возможности загрузки в UEFI

В этой статье изложены шаги, которые необходимо предпринять для интеграции функции загрузки в режиме UEFI в ваш WDS.

Другими словами, данная инструкция предполагает, что у вас имеется примерно следующая конфигурация:

1. Windows Server 2012R2 (или более новая версия) 2. Полностью сконфигурированный DHCP для взаимодействия с WDS 3. Состоящий WDS 4. IIS 5. Виртуальная машина или компьютер с Ubuntu

Также здесь описаны действия, которые не принесли мне желаемого результата. Я привел их, чтобы облегчить вам поиск информации и сэкономить ваше время.

Предисловие

Сделал как-то на работе WDS с множеством плюшек, т.к. устал постоянно бегать с кучей флешек и перезаписывать их.

Это выглядит следующим образом

И всё было хорошо, добавлялись новые образы для загрузки, образ winPE обрастал новыми фичами и всё работало.

Однако, не все устройства в настоящее время поддерживают режим загрузки BIOS/Legacy, и даже если такая поддержка есть, активация этого режима может оказаться довольно запутанной.

К тому же, установка Windows в режиме Legacy, когда доступен UEFI, выглядит не совсем логично.

В конечном итоге я пришёл к выводу добавить функцию загрузки в UEFI и отправился на поиски информации в Гугле.

Но я так и не нашёл четких сведений о том, как правильно настроить WDS с поддержкой UEFI, поэтому решил написать эту статью.

Перед тем как начать, я опишу проблему, которая отняла больше всего времени.

При интеграции UEFI в WDS может возникнуть довольно неожиданная ситуация:

Если вы загружаете образ в WDS и при попытке загрузки на UEFI-устройстве видите сообщение: The selected boot device failed. Press to Continue. Или Boot Device Not Found, но при этом загрузка в legacy-режиме проходит успешно, то одной из причин может быть отсутствие файла wdsmgfw.efi по следующему пути: %WDSpath%Bootx64wdsmgfw.efi

Взять его можно тут: C:WindowsSystem32RemInstbootx64wdsmgfw.efi Либо, если у вас отсутствует по какой-то причине этот файл, я его выложил на google. За это решение, спасибо ребятам с реддита.

На решение этой задачи у меня ушло больше всего времени, потому что я предполагал, что проблема заключается в настройках WDS или DHCP.

Настраивал политики, путём добавления Vendor Classes(Классы поставщиков) для различных архитектур, и настройкой опций DHCP 060, 066, 067. Инструкция по настройке политик DHCP.

Архитектурные версии в ASCII для конфигурации DHCP

PXEClient:Arch:00000 — BIOS/Устаревший PXEClient:Arch:00006 — UEFI x86 PXEClient:Arch:00007 — UEFI x64

Так же, пробовал различные варианты загрузочных файлов .efi

Также пытался выявить проблему в журнале событий. Нажал win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Диагностика служб развертывания

Но, как я уже говорил выше, проблема крылась в файле wdsmgfw.efi. Либо я его сам случайно удалил, либо он не скопировался при установке и настройке WDS.

Инструкция

Этап 1 — Проверка работоспособности WDS

Используйте любое оборудование или виртуальную машину, поддерживающую загрузку через UEFI по сети, и попытайтесь загрузиться.

Вы должны увидеть следующую картину:

Если так, то отлично, можно продолжать. Если же нет, то смотрите, что я написал в предисловии.

Этап 2 — Сборка загрузочного файла iPXE

Запускаем предварительно настроенную Ubuntu, открываем консоль и вводим следующую команду:

git clone https://git.ipxe.org/ipxe.git ipxe

Тут хотелось бы сделать небольшое замечание, о том, что возможно вам в Ubuntu придётся добавить пакеты, необходимые для компиляции C и C++. Просто у меня они уже были установлены.

Загружено? — Замечательно! Теперь необходимо создать конфигурационный файл для сборки. В терминале введите:

cd ipxe/src gedit chain.ipxe

Затем вставьте в этот файл следующий код и сохраните изменения:

#!ipxe dhcp chain http://%IP-address-your-IIS-server%/install.ipxe

Идём опять в терминал и запускаем компиляцию:

собрать bin-x86_64-efi/ipxe.efi ВСТАВИТЬ=chain.ipxe

В случае, если все хорошо, вы увидите следующий результат в терминале:

И файл ipxe.efi, по пути: ipxe/src/bin-x86_64-efi/ipxe.efi Если у вас по какой-то причине не получилось скомпилировать самостоятельно, я приложил свой файл. Он скомпилирован для загрузки с http://192.168.0.100/install.ipxe

На этом этапе с Ubuntu завершено.

Шаг 3 — Внедрение ipxe.efi в WDS

Скопируйте файл, полученный на втором этапе, в следующую папку: %WDSpath%Bootx64%your-boot-folder%EFIBOOT После этого измените его название на BOOTX64.EFI. Это не является обязательным, но так будет удобнее.

Потом запускаем cmd от имени администратора, и пишем следующие команды:

wdsutil /set-server /bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX 64.EFI /architecture:x64uefi и wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX 64.EFI /architecture:x64uefi

При этом мы зададим необходимый файл для загрузки через WDS.

wdsutil /get-server /Show:Config

Я так же скопировал файл ipxe.efi, переименовал его в BOOTIA32.EFI и сконфигурировал загрузку для него, на всякий случай. architecture:x86uefi Но по большому счёту в этом нет смысла, т.к. файл Bootmgfw.efi не поддерживает x86

Давайте проверим, что у нас вышло. Замечательно, WDS начал загрузку нашего файла, и он, в свою очередь, обращается к конфигурации по следующему адресу: http://192.168.0.100/install.ipxe

Шаг 4 — Настройка меню

Перейдите в главную папку вашего веб-сайта. Обычно это: C:inetpubwwwroot

Создаём текстовый файл install.ipxe.

Мы настраиваем его в соответствии с документами и вашими требованиями. Также доступно описание команд на русском языке. Я использовал данную инструкцию при настройке своего WDS.

Пример конфигурации install.ipxe

#!ipxe :start menu Please choose an operating system to start/install item —gap Start Win PE item WinPE-x64 WinPE x64 item —gap ipxe shell item shell Drop to iPXE shell choose target goto $ :failed echo Booting failed, dropping to shell goto shell :shell echo Type ‘exit’ to get the back to the menu shell set menu-timeout 0 set submenu-timeout 0 goto start :WinPE-x64 kernel http://192.168.0.100/wimboot initrd http://192.168.0.100/peSE/Boot/bcd initrd http://192.168.0.100/peSE/Boot/boot.sdi initrd http://192.168.0.100/peSE/Boot/peSE64.wim boot || goto failed

Информацию о настройках для загрузки winPE можно найти здесь.

Шаг 5 — Типы MIME

По завершении разработки меню и загрузки всех нужных файлов в корневую директорию IIS, следует предоставить к ним доступ.

Т.к. даже если вы попробуете из браузера скачать файл, по его адресу то получите ошибку: HTTP 404.3 — Not Found .

Для этого требуется в интерфейсе управления IIS добавить MIME-типы в соответствии с расширениями файлов, которые вы планируете загружать через http.

Я не искал какой тип MIME подходит для этих целей лучше, и задал application/octet-stream , после чего всё заработало.

Для файлов без расширения применяйте точку.

BootDev

В предыдущих материалах, касающихся сетевой загрузки, все рассматриваемые загрузчики и процесс загрузки с применением технологии PXE выполнялись в Legacy-режиме, который является стандартом старого BIOS. Я принял решение расширить эту тему, проанализировав сетевую загрузку в актуальном стандарте UEFI.

В Чем Отличия

Кардинальных отличий в реализации загрузки с использованием технологии PXE для UEFI BIOS нет. Я даже скажу больше, все необходимые настройки полностью идентичны. Но, обо всем по порядку.

Технология PXE состоит из трех ключевых элементов:

1. TFTP-сервер. Предназначен для загрузки файлов по сети. На данном сервере хранятся все загрузочные файлы, с последующим предоставлением их по требованию, без какой-либо авторизации.

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

3. Загрузочный клиент. Это программный код, который встроен в прошивку сетевой карты или UEFI BIOS материнской платы. Его основная задача заключается в получении необходимых сетевых настроек, установлении соединения с TFTP-сервером и загрузке загрузочного файла для его выполнения.

Сервера TFTP и DHCP при этом могут быть запущенны на совершенно разных машинах, единственное требование, чтобы они располагались в одной сети.

Все перечисленное относится как к Legacy BIOS, так и к UEFI BIOS. Главное отличие для UEFI PXE заключается в том, что необходимо задать исполняемый файл в конфигурации DHCP-сервера, который предназначен именно для UEFI BIOS.

Учитывая все вышесказанное, настоятельно рекомендую прочитать про установку и настройку DHCP и TFTP сервера, а так же про установку и настройку загрузчика Windows Boot Manager на TFTP-сервер. Данные статьи полностью актуальны на данный момент времени, и информация из них будет использоваться далее по тексту.

Необходимые Программы

Чтобы выполнить загрузку в UEFI PXE, необходимо наличие следующих программ и файлов:

1. Программа Tftp32(64). Удобный инструмент, который объединяет функции TFTP, DHCP, DNS и Syslog.

2. Программа BOOTICE. Невероятно мощный инструмент для создания и работы с загрузочными дисками.

3. Установочный образ операционной системы Windows в формате *.ISO. Его можно загрузить совершенно бесплатно с официального сайта Microsoft, без необходимости регистрации. Для скачивания используется программа MediaCreationTool.

4. Один из загрузочных WinPE, мультизагрузочной сборки 2k10.

Настройка TFTP-сервера

Как упоминалось ранее, процесс установки и настройки программы Tftp32(64) уже был подробно изложен в этой статье, поэтому я представлю только краткий демонстрационный скринкаст.

В этом скринкасте показана конфигурация TFTP-сервера, используя корневую директорию D:TFTP, а также настройка DHCP-сервера, но без указания имени загружаемого исполняемого файла.

Имя загрузочного файла будет добавлено в следующем разделе.

В данное время каталог D:TFTP не содержит файлов.

Данная директория является корневой для TFTP-сервера, и будет содержать все необходимые загрузочные файлы.

Установка UEFI-загрузчика

В роли загрузчика будет использоваться Windows Boot Manager (BOOTMGR). Процесс установки этого загрузчика на TFTP-сервер также обсуждался ранее. Принцип остается тем же, лишь отличаются файлы, которые необходимо скопировать.

Сначала необходимо извлечь из установочного *.ISO образа операционной системы Windows папку efimicrosoftboot и поместить её в корневую директорию TFTP-сервера D:TFTP.

Следующим, копируем файл efibootbootx64.efi, так же в корневую директорию TFTP-сервера.

Скопируйте файл bootboot.sdi в папку boot (D:TFTPboot) в корне каталога TFTP-сервера.

Установочным ISO-образом ОС Windows на этом покончено. Переходим к мультизагрзочному диску 2k10.

В корневом каталоге TFTP-сервера создадим папку sources (D:TFTPsources).

Переносим файл 2k10WinPEW1064PE.wim в только что созданную папку из загрузочного ISO-образа мультизагрузочной версии 2k10.

Переименуем скопированный файл в boot.wim.

Теперь приступим к настройке загрузчика. Вместо того чтобы подробно объяснять процесс, я представлю вам скринкаст, поскольку все шаги аналогичны тем, которые описаны в данной статье.

Запускаем BOOTICE. Открываем в нем конфигурационный файл скопированного загрузчика D:TFTPbootbcd. И выполняем действия приведенные в скринкасте.

Настройка охватывала два аспекта: первый параметр отвечал за появление устаревшей загрузочной полосы вместо вращающихся кружков, а второй отключал встроенную проверку загружаемых файлов *.wim.

Теперь необходимо было добавить имя исполняемого загрузочного файла в настройки DHCP-сервера. В нашем случае этот файл располагается по адресу D:TFTPbootx64.efi.

Загрузчик, и тестовое содержимое на этом установлены.

Загрузка Тестового BOOT.WIM

Мы будем проводить тестирование сетевой загрузки в виртуальной машине VMware Workstation Player.

Тестовая виртуальная машина обязательно должна смотреть в вашу реальную сеть.

Запускаем приложение Tftp32(64), если оно было завершено. Затем запускаем виртуальную машину и выбираем загрузку через сеть в режиме UEFI.

Запустится клиент UEFI PXE.

После получения всех необходимых сетевых настроек, запустится скачивание загрузчика и всех необходимых ему файлов с нашего TFTP-сервера.

После загрузки всех требуемых файлов в оперативную память виртуальной машины, они будут инициализированы. В моём случае будет активирована WinPE, использованная с мультизагрузочного диска 2k10.


Загрузка в UEFI PXE режиме прошла успешно.

В данной статье обсуждаются следующие вопросы: Как выполнить загрузку в режиме UEFI PXE? Как настроить TFTP32(64) для загрузки в UEFI? Как установить загрузчик UEFI на TFTP-сервер?

Как можно заметить, процесс сетевой загрузки в UEFI и Legacy режиме практически идентичен. Основное отличие заключается только в указании загружаемого исполняемого файла и связанных с ним файлах. То же самое касается и других загрузчиков — для них также нужно просто использовать версии для UEFI.

Установка Windows 10 и 11 по сети через PXE

itpro

Операционная система Windows 10 и Windows 11

комментариев 20

В данной статье мы изучим процесс установки Windows 10 или 11 посредством сети без необходимости использования загрузочной USB флешки или установочного DVD. Для организации загрузки компьютера по сети с помощью PXE мы воспользуемся небольшим сервером Tiny PXE Server. Данная инструкция подходит для установки Windows на устройства как с UEFI, так и с BIOS прошивкой.

В корпоративных средах для развертывания образов Windows по сети зачастую применяются более продвинутые решения, такие как Windows Deployment Services (WDS) и Microsoft Deployment Toolkit (MDT). В этой статье мы покажем, как легко запустить PXE сервер на любом доступном компьютере (независимо от того, работает ли он на Windows или Linux) и использовать его для сетевой установки Windows на другие компьютеры в той же локальной сети с помощью простых инструментов.

Создаем загрузочный образ Windows PE с помощью ADK

Скачайте Windows ADK для Windows 11 и Windows PE add-on for the Windows ADK по ссылкам на странице https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install .

Выбирая установку Windows ADK, остановитесь на минимальной конфигурации с инструментами развертывания.

Затем аналогично установите Windows PE add-on for Windows ADK.

Когда установка будет завершена, откройте инструмент Deployment and Imaging из меню "Пуск" в Windows. Либо выполните команду вручную:

"C:Program Files (x86)Windows Kits10Assessment and Deployment KitDeployment ToolsDandISetEnv.bat"

Теперь скопируйте файлы для среды WinPE в указанный каталог (создавать не нужно):

копировать amd64 C:toolswinpe

В данном случае я создаю файлы для среды WinPE x64. Можно использовать другие опции в зависимости от архитектуры: x86, arm или arm64.

Теперь существует возможность формирования загрузочного ISO-образа с WinPE:

MakeWinPEMedia /ISO C:toolswinpe c:toolsWinPE.iso

В некоторых случаях нужно загрузить дополнительные драйвера в файл boot.wim согласно инструкции Интеграция драйверов в установочный образ Windows .

Подготовка сервера сетевой установки TinyPXE

Теперь необходимо выполнить настройку вашего PXE сервера:

  1. Распакуйте файл pxesrv.zip в каталог C:toolspxesrv;
  2. Затем перейдите в папку C:toolspxesrv и создайте текстовый документ pxe_menu.txt с следующим содержанием:

#!ipxe set boot-url http://$ #================ Главное меню ================= menu iPXE загрузочное меню элемент WinPEISO WindowsPE ISO выбор цели goto $ #============ Опции Главного Меню ============= :WinPEISO sanboot $/iso/WinPE.iso загрузка

  • Перенесите ранее созданный файл WinPE.iso в папку C:toolspxesrvfilesiso;
  • Смонтируйте установочный ISO образ в виртуальный привод Windows и откройте общий сетевой доступ к нему (если хотите, можете открыть к нему анонимный доступ, но это не обязательно);
  • Запустите pxesrv.exe с правами администратора;
  • Активируйте функцию HTTPd;
  • Если ваш компьютер будет самостоятельно назначать IP-адреса через DHCP (Tiny PXE это поддерживает), отключите настройки ProxyDHCP. Проверьте, чтобы в полях Option 54 DHCP Server и Next-Server был указан IP-адрес вашего устройства. В поле IP Pool start укажите начальную точку диапазона DHCP, убедитесь, что этот диапазон свободен в вашей сети;
  • В разделе Boot File выберите ipxe.pxe (для устройств с BIOS) или ipxe-x86_64.efi (для UEFI устройств);
  • В поле Filename if user-class=gPXE or IPXE укажите имя файла меню, который вы ранее создали, pxe_menu.txt;
  • Запустите PXE сервер, нажав кнопку Online;
  • Итак, ваш PXE сервер запущен и готов к работе. Если в Windows включен брандмауэр (проще), отключите его или разрешите входящий трафик для процесса pxesrv.exe по протоколам DHCP, PXE, HTTP, TFTPS и SMB.

    Сетевая установка Windows 10 и 11 с PXE сервера

    Теперь необходимо произвести загрузку вашего компьютера, на который планируется установка Windows, с PXE-сервера. Убедитесь, что ваш компьютер находится в одной локальной сети (VLAN) с PXE-сервером.

    В настройках BIOS/UEFI вашего устройства установите PXE в качестве основного загрузочного устройства.

    При запуске среды PXE компьютер обнаружит в сети DHCP сервер, получит IP адрес и получит доступных опции в меню iPXE.

    Компьютер осуществит загрузку через сеть в окружении WinPE.

    В моем случае при тестировании загрузки с PXE сервера виртуальной машины VMWare с UEFI прошивкой появилась ошибка:

    Не удалось описать устройства SAN: операция не поддерживается. Не удалось загрузить образ: операция не поддерживается https://ipxe.org/err/3c2220. Выяснилось, что в UEFI прошивке виртуальной машины на моем хосте VMware ESXi имеется ошибка:

    Эта ошибка указывает на то, что в вашей UEFI прошивке присутствует баг, который мешает установке таблицы загрузки по iSCSI (iBFT). Переключитесь на загрузку в режиме "наследственного" BIOS вместо UEFI режима.

    В результате мне пришлось переключить виртуальную машину в режим BIOS и запустить PXE сервер с опцией ipxe.pxe. После этого установка Windows по сети прошла успешно.

    Вам осталось подключить по SMB сетевой каталог, в котором хранится ваш установочный ISO образ Windows 11.

    По завершении инициализации окружения с помощью команды wpeinit подключите сетевой каталог, где смонтирован образ установки Windows. Введите следующую команду:

    Net use E: \192.168.13.202e

    В данном случае 192.168.13.202 обозначает компьютер, на котором расположен установочный образ, а E – это название общей директории. Укажите имя пользователя, который имеет права на доступ к вашей Windows с PXE-сервером.

    Запустите привычный мастер установки Windows.

    При установке Windows 11 не забывайте, что компьютер должен соответствовать определенным аппаратным требованиям. Но можно установить Windows 11 и без проверки наличия TPM, Secure Boot и т. д.

    Статья передняя Статья последующая

    Оцените статью
    LeeReload
    Добавить комментарий