Загрузка исполняемых файлов ОС по сети в смешанной среде

Всё про WTware на компьютере Raspberry Pi 2 Model B, и Pi 3 Model B и Pi 3B+
http://winterminal.com/ru/
Ответить
Jackson
Сообщения: 6
Зарегистрирован: Вс дек 20, 2015 12:09 pm

Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Jackson »

Приветствую.

В одной и той же сети имеется некоторое кол-во тонких клиентов на платформе x86 (обычные ноуты) и некоторое кол-во Raspberry Pi 2.

Хотелось бы понимать существует ли вариант загрузки файлов ОС по сети одновременно и для x86 и для Pi2, чтобы при каждом новом релизе не приходилось перезаливать бинарники на SD-карту для Малин, т.к. их кол-во в перспективе будет увеличиваться.

В варианте загрузки исполняемых файлов ОС по сети для платформы x86 и Raspberry Pi 2 в DHCP указываются разные имена образов для загрузки. В случае x86 это wtware.pxe, размером 16Кб, а в случае Raspberry Pi 2 - kernel7.img, размером 5Мб.
У интегрированных сетевых адаптеров размер буфера не превышает 512Кб и соответственно нет возможности загрузить файл размером 5Мб.
Если в DHCP, бутфайлом указать wtware.pxe, x86 грузятся без проблем, но Малина при этом не грузится останавливаясь на следующем:

Код: Выделить всё

Filename '[version]\wtware.pxe'
Load address: 0x1000000
Loading: ##
             223.6 KiB/s
done
Bytes transferred = 16282 (3f9a hex)
Bad Linux ARM zImage magic!
U-Boot>
Если бутфайлом указать kernel7.img, то Малина грузится без проблем, а вот сетевой адаптер на x86 платформе давится таким файлом и естественно грузиться отказывается.
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Наш DHCP умеет автомагически определять Малину и отдавать ей нужный файл.

Юниксовый ISC dhcpd можно этому обучить. Надо смотреть на 60 параметр запроса, если там "U-boot.armv7.pi2", значит это Pi2 пытается загружаться по сети.

Не разбираюсь в майкрософтовом dhcp, но вроде там тоже была класификация клиентов.
Jackson
Сообщения: 6
Зарегистрирован: Вс дек 20, 2015 12:09 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Jackson »

Спасибо за оперативность!
Куда смотреть понял. По результатам отпишусь.
Jackson
Сообщения: 6
Зарегистрирован: Вс дек 20, 2015 12:09 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Jackson »

Приветствую.

Делюсь результатами.
В общем DHCP-сервер от Майкрософт победить не удалось.
Зато удалось заставить раздавать разные образы для "Малин" и x86 платформ на DHCP-сервере маршрутизатора Mikrotik. Были опробованы Mikrotik RB951G-2HnD‎ и Mikrotik RB1100AHx2, RouterOS 6.x. По идее этот вариант будет работать и на других маршрутизаторах и L3 коммутаторах этого производителя, т.к. принцип настройки DHCP-сервера у них одинаков.

Напишу небольшую инструкцию, может кому пригодится.

Одновременная загрузка образов WTWare для платформ x86 и Raspberry Pi2 с помощью DHCP-сервера Mikrotik

Предполагается, что DHCP-сервер уже настроен на раздачу IP-адресов клиентам.
Пункты меню и имена полей указаны относительно интерфейса утилиты WinBox.

