{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}iPXE boot files - PXE Manager{% endblock %} {# Signer as a short chip; the long explanation goes in the row body (it is a safety warning, so never hover-only). #} {% macro sig_chip(info) -%} {% if info.dual %}{{ ui.chip('MS UEFI CA 2011 + 2023', 'ok') }} {% elif info.kind == 'microsoft-2011' %}{{ ui.chip('MS UEFI CA 2011 only', 'warn') }} {% elif info.kind == 'microsoft-2023' %}{{ ui.chip('MS UEFI CA 2023', 'ok') }} {% elif info.kind == 'microsoft' %}{{ ui.chip('Microsoft, other CA', 'neutral') }} {% elif info.kind == 'ipxe' %}{{ ui.chip('iPXE Secure Boot CA', 'ok') }} {% elif info.kind == 'bios' %}{{ ui.chip('Legacy BIOS', 'neutral') }} {% elif info.kind == 'unsigned' %}{{ ui.chip('Unsigned', 'err') }} {% elif info.kind == 'error' %}{{ ui.chip('Not checked', 'err') }} {% else %}{{ ui.chip('Other signer', 'warn') }}{% endif %} {%- endmacro %} {% macro sig_text(info, chain_ok=none) -%} {% if info.kind == 'microsoft-2011' %}
The Secure Boot chain dnsmasq hands every UEFI client over TFTP: the Microsoft-signed shim (ipxe-shim.efi, dual-signed under Microsoft UEFI CA 2011 and 2023) starts ipxe.efi, which is signed by the iPXE Secure Boot CA. ipxe.efi is the release's snponly build (firmware network and USB drivers, so USB keyboards keep working); the release's full build is refused. Updates come from the upstream iPXE release tarball on GitHub, plus the dual-signed shim from the separate ipxe/shim release; each download's sha256 is checked against GitHub's published digest and each file's signer chain is read with sbverify before it can be installed. ipxe-bcm.efi (the old build, kept as the rollback), dnsmasq.conf and the Blancco files are never changed here.
{% for l in routing.lines %}{{ l }}
{% endfor %}
All commands run on the PXE server as root.
cd /tmp
curl -fLO {{ tarball_url }}
curl -fLO https://github.com/ipxe/shim/releases/latest/download/ipxe-shimx64.efi
sha256sum ipxeboot.tar.gz ipxe-shimx64.efi
GitHub goes through Zscaler. A certificate error from curl means the Zscaler root CA is missing from
/usr/local/share/ca-certificates/ (the playbook installs it).tar xzf ipxeboot.tar.gz ls -l ipxeboot/x86_64-sb/
sbverify --list ipxe-shimx64.efi sbverify --list ipxeboot/x86_64-sb/ipxe.efi sbverify --list ipxeboot/x86_64-sb/snponly.efiThe dual-signed shim shows CN=Microsoft UEFI CA 2023 and CN=Microsoft Corporation UEFI CA 2011 (depending on the sbverify version it lists both signatures or only the outer one; this page reads every signature, nested ones too). Fall back to the tarball's shimx64.efi (CN=Microsoft Corporation UEFI CA 2011) only if the dual-signed one is unavailable. ipxe.efi must show CN=iPXE Secure Boot Intermediate ... issued by CN=iPXE Secure Boot CA. The shim's warning: data remaining ... gaps between PE/COFF sections? is normal. Do not rely on sbverify --cert: it reports OK even for the wrong certificate.
B=/var/lib/pxe-webapp/updates/ipxe/backups/$(date +%Y%m%d-%H%M%S) mkdir -p "$B" && cp -p /srv/tftp/ipxe-shim.efi /srv/tftp/ipxe.efi "$B"/
install -m 0644 ipxeboot/x86_64-sb/snponly.efi /srv/tftp/.ipxe.efi.new && mv -f /srv/tftp/.ipxe.efi.new /srv/tftp/ipxe.efi install -m 0644 ipxe-shimx64.efi /srv/tftp/.ipxe-shim.efi.new && mv -f /srv/tftp/.ipxe-shim.efi.new /srv/tftp/ipxe-shim.efiNote the first line: the snponly build goes in as ipxe.efi. Never install the release's full x86_64-sb/ipxe.efi (it kills USB keyboards), and never replace ipxe-bcm.efi (the rollback). No dnsmasq restart is needed.