iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Тонкие клиенты в сборе и материнские платы, подходящие для терминалов
Ответить
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

aka: инструкция ниже: https://forum.wtware.ru/viewtopic.php?p=76751#p76751

Сообщение написано скорее в целях проинформировать сообщество, нежели получить какую-то помощь.

Итак, по очень демократичной цене (6,5 тыс рублей за шт.) были приобретены 5 безвентиляторных Мини ПК SZBOX B20 на процессоре Intel(R) Celeron(R) CPU N3350 @ 1.10GHz, 6ГБ ОЗУ и встроенная eMMC на 64ГБ. Плюсом ко всему есть возможность установить NVMe. Нам конечно не нужна ни eMMC, ни NVMe, потому что гораздо удобнее пользоваться загрузкой по сети. Мельком заглянул в BIOS, все отлично, поддержка UEFI есть, Network Stack включить можно, в нем есть UEFI PXE и UEFI HTTP.
В общем, здорово. Но не тут то было. Загружаться по сети данный Мини ПК отказывается наотрез. BIOS прошерстил миллион раз, включал и отключал все что только можно. Результатов это не дало. Не грузится ни в UEFI, ни в Legacy по сети. Делаю вывод о том, что сетевой адаптер данного Мини-ПК распаян не через мост, а посредством USB контроллера. Подтверждением этой теории является то, что после запуска Wtware с флешки в браузере во вкладке "Шина USB" можно увидеть запись:

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

[0] USB ID: 0bda:c821, bus ID: 1-7, serial: 00e04c000001, class: 0xe0, subclass: 0x01, Realtek Semiconductor Corp.
Есть желание попробовать поставить сетевуху через M.2, который по описанию является полноценным PCI-e, а не SATA мимикрирующим под NVMe.
Кстати, в BIOS вроде как есть пункт в "Boot", который даёт надежду "UEFI USB Lan", но и он не помог.
Пока поставил wtware на eMMC, все работает нормально, но конечно же хотелось бы загружать по сети.
Если кому-то есть что посоветовать в решении задачи, заранее благодарю.
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Мини ПК SZBOX B20

Сообщение aka »

Давным давно, когда встроенных сетевух в материнских платах чаще всего не было, ISA и потом PCI сетевухи часто шли с разъёмом под микросхему BootROM. У меня даже программатор был, мы в эти микросхемы BootROM шили прошивку Etherboot.

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

Теоретически оно наверное возможно. Если в сетевой карте будет BIOS, который умеет загружать, и набортный BIOS матери вызовет BIOS в сетевой карте, и не случится конфликта Legacy BIOS/UEFI у BIOS матери и BIOS сетевухи, то да.

Но мне кажется врядли. Ставлю на облом на этапе "набортный BIOS матери вызовет BIOS в сетевой карте".

А когда включаешь "UEFI USB Lan", что происходит? На экране что-то есть? Индикатор сети оживает? Wireshark какие-нибудь пакеты от коробочки в сети видит?
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: Мини ПК SZBOX B20

Сообщение jedi88knight »

aka писал(а): Вс май 05, 2024 7:13 pm А когда включаешь "UEFI USB Lan", что происходит? На экране что-то есть? Индикатор сети оживает? Wireshark какие-нибудь пакеты от коробочки в сети видит?
Вообще ничего. У меня микрот дома, даже за адресом никто не обращается, полный штиль. NMAP не видит MAC этот, пока ОС не запустится. Там два пункта "UEFI Network" и "UEFI USB Lan", но ни тот, ни другой пункт не приводит к обращению к DHCP за загрузчиком или хотя бы за адресом. Максимально тупая ситуация) В целом, очень классный тонкий клиент был-бы.
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: Мини ПК SZBOX B20

Сообщение jedi88knight »

Кстати, а если взять флэшку или SD карту и записать на них ipxe загрузчик? Загружаться с этой флэшки/карты и уже загрузчик ipxe загрузит по сетке Wtware? Это всё лучше, чем устанавливать саму wtware. Кстати, можно записать ipxe загрузчик и на встроенную eMMC карточку. Просто именно это рекомендуют делать для загрузки с невстроенных сетевух, в т.ч. с USB.
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Мини ПК SZBOX B20

Сообщение aka »

