Страница 1 из 1
iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Вс май 05, 2024 5:35 pm
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, все работает нормально, но конечно же хотелось бы загружать по сети.
Если кому-то есть что посоветовать в решении задачи, заранее благодарю.
Re: Мини ПК SZBOX B20
Добавлено: Вс май 05, 2024 7:13 pm
aka
Давным давно, когда встроенных сетевух в материнских платах чаще всего не было, ISA и потом PCI сетевухи часто шли с разъёмом под микросхему BootROM. У меня даже программатор был, мы в эти микросхемы BootROM шили прошивку Etherboot.
Проект Etherboot давно заброшен, и сама идея вставить стороннюю сетевуху и загрузиться с неё кажется мне утраченным знанием прежней цивилизации.
Теоретически оно наверное возможно. Если в сетевой карте будет BIOS, который умеет загружать, и набортный BIOS матери вызовет BIOS в сетевой карте, и не случится конфликта Legacy BIOS/UEFI у BIOS матери и BIOS сетевухи, то да.
Но мне кажется врядли. Ставлю на облом на этапе "набортный BIOS матери вызовет BIOS в сетевой карте".
А когда включаешь "UEFI USB Lan", что происходит? На экране что-то есть? Индикатор сети оживает? Wireshark какие-нибудь пакеты от коробочки в сети видит?
Re: Мини ПК SZBOX B20
Добавлено: Вс май 05, 2024 8:03 pm
jedi88knight
aka писал(а): Вс май 05, 2024 7:13 pm
А когда включаешь "UEFI USB Lan", что происходит? На экране что-то есть? Индикатор сети оживает? Wireshark какие-нибудь пакеты от коробочки в сети видит?
Вообще ничего. У меня микрот дома, даже за адресом никто не обращается, полный штиль. NMAP не видит MAC этот, пока ОС не запустится. Там два пункта "UEFI Network" и "UEFI USB Lan", но ни тот, ни другой пункт не приводит к обращению к DHCP за загрузчиком или хотя бы за адресом. Максимально тупая ситуация) В целом, очень классный тонкий клиент был-бы.
Re: Мини ПК SZBOX B20
Добавлено: Пн май 06, 2024 1:08 am
jedi88knight
Кстати, а если взять флэшку или SD карту и записать на них ipxe загрузчик? Загружаться с этой флэшки/карты и уже загрузчик ipxe загрузит по сетке Wtware? Это всё лучше, чем устанавливать саму wtware. Кстати, можно записать ipxe загрузчик и на встроенную eMMC карточку. Просто именно это рекомендуют делать для загрузки с невстроенных сетевух, в т.ч. с USB.
Re: Мини ПК SZBOX B20
Добавлено: Пн май 06, 2024 11:42 am
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.
Re: Мини ПК SZBOX B20
Добавлено: Пн май 20, 2024 4:14 pm
jedi88knight
Итак, хотелось бы продолжить обсуждение по загрузке UEFI PXE на компах, которые оную загрузку не поддерживают. Это серьезно расширит выбор "железа", а также можно будет загружать UEFI даже на старых компах, которые UEFI вообще не поддерживают. На самом деле, как я понимаю, при помощи iPXE этого добиться реально. Выше я уже писал, что у меня есть Мини-ПК, у которого сетевуха не поддерживает загрузку по сети из BIOS, т.к. она распаяна на плате посредством USB контроллера. Что я сделал:
- Скачал Xubuntu 24.04, запустился в Live режиме, открыл эмулятор терминала...
Переключаемся на root:
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.
Скачиваем исходники:
Переходим в директорию с исходниками:
Компилируем EFI загрузчик iPXE:
Записываем загрузчик на диск.
Полностью очищаем (зануляем) диск от всех разделов, т.к. в моем случае на него изготовителем была установлена Win10:
Код: Выделить всё
# dd if=/dev/zero of=/dev/mmcblk2 bs=512 count=1
Размечаем диск в GPT:
Создадим раздел размером 512МБ (а вот не жалко):
Код: Выделить всё
# parted -s /dev/mmcblk2 mkpart primary fat32 0 512MiB
Делаем наш первый раздел разделом ESP (EFI System Partition), выставляя флаг 'esp' на нем:
Создаём на нашем новом ESP разделе файловую систему FAT32:
Монтируем наш раздел:
Создаём на нём структуру каталогов:
Кладём на него EFI iPXE загрузчик:
Код: Выделить всё
# cp bin-x86_64-efi/ipxe.efi /mnt/efi/boot/bootx64.efi
Отмонтируем:
Перезагружаемся:
Загружаемся с нашего iPXE...
И вроде все здорово. Запускается наш iPXE, получает адрес, затем находит нашу wtware (6.2.16/bootx64.efi), она успешно запускается и выдает:
При загрузке терминала произошла ошибка
ОШИБКА: Не могу подключить загрузочный диск. Пожалуйста пришлите фотографию этого экрана службе поддержки WTware и объясните: откуда вы загружаете терминал и почему считаете, что терминал может оттуда загрузиться.
Продолжение работы невозможно до тех пор, пока ошибка не будет исправлена.
WTware v.6.2.16/UEFI http://wtware.ru email:support@wtware.ru
Re: Мини ПК SZBOX B20
Добавлено: Пн май 20, 2024 7:49 pm
aka
Втварь спрашивает у UEFI, откуда мы загрузились.
UEFI честно отвечает, что загрузились с жёсткого диска.
Втварь ищет свои файлы на жёстком диске.
Надо придумать, как втвари понять, что в цепочке было iPXE и надо продолжать загружаться по сети.
До UEFI такой проблемы не было. Потому что старому BIOS'у нельзя было задать вопрос "откуда мы загрузились?", и втварь выясняла источник загрузки по командной строке ядра.
Покажи, что iPXE написало в командную строку ядра. Из командной строки втвари, когда втварь сваливается в ошибку, напиши:
Что будет?
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Чт июн 20, 2024 12:17 am
jedi88knight
Доброго времени суток!
Вернулся к нашим изысканиям с IPXE, намерен разобраться. В подтверждение своих серьезных намерений, развернул виртуалку, на виртуалке сделал все что ранее делал с МиниПК, получил абсолютно тот же самый результат. По вашему запросу, когда WTware сваливается в ошибку выполнил:
Получил ответ:
Даже картинку прикреплю.

Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Вс июн 23, 2024 12:11 am
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, а грузиться по сети.
Поедет?
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Пн июн 24, 2024 8:06 pm
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... в итоге он скачал образ и повис:
Дальше просто тишина.
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Пн июн 24, 2024 10:35 pm
aka
Но ведь почти всё сработало как надо. iPXE загрузил текстовый .cfg. Прочитал и загрузил bootx64.efi. Наверное что-то не так в bootx64.efi. Или виртуалка сломалась. У меня на vmware работает.
Попробуй спрячь bootx64.efi от последней сборки и вместо него на TFTP сервер в каталог 6.2.29 запиши bootx64.efi из соседнего каталога 6.2.28.
Будет та же ошибка, что была раньше, про загрузочный диск? Или зависнет?
cat /proc/cmdline напишет больше букв, чем раньше?
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Вт июн 25, 2024 8:33 pm
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
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Вт июн 25, 2024 10:55 pm
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
Значит этот этап прошёл правильно.
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Ср июн 26, 2024 1:15 am
aka
Попробуй вот этот bootx64.efi после iPXE:
http://wtware.com/testing/202406260212.zip
Если он сразу после загрузки на терминале напишет имя файла, номер строки и даст командную строку, это хорошо. Надо сказать ему exit. И продолжать командовать exit пока не зависнет. Мне нужны последние имя файла и строка, после которых признаков жизни больше не будет.
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Ср июн 26, 2024 9:52 pm
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...

