Загрузка по HTTP

Загрузка терминалов по HTTP необходима в двух случаях:

  1. Много терминалов в одной сети загружаются с одного сервера. Трудности при загрузке по TFTP начинаются, когда терминалов становится больше трехсот. HTTP работает стабильно при любом количестве терминалов.
  2. Загрузка терминала происходит через VPN по медленному каналу с потерями пакетов. TFTP очень капризный протокол. HTTP на таких каналах работает стабильнее.

Даже если сеть одна и терминалов меньше сотни, все равно целесообразно использовать загрузку по HTTP. Потому что по HTTP быстрее и стабильнее. TFTP слишком простой протокол, придуманный с единственной целью помещаться в BootROM/BIOS. TFTP крайне требователен к надежности сети. Если пакеты теряются, большие файлы по TFTP будут грузиться тяжело. HTTP решает эту проблему.

Загрузка терминала по сети в любом случае начинается по TFTP. Потому что BootROM сетевой карты, который прошит в самой карте или в BIOS материнской платы, умеет загружаться только по TFTP. По TFTP cкачиваются два файла: wtware.http (http.efi для UEFI) и wtware.http.cfg. Все остальное будет загружаться по HTTP.

Настройка DHCP для загрузки по HTTP

В 066 параметре DHCP как обычно указываем IP адрес TFTP сервера.

В 067 параметре DHCP указываем 5.4.24/wtware.http вместо обычного 5.4.24/wtware.pxe. Версию 5.4.24 надо заменить на версию wtware, которая должна загружаться на терминал.

Для UEFI машин в 067 параметре DHCP указываем 5.4.24/http.efi вместо обычного 5.4.24/bootx64.efi. Версию 5.4.24 надо заменить на версию wtware, которая должна загружаться на терминал.

WTware DHCP сервер автоматически определяет правильное значение для Legacy BIOS и UEFI компьютеров. Microsoft DHCP нужно специальным образом настраивать, чтобы он научился различать Legacy BIOS и UEFI компьютеры, эту сравнительно сложную настройку мы описали в отдельной статье про настройку Microsoft DHCP. Если у вас немного терминалов, проще делать reservations для каждого конкретного МАКа.

Для Microsoft DHCP надо проверить, что настройка 'Conflict detection attempts' установлена в значение по умолчанию 0:

Поехали: Legacy BIOS, не UEFI

После включения терминала управление получает код BootROM, записанный в сетевой карте или в BIOS материнской платы. Этот код делает запрос к DHCP. Затем обращается к серверу, IP адрес которого указан в 066 параметре DHCP. По TFTP скачивает с него файл 5.4.24/wtware.http и передает ему управление.

В файле 5.4.24/wtware.http находится загрузчик iPXE, немного более сложный, чем записан в BootROM или BIOS терминала. Он загружает по TFTP свой конфигурационный файл 5.4.24/wtware.http.cfg. Затем он загружает по HTTP файлы WTware, URL которых указаны в wtware.http.cfg.

Поехали: UEFI

После включения терминала управление получает код UEFI, записанный в BIOS материнской платы. Этот код делает запрос к DHCP. Затем обращается к серверу, IP адрес которого указан в 066 параметре DHCP. По TFTP скачивает с него файл 5.4.24/http.efi и передает ему управление.

UEFI достаточно новая технология. UEFI BIOS может скачать и запустить стартовый файл WTware 5.4.24/http.efi размером четыре мегабайта с ядром Linux и драйверами сетевых карт. Дополнительный загрузчик для UEFI BIOS не нужен. Запускается WTware, скачивает с TFTP конфигурационный файл 5.4.24/wtware.http.cfg и продолжает загружать нужные файлы по HTTP, используя адрес HTTP-сервера, порт и пути, указанные в wtware.http.cfg.

Пути на HTTP сервере

Пути по умолчанию предполагают, что в корне HTTP-сервера лежит ссылка wtware, которая должна ссылаться на структуру файлов wtware: на "C:\Program Files (x86)\WTware\TFTPDROOT\" на Windows или на содержимое каталога wtware из .zip архива дистрибутива WTware. Например, следующие пути должны работать для загрузки WTware версии 5.4.24:

http://IP-адрес-HTTP-сервера/wtware/Everyone/all.wtc
http://IP-адрес-HTTP-сервера/wtware/5.4.24/packages/alsa

Чтобы сделать ссылку на директорию в Windows, из командной строки Windows с правами Администратора надо выполнить:

mklink /D "C:\где-там-корень-у-IIS\wtware" "C:\Program Files (x86)\WTware\TFTPDROOT"
Можно нагляднее: поставить FAR, нажать Alt-F6.

У wtware в каталоге packages много файлов без расширений. Microsoft IIS может отказаться отдавать файлы без расширений. Вы можете указать "." (точку) вместо расширения и создать MIME mapping.

Редактировать файл wtware.http.cfg не нужно, подойдет уже имеющийся в дистрибутиве файл, если выполняются следующие условия:

  1. IP-адрес HTTP-сервера совпадает с IP-адресом TFTP-сервера.
  2. http://IP-адрес-HTTP-сервера/wtware/ указывает на корень TFTP, то есть http://IP-адрес-HTTP-сервера/wtware/Everyone/all.wtc и http://IP-адрес-HTTP-сервера/wtware/5.4.24/packages/alsa это правильные пути к соответствующим файлам из дистрибутива WTware.

Редактируем wtware.http.cfg

Если наши пути не подходят или HTTP-сервер находится не на той же машине, что и TFTP-сервер, об этом надо сообщить терминалу. Отредактировать файл wtware.http.cfg.

Пример файла wtware.http.cfg, если IP-адрес HTTP-сервера не совпадает с IP-адресом TFTP-сервера. Версию 5.8.50 замените на нужную версию WTware.

#!ipxe
set wtware-url http://192.168.1.1/wtware
boot ${wtware-url}/5.8.50/packages/kernel BOOT_IMAGE=${wtware-url}/5.8.50/packages/kernel quiet


Пример файла wtware.http.cfg, если и IP-адрес HTTP-сервера не совпадает с IP-адресом TFTP-сервера, вместо цифрового IP-адреса указано доменное имя HTTP-сервера, и путь к дистрибутиву не совпадает с нашим рекомендованным.

#!ipxe
set wtware-url http://www.server.local/somewere/else/
boot ${wtware-url}/5.8.50/packages/kernel BOOT_IMAGE=${wtware-url}/5.8.50/packages/kernel quiet




Появились комментарии, поправки к этой статье? Пожалуйста, напишите в форум!