1. В разделе "IP"->"DHCP Server" перейти на вкладку "Options".
2. На панели инструментов окна "DHCP Server" нажать кнопку "+" (синий плюс) для создания новой опции.
2.1. В появившемся окне заполнить нижеследующие поля соответствующими значениями:
- Поле: "Name" -> Значение: x86BootFile (Символическое имя опции. Значение может быть произвольным, указывается БЕЗ кавычек);
- Поле "Code" -> Значение: 67 (Код, предписывающий DHCP-серверу передавать клиенту путь к файлу образа для загрузки по TFTP. Значение задаётся БЕЗ кавычек. Детальнее см. RFC 2132. Путь указывается относительно папки TFTPROOT как корневой или относительно корня стороннего TFTP-сервера);
- Поле "Code" -> Значение: 'X.X.X\wtware.pxe' (Путь к загрузочному образу для платформы x86. Символы X.X.X заменить на номер версии WTWare. Например, '5.4.14\wtware.pxe'. Значение обязательно должно быть указано в одинарных кавычках).
2.2. Нажать кнопку "ОК".
3. Перейти на вкладку "Networks" и открыть настройки той сети, в которой будет осуществляться раздача образов WTWare.
3.1. В открывшемся окне DHCP Network <subnet/mask> заполнить нижеследующие поля соответствующими значениями:
- Поле "Next Server" -> Значение: aaa.bbb.ccc.ddd (IP-адрес TFTP-сервера, на котором расположены загрузочные образы WTWare);
- Поле "Boot File Name" -> Значение: X.X.X\kernel7.img (Путь к загрузочному образу для платформы Raspberry Pi2. Символы X.X.X заменить на номер версии WTWare. Значение указывается БЕЗ кавычек и так же относительно корня TFTP-сервера);
- Поле "DHCP Options" -> Значение: x86BootFile (В этом поле из выпадающего списка необходимо выбрать опцию, предварительно созданную в п.2).
3.2. Нажать кнопку "ОК".
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Неидеальненько.

Путь к файлу, который надо загружать, в DHCP пакете указывается дважды. Во-первых, в заголовке, оставшемся в наследство от протокола BOOTP, из которого вырос протокол DHCP. Во-вторых, в специально под это выделенной 067 опции протокола DHCP.

Что должно быть, если указаны оба пути и они разные, стандарт не уточняет.

U-Boot, который грузит Малину, берёт путь из заголовка. Ок, работает и ладно.

Зоопарк прошивок PXE в сетевых картах x86 может брать путь откуда угодно. Тебе повезло, нужные тебе сетевухи отдают предпочтение 067 параметру DHCP. Но я бы не надеялся, что так будут вести себя все сетевухи. Могут встретиться такие, которые, как и U-Boot, предпочтут заголовок, и будут грузить малинский файл.
Jackson
Сообщения: 6
Зарегистрирован: Вс дек 20, 2015 12:09 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Jackson »

На идеальность решения и не претендую ))
Действительно, из опробованных ~50-ти x86 был один комп с сетевой на Marvell Yukon, который при таком раскладе всё равно пытался грузить файл для малины, но это можно решить заменой сетевого адаптера как частный случай.
Rushmore
Сообщения: 358
Зарегистрирован: Пн фев 11, 2013 9:36 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Rushmore »

Если кому надо, могу написать инструкцию по загрузке x86/UEFI64/pi2 для DHCP сервера Win 2012 R2 с использованием политик DHCP.
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Мне надо. С картинками.
Rushmore
Сообщения: 358
Зарегистрирован: Пн фев 11, 2013 9:36 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Rushmore »

Навалял док с картинками. Велкам!

//В принципе, всё то же самое можно и без картинок через PowerShell сконфигурять.
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Оооо :shock:

Можно я это на сайт скопипащу?

"Append wildcard", звёздочка в конфе, означает что оно срабатывает на всём, начинающемся на "wtware"? И если мы в втвари, в dhcp клиенте на raspberry сделаем класс не просто "wtware", а "wtware.armv7.pi2", инструкция продолжит работать?
Rushmore
Сообщения: 358
Зарегистрирован: Пн фев 11, 2013 9:36 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Rushmore »

aka писал(а):Можно я это на сайт скопипащу?
Конечно, пожалуйста.
aka писал(а):"Append wildcard", звёздочка в конфе, означает что оно срабатывает на всём, начинающемся на "wtware"? И если мы в втвари, в dhcp клиенте на raspberry сделаем класс не просто "wtware", а "wtware.armv7.pi2", инструкция продолжит работать?
Да, именно так оно и работает.