Такие дела.
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Чт июн 27, 2024 9:46 pm
akatik
Загадочно. Попробуй это:
http://wtware.com/testing/202406261138/ ... .29.ru.zip В соседней теме на этом WiFi поехал, может и iPXE поедет.
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Чт июн 27, 2024 10:40 pm
jedi88knight
Пфффф.... Да) Этот сразу загрузился) Оставляю на продакт? Или ждем "стабильной" 6.2.29 ?
Проверил, грузится и по стандартному UEFI PXE и по iPXE, собранному с wtware.ipxe.script
Кстати WiFi тоже скорее всего поедет с iPXE, если в него правильно зашить WPA2... Я почитал вообще про все возможности iPXE, у него есть образы бинарные и для прошивки адаптеров (как раньше вы делали на Etherboot). И у него даже есть поддержка айфона или андроида, который подключен по проводу в режиме модема) То есть, если в том VLANe, где сам айфон получил адрес есть TFTP и все необходимые параметры DHCP, то комп, к которому подключен айфон должен загружаться по PXE))
Re: iPXE для UEFI, которые не умеют загружаться по сети (было: Мини ПК SZBOX B20)
Добавлено: Вс июн 30, 2024 6:06 pm
aka
Работать можно, но когда выйдет стабильная 6.2.30, лучше обновиться.
Втварь как она сейчас есть не согласится загружаться по WiFi в iPXE. Всё, что относится к WiFi, в втвари не в bootx64.efi, а в другом файле (uefi-xnet для UEFI), который в нормальной жизни с диска читается. Потому что те, кто по сети грузятся, им же не надо горы WiFi драйверов качать, потому из втваревого bootx64.efi выкинуто всё что можно было оттуда выкинуть. А iPXE скачает только первый файл, остальное не скачает.