Классический PXE для сетевой загрузки — это ад. Он основан на DHCP и TFTP, который даже в названии носит «trivial», а не «secure». Настроить его сложно, отказоустойчивость — ещё сложнее, а безопасность отсутствует как класс. Современный интернет уже давно работает на HTTPS с TLS-сертификатами. К счастью, большинство UEFI-систем умеют грузиться по HTTP(S).
Автор решил проверить, как запустить netboot.xyz прямо с официального сайта через HTTPS в Qemu на Ubuntu 26.04. Первая попытка — HTTP boot через DHCP. Но OVMF не заводится: BdsDxe: No bootable option or device was found. Причина — сетевому стеку нужен генератор случайных чисел (RNG). Без него — тишина, никаких внятных ошибок. Автору помог Claude, а в исходниках edk2 выяснилось, что зависимость прописана в [Depex] секции DxeNetLib. Решение — добавить -device virtio-rng-pci в QEMU.
После запуска UEFI тупо перебирает PXE v4, PXE v6, HTTP v4, HTTP v6. PXE-попытки валятся с ошибками, и вся процедура занимает больше минуты. Чтобы ускориться, можно отключить поддержку PXE через fw_cfg параметры opt/org.tianocore/IPv4PXESupport=no и IPv6PXESupport=no. Это срезает время до ~5 секунд.
Затем автор пробует HTTPS. Первая попытка с boot.netboot.xyz валится с невнятной ошибкой «Could not retrieve NBP file size». Логи DEBUG-сборки OVMF (которую пришлось собрать самому) показывают: «TLS Certificate is not found» и «certificate verify failed». OVMF не имеет встроенного списка CA. Лечится через p11-kit extract --format=edk2-cacerts и передачу полученного файла через -fw_cfg name=etc/edk2/https/cacerts,file=cacerts.bin.
Но даже с сертификатами HTTPS не работал. Следующая ошибка — «EE certificate key too weak». Оказалось, что EDK II в недавнем патче поднял Security Level OpenSSL с 0 до 3. Сертификат AWS, на котором висит boot.netboot.xyz, использует RSA-ключи, которые под уровень 3 не проходят. Стандартные браузеры и система с уровнем 2 такое загружают нормально. Автор просто запатчил EDK II, убрав строку SSL_set_security_level(TlsConn->Ssl, 3), пересобрал OVMF — и HTTPS заработал.
В итоге: UEFI HTTPS boot возможен. Нужен RNG, список CA и сервер с TLS сертификатом, соответствующим Security Level 3. Старый TFTP можно смело забыть.