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

Тонкие клиенты в сборе и материнские платы, подходящие для терминалов
Ответить
jedi88knight
Сообщения: 4
Зарегистрирован: Вс май 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
Разработчик
Разработчик
Сообщения: 11850
Зарегистрирован: Ср окт 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
Сообщения: 4
Зарегистрирован: Вс май 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
Сообщения: 4
Зарегистрирован: Вс май 05, 2024 5:10 pm

Re: Мини ПК SZBOX B20

Сообщение jedi88knight »

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

Re: Мини ПК SZBOX B20

Сообщение aka »

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

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

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

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

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

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

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

cat /proc/cmdline
Что будет?
Ответить

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