Чтобы это поехало, в ipxe нужен драйвер от набортной USB сетевухи. В списке поддерживаемого железа: https://ipxe.org/appnote/hardware_drivers
нет ничего на USB. Но это неправда, что-то на USB ipxe точно понимает. Пробовать надо. Образ iPXE должен быть большой, с драйверами. И новый, чтобы были все свежие драйвера. В втвари есть два файла с ipxe: 6.2.20\wtware.http и 6.2.20\wtware.http.v2. Первый маленький, потому что в нём вообще нет драйверов железа, он использует сеть из BIOS. Это наверное не твой случай. Второй большой, в нём кучка драйверов железа, но он не обновлялся лет десять и гигабитного USB в нём точно нет. Надо большой свежий ipxe под UEFI.
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: Мини ПК SZBOX B20

Сообщение jedi88knight »

Итак, хотелось бы продолжить обсуждение по загрузке UEFI PXE на компах, которые оную загрузку не поддерживают. Это серьезно расширит выбор "железа", а также можно будет загружать UEFI даже на старых компах, которые UEFI вообще не поддерживают. На самом деле, как я понимаю, при помощи iPXE этого добиться реально. Выше я уже писал, что у меня есть Мини-ПК, у которого сетевуха не поддерживает загрузку по сети из BIOS, т.к. она распаяна на плате посредством USB контроллера. Что я сделал:
- Скачал Xubuntu 24.04, запустился в Live режиме, открыл эмулятор терминала...
Переключаемся на root:

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

$ sudo su
Cмотрим список дисков и находим нашу MMC карточку на 64ГБ:

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

# lsblk
mmcblk2      179:0    0  57.6G  0 disk
├─mmcblk2p1  179:1    0   100M  0 part
├─mmcblk2p2  179:2    0    16M  0 part
├─mmcblk2p3  179:3    0  56.5G  0 part
└─mmcblk2p4  179:4    0   980M  0 part
На Мини-ПК производителем на заводе установлена Windows, подготовленная через sysprep. От этого мы и видим столько разделов.

Получаем свежий EFI загрузчик iPXE.
Скачиваем исходники:

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

# git clone git://git.ipxe.org/ipxe.git
Переходим в директорию с исходниками:

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

# cd ipxe/src
Компилируем EFI загрузчик iPXE:

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

# make bin-x86_64-efi/ipxe.efi
Записываем загрузчик на диск.

Полностью очищаем (зануляем) диск от всех разделов, т.к. в моем случае на него изготовителем была установлена Win10:

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

# dd if=/dev/zero of=/dev/mmcblk2  bs=512  count=1
Размечаем диск в GPT:

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

# parted -s /dev/mmcblk2 mklabel gpt
Создадим раздел размером 512МБ (а вот не жалко):

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

# parted -s /dev/mmcblk2 mkpart primary fat32 0 512MiB
Делаем наш первый раздел разделом ESP (EFI System Partition), выставляя флаг 'esp' на нем:

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

# parted -s /dev/mmcblk2 set 1 esp on
Создаём на нашем новом ESP разделе файловую систему FAT32:

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

# mkfs.fat -F32 /dev/mmcblk2p1
Монтируем наш раздел:

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

# mount /dev/mmcblk2p1 /mnt
Создаём на нём структуру каталогов:

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

# mkdir -p /mnt/efi/boot/
Кладём на него EFI iPXE загрузчик:

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

# cp bin-x86_64-efi/ipxe.efi /mnt/efi/boot/bootx64.efi
Отмонтируем:

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

# umount /mnt
Перезагружаемся:

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

# reboot -f
Загружаемся с нашего iPXE...

И вроде все здорово. Запускается наш iPXE, получает адрес, затем находит нашу wtware (6.2.16/bootx64.efi), она успешно запускается и выдает:
При загрузке терминала произошла ошибка
ОШИБКА: Не могу подключить загрузочный диск. Пожалуйста пришлите фотографию этого экрана службе поддержки WTware и объясните: откуда вы загружаете терминал и почему считаете, что терминал может оттуда загрузиться.

Продолжение работы невозможно до тех пор, пока ошибка не будет исправлена.
WTware v.6.2.16/UEFI http://wtware.ru email:support@wtware.ru
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Мини ПК SZBOX B20

Сообщение aka »

Втварь спрашивает у UEFI, откуда мы загрузились.

UEFI честно отвечает, что загрузились с жёсткого диска.

