• mward4 released this 2026-05-29 03:11:35 -04:00 | 30 commits to main since this release

    OpenPXE v0.4.69

    The graphical-boot-menu release. Plus the NFS fix that finally lands
    NFS shares, and a FleetDM-style full-width custom logo.

    1. Graphical PXE boot background — built from source, no more ASCII

    OpenPXE now paints a real graphical background on the PXE boot menu,
    the way iVentoy does. Your uploaded logo sits across the top of the
    boot screen on a clean dark field; the ISO menu renders below it. With
    no logo uploaded you still get a designed background (a default OpenPXE
    mark) — the old ASCII wordmark is gone entirely.

    How (and why it took until now): the boot-menu background needs
    iPXE compiled with CONSOLE_FRAMEBUFFER + IMAGE_PNG + CONSOLE_CMD
    so its console --picture command can paint a PNG. The public iPXE
    binaries omit those flags, and building iPXE ourselves had been blocked
    for eight releases by cc1 segfaulting under QEMU emulation on the
    arm64 build host.

    v0.4.69 fixes the build the right way: a dedicated build stage that
    runs on the native builder architecture and cross-compiles x86_64
    iPXE with a real cross-compiler (x86_64-linux-gnu-gcc). No emulation,
    no segfault — the iPXE build now takes ~2 minutes and is fully baked
    into the image. Validated end-to-end: the PNG decoder, framebuffer
    console, and pixel-buffer code are all confirmed linked into the
    binary.

    What this means in practice:

    • x86_64 UEFI clients (the overwhelming majority of modern
      machines) get the full graphical background.
    • BIOS / i386 / arm64 clients keep the upstream binaries and fall
      back to a clean text menu (no ASCII, just the menu).
    • Upload any PNG, JPEG, WebP, or GIF logo — OpenPXE composites it
      onto a 1024×768 background and transcodes to PNG (the only format
      iPXE consumes). WebP works on the input side even though iPXE itself
      can't read WebP.

    The same uploaded logo now drives three places: the WebUI top-left
    brand mark, and the PXE boot background on machines.

    2. NFS shares actually mount now (NFS3ERR_ACCES fixed)

    v0.4.68's privileged-port fix got past the mount denial
    (MNT3ERR_ACCES); operators then hit NFS3ERR_ACCES on the directory
    listing. Root cause: the NFS client defaulted to AUTH_NONE, but
    essentially every NFS server (UniFi UNAS included) exports sec=sys
    and rejects anonymous callers on the actual file operations.

    v0.4.69 presents a proper AUTH_SYS credential (uid 0 / gid 0). On a
    no_root_squash server that's full root read; on the far more common
    root_squash server it maps to the anonymous user, which can read any
    world-readable ISO share — the normal case. No new UI field: ISO
    libraries are read-only shared data, and a uid knob is exactly the kind
    of thing that makes a tool confusing for an L1 tech.

    For your UNAS Pro: server 192.168.1.51, export
    /var/nfs/shared/isos, host IP allow-listed — this should now mount
    and list. If you still see NFS3ERR_ACCES, the new hint spells out
    that it's now a server-side directory-permission/squash issue, not an
    IP or auth-flavor one.

    3. FleetDM-style full-width logo (top-left)

    When you upload a custom logo it now spans the sidebar header
    (left-aligned, up to ~200×50, scaled to fit) and the "OpenPXE"
    wordmark is hidden — the FleetDM pattern, where the uploaded logo is
    the sole brand element. The bundled-default (no upload) keeps the mark

    • wordmark. Rendered server-side so there's no flash of the default on
      load.

    Quality

    • 164 tests passing. cargo clippy --workspace --all-targets -D warnings clean.
    • iPXE build stage validated in isolation (png/fbcon/pixbuf linkage
      confirmed) before the full image build.

    Container image

    • gitea.milesward.dev/mward4/openpxe:0.4.69
    • gitea.milesward.dev/mward4/openpxe:latest

    linux/amd64; static-musl /openpxe binary; PNG-enabled x86_64 iPXE
    baked in.

    What still needs your real-world test

    The PNG background is validated at the binary level (the right code is
    compiled and linked) but hasn't been booted on real hardware from this
    build yet. Please PXE-boot an x86_64 UEFI machine and confirm the
    background paints. Once that's confirmed in the field, this chapter
    closes and we move to v0.4.7.

    Compatibility

    • Additive; no data-file format changes.
    • /branding/pxe-logo now always returns a PNG (was 404 with no logo).
      iPXE clients are unaffected (they just get a background now).
    Downloads