И кстати я давно уже хочу, чтобы втварь давала разные Vendor Class под разными платформами. Типа: wtware.x86, wtware.uefi64 или что-то типа того.
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Под uefi втварь прописывает архитектуру 9 в 93 параметр. По твоей инcтуркции оно вроде как должно сработать раньше, чем текстовое имя вендора "wtware" из 60 параметра. Только я не понимаю, что означают волшебные слова "PXEClient:Arch:". В dhcp есть парметры, идут списком, номер - длина - значение. Архитектура - параметр 93, там просто циферка 9, и никаких "PXEClient:Arch:" в пакете нет.

Не срабатывает, надо ещё вендора в 60 параметре поправить?
Rushmore
Сообщения: 358
Зарегистрирован: Пн фев 11, 2013 9:36 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Rushmore »

aka писал(а):По твоей инcтуркции оно вроде как должно сработать раньше, чем текстовое имя вендора "wtware" из 60 параметра.
1) Прошивка UEFI делает запрос к DHCP серверу. Срабатывает политика "pxeclient-uefi64". Остальные политики не срабатывают, потому что не совпадает опция 60 (Vendor Class). Сервер дает опции 66 и 67 из политики и остальные опции для диапазона по умолчанию. Грузится файл bootx64.efi с tftp сервера.

2) Ядро стартует, теперь уже wtware делает запрос к DHCP серверу. Срабатывает политика "wtware". Остальные политики не срабатывают.
aka писал(а):Только я не понимаю, что означают волшебные слова "PXEClient:Arch:". В dhcp есть парметры, идут списком, номер - длина - значение. Архитектура - параметр 93, там просто циферка 9, и никаких "PXEClient:Arch:" в пакете нет.
Это не для wtware, это прошивки UEFI при загрузке с сети в основном шлют опцию 60 "PXEClient:Arch:0007:*", а некоторые таки бывает что "PXEClient:Arch:0009:*". Поэтому смотрю оба варианта. Клиенты PXE под обычным BIOS шлют опцию 60 "PXEClient:Arch:0000:*"

В политиках DHCP нельзя прописать условие по параметру 93, можно только по 60. Поэтому и хочу, чтобы классы у разных втварей различались, вдруг где понадобится.
aka писал(а):Не срабатывает, надо ещё вендора в 60 параметре поправить?
Не грузится? Странно, специально поднял стенд чтобы доку написать.
aka
Разработчик
Разработчик
Сообщения: 10745
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение aka »

Rushmore писал(а):прошивки UEFI при загрузке с сети в основном шлют опцию 60 "PXEClient:Arch:0007:*", а некоторые таки бывает что "PXEClient:Arch:0009:*".
Все прошивки такую длинную единообразную строку шлют? Хм. Хорошо если в этом порядок навели. Но втваревый DHCP сервер для определения UEFI всё равно будет смотреть на опцию 93, как-то маленькой циферке я больше верю...

Исправляю 060 в втваревом dhcp клиенте. На x86 останет как и было "wtware". На 64-битной UEFI будет "wtware.uefi". На малинах "wtware.armv7.pi2".
Rushmore
Сообщения: 358
Зарегистрирован: Пн фев 11, 2013 9:36 pm

Re: Загрузка исполняемых файлов ОС по сети в смешанной среде

Сообщение Rushmore »

aka писал(а):Все прошивки такую длинную единообразную строку шлют? Хм. Хорошо если в этом порядок навели. Но втваревый DHCP сервер для определения UEFI всё равно будет смотреть на опцию 93, как-то маленькой циферке я больше верю...
Ну дык ноги растут из спецификации Intel PXE. Там есть определенные требования к формированию строки Vendor Class.
aka писал(а):Исправляю 060 в втваревом dhcp клиенте. На x86 останет как и было "wtware". На 64-битной UEFI будет "wtware.uefi". На малинах "wtware.armv7.pi2".
Годная фича. Спасибо!
Ответить