Втварь ищет свои файлы на жёстком диске.

Надо придумать, как втвари понять, что в цепочке было iPXE и надо продолжать загружаться по сети.

До UEFI такой проблемы не было. Потому что старому BIOS'у нельзя было задать вопрос "откуда мы загрузились?", и втварь выясняла источник загрузки по командной строке ядра.

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

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

cat /proc/cmdline
Что будет?
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

Доброго времени суток!

Вернулся к нашим изысканиям с IPXE, намерен разобраться. В подтверждение своих серьезных намерений, развернул виртуалку, на виртуалке сделал все что ранее делал с МиниПК, получил абсолютно тот же самый результат. По вашему запросу, когда WTware сваливается в ошибку выполнил:

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

# cat /proc/cmdline
Получил ответ:

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

quiet bootx64.efi
Даже картинку прикреплю.

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

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение aka »

Повторюсь. Задача: сообщить втвари, что мы загружаемся по сети.

Штатно на UEFI втварь спрашивает у самой UEFI, откуда мы загрузились. В данном случае UEFI ответит "загрузились с диска", и втварь пытается продолжить загрузку с диска. На диске файлов втвари нет. Отсюда ошибка на скрине.

Я вижу единственный способ сказать втвари грузиться по сети: через командную строку ядра. Из коробки iPXE ничего примечательного в командную строку не написало. Придётся пилить iPXE дальше.

Втварь на Legacy BIOS грузится по http через iPXE. Используется такой скрипт:

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

#!ipxe
set user-class wtware-ipxe
:retry_dhcp
dhcp || goto retry_dhcp
isset ${filename} || goto retry_dhcp
isset ${next-server} || goto retry_dhcp
chain tftp://${next-server}/${filename}.cfg
Предлагаю в UEFI загрузчик встроить такой же. Для единообразия. Надо записать скрипт выше в файл wtware.ipxe.script и при сборке iPXE добaвить ключик:

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

make bin-x86_64-efi/ipxe.efi EMBED=wtware.ipxe.script
Затем надо поставить вот это:

http://wtware.com/testing/202406222350/ ... .29.ru.zip

Это втварь, которую я научил под UEFI смотреть на командную строку. Заодно в ней есть файлики bootx64.efi.cfg и http.efi.cfg, в которых параметром BOOT_IMAGE= через командную строку втвари передаётся указание не спрашивать про загрузку у UEFI, а грузиться по сети.

Поедет?
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

Неа...

Еще хуже стало)

Перед сборкой iPXE в директории с исходниками iPXE (ipxe/src) создал скрипт 'wtware.ipxe.script' с содержанием:

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

#!ipxe
set user-class wtware-ipxe
:retry_dhcp
dhcp || goto retry_dhcp
isset ${filename} || goto retry_dhcp
isset ${next-server} || goto retry_dhcp
chain tftp://${next-server}/${filename}.cfg
И собрал командой:

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

# make bin-x86_64-efi/ipxe.efi EMBED=wtware.ipxe.script
Короче, сделал все ровно так, как вы сказали...

Скачал и установил 6.2.29, поменял параметр 067 DHCP... в итоге он скачал образ и повис:
Изображение

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

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение aka »

Но ведь почти всё сработало как надо. iPXE загрузил текстовый .cfg. Прочитал и загрузил bootx64.efi. Наверное что-то не так в bootx64.efi. Или виртуалка сломалась. У меня на vmware работает.

Попробуй спрячь bootx64.efi от последней сборки и вместо него на TFTP сервер в каталог 6.2.29 запиши bootx64.efi из соседнего каталога 6.2.28.

Будет та же ошибка, что была раньше, про загрузочный диск? Или зависнет?

cat /proc/cmdline напишет больше букв, чем раньше?
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

Или виртуалка сломалась
Виртуалка точно не ломалась.
У меня на vmware работает.
Вы уверены, что после неудачной загрузки не сработал встроенный механизм PXE загрузки vmware?
Я сначала тоже также ошибся.
Попробуй спрячь bootx64.efi от последней сборки и вместо него на TFTP сервер в каталог 6.2.29 запиши bootx64.efi из соседнего каталога 6.2.28.

