Files
bee/iso
Mikhail ChusavitinandClaude Sonnet 5 e03267a72f platform/app: fix nvbandwidth split fallback, blackbox discovery churn, and add blocking sync brackets around load steps
- gpuBandwidthSocketGroups: a single GPU whose NUMA node fails to resolve
  no longer collapses the whole per-socket nvbandwidth split into one
  fallback pass — it now folds into the last resolved group instead,
  preserving isolation for the sockets that did resolve.
- blackbox discoverMarkedTargets: skip mounting/unmounting devices that
  already have a running worker on every 2s discovery tick. This was
  observed hammering the same USB target continuously (mount+unmount
  every ~2s for the whole session) and contending with the worker's own
  sync cycle, plausibly explaining multi-minute sync cycles seen on a
  real crash bundle.
- syncFilesystem now calls syscall.Sync() directly instead of spawning
  /bin/sync per copied file; blackbox mounts removable targets with
  -o sync so writes are durable without relying on the app-level sync as
  the primary mechanism.
- New platform.SetSyncBracketHook / satJob.syncBracket: blocks (with a
  bounded timeout) on blackbox actually reaching removable media right
  before and right after a diagnostic's real load step (nvbandwidth,
  memtester, stress-ng, dcgmi diag, nccl, smartctl/nvme self-test...),
  instead of only firing a fire-and-forget kick after the job's own log
  file is written. A crash mid-load now has durable evidence the load
  started, not just whatever streamed to the RAM-backed export dir before
  blackbox's next scheduled cycle.

Found investigating a real support bundle where blackbox's last
successful sync (19:55:25) predated both the previous job finishing and
the crashing nvbandwidth job starting (19:56:57) — none of the crash
window ever reached durable media.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 14:22:05 +03:00
..

ISO Build

bee ISO is built inside a Debian 12 builder container via iso/builder/build-in-container.sh.

Requirements

  • Docker Desktop or another Docker-compatible container runtime
  • Privileged containers enabled
  • Enough free disk space for builder cache, Debian live-build artifacts, NVIDIA driver cache, and CUDA userspace packages

Build On macOS

From the repository root:

sh iso/builder/build-in-container.sh

The script defaults to linux/amd64 builder containers, so it works on:

  • Intel Mac
  • Apple Silicon (M1 / M2 / M3 / M4) via Docker Desktop's Linux VM

You do not need to pass --platform manually for normal ISO builds.

Useful Options

Build with explicit SSH keys baked into the ISO:

sh iso/builder/build-in-container.sh --authorized-keys ~/.ssh/id_ed25519.pub

Force a clean rebuild of the builder image and build caches:

sh iso/builder/build-in-container.sh --clean-build

Use a custom cache directory:

sh iso/builder/build-in-container.sh --cache-dir /path/to/cache

Notes

  • The builder image is automatically rebuilt if the local tag exists for the wrong architecture.
  • The live ISO boots with Debian live-boot toram, so the read-only medium is copied into RAM during boot and the runtime no longer depends on the original USB/BMC virtual media staying present.
  • Target systems need enough RAM for the full compressed live medium plus normal runtime overhead, or boot may fail before reaching the TUI.
  • The NVIDIA variant installs DCGM 4 packages matched to the CUDA user-mode driver major version. For driver branch 580 / CUDA 13.x, the package family is datacenter-gpu-manager-4-cuda13 rather than legacy datacenter-gpu-manager.
  • Override the container platform only if you know why:
BEE_BUILDER_PLATFORM=linux/amd64 sh iso/builder/build-in-container.sh
  • The shipped ISO is still amd64.
  • Output ISO artifacts are written under dist/.