Попробовал. Теперь та же ошибка, что и была раньше. Больше не зависает. Кладу образ bootx64.efi от 6.2.29 и машина опять виснет... Ну, точнее она не виснет, нет вообще никаких нагрузок ни на память, ни на проц, ни на диск, ни на сеть...
cat /proc/cmdline напишет больше букв, чем раньше?
Больше:

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

quiet bootx64 BOOT_IMAGE=tftp://XXX.XXX.XXX.XXX/6.2.29/bootx64.efi quiet
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение aka »

jedi88knight писал(а): Вт июн 25, 2024 8:33 pm Вы уверены, что после неудачной загрузки не сработал встроенный механизм PXE загрузки vmware?
На экране то же, что и на скрине: качается bootx64.efi.cfg, следующей строкой bootx64.efi, дальше мигает чёрный экран и появляется втваревое Press Del to enter Setup. Встроенный механизм PXE загрузки vmware писал бы больше букв пока качает.
jedi88knight писал(а): Вт июн 25, 2024 8:33 pm Я сначала тоже также ошибся.
Ошибся с какой сборкой втвари?

Именно тот bootx64.efi от последней 6.2.29, который зависает в чёрный экран после iPXE, загрузится на той же виртуалке при загрузке по встроенному PXE?
jedi88knight писал(а): Вт июн 25, 2024 8:33 pm Больше:

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

quiet bootx64 BOOT_IMAGE=tftp://XXX.XXX.XXX.XXX/6.2.29/bootx64.efi quiet
Значит этот этап прошёл правильно.
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение aka »

Попробуй вот этот bootx64.efi после iPXE:

http://wtware.com/testing/202406260212.zip

Если он сразу после загрузки на терминале напишет имя файла, номер строки и даст командную строку, это хорошо. Надо сказать ему exit. И продолжать командовать exit пока не зависнет. Мне нужны последние имя файла и строка, после которых признаков жизни больше не будет.
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

Попробуй вот этот bootx64.efi после iPXE:
Короче... скачал архив с тестовым bootx64.efi, распаковал, положил в 'C:\Program Files (x86)\WTware\TFTPDROOT\6.2.29' с заменой.
Загружает iPXE у нас bootx64.efi и bootx64.efi.cfg
Затем сваливается в консоль с дефолтным шрифтом, как у GRUB со следующим содержанием:
Изображение
Набираю: Он прям моментально сваливается в другую консоль, там уже шрифт красивый wtware-ный со следующим содержанием:
Изображение
Еще раз набираю: Иииииии.... Оно запустилось через секунд 5-6...
Изображение
Такие дела.
akatik
Разработчик
Разработчик
Сообщения: 237
Зарегистрирован: Пт апр 01, 2005 1:28 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение akatik »

Загадочно. Попробуй это: http://wtware.com/testing/202406261138/ ... .29.ru.zip В соседней теме на этом WiFi поехал, может и iPXE поедет.
jedi88knight
Сообщения: 12
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение jedi88knight »

Пфффф.... Да) Этот сразу загрузился) Оставляю на продакт? Или ждем "стабильной" 6.2.29 ?

Проверил, грузится и по стандартному UEFI PXE и по iPXE, собранному с wtware.ipxe.script

Кстати WiFi тоже скорее всего поедет с iPXE, если в него правильно зашить WPA2... Я почитал вообще про все возможности iPXE, у него есть образы бинарные и для прошивки адаптеров (как раньше вы делали на Etherboot). И у него даже есть поддержка айфона или андроида, который подключен по проводу в режиме модема) То есть, если в том VLANe, где сам айфон получил адрес есть TFTP и все необходимые параметры DHCP, то комп, к которому подключен айфон должен загружаться по PXE))
aka
Разработчик
Разработчик
Сообщения: 11985
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)

Сообщение aka »

Работать можно, но когда выйдет стабильная 6.2.30, лучше обновиться.

Втварь как она сейчас есть не согласится загружаться по WiFi в iPXE. Всё, что относится к WiFi, в втвари не в bootx64.efi, а в другом файле (uefi-xnet для UEFI), который в нормальной жизни с диска читается. Потому что те, кто по сети грузятся, им же не надо горы WiFi драйверов качать, потому из втваревого bootx64.efi выкинуто всё что можно было оттуда выкинуть. А iPXE скачает только первый файл, остальное не скачает.
Ответить

Вернуться в «Подходящие компьютеры и материнские платы»