- 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>
55 lines
2.2 KiB
Bash
Executable File
55 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# auto/config — live-build configuration for bee ISO
|
|
# Runs automatically when lb config is called.
|
|
# See: man lb_config
|
|
|
|
set -e
|
|
|
|
. "$(dirname "$0")/../VERSIONS"
|
|
|
|
# Pin the exact kernel ABI detected by build.sh so the ISO kernel matches
|
|
# the kernel headers used to compile NVIDIA modules. Falls back to meta-package
|
|
# when lb config is run manually without the environment variable.
|
|
if [ -n "${BEE_KERNEL_ABI:-}" ] && [ "${BEE_KERNEL_ABI}" != "auto" ]; then
|
|
LB_LINUX_PACKAGES="linux-image-${BEE_KERNEL_ABI}"
|
|
else
|
|
LB_LINUX_PACKAGES="linux-image"
|
|
fi
|
|
|
|
if [ -n "${BEE_ISO_VOLUME:-}" ]; then
|
|
LB_ISO_VOLUME="${BEE_ISO_VOLUME}"
|
|
else
|
|
LB_ISO_VOLUME="EASY_BEE_${BEE_GPU_VENDOR_UPPER:-NVIDIA}"
|
|
fi
|
|
|
|
LB_HOSTNAME="${BEE_HOSTNAME:-easy-bee}"
|
|
|
|
lb config noauto \
|
|
--distribution bookworm \
|
|
--architectures amd64 \
|
|
--binary-images iso-hybrid \
|
|
--bootloaders "grub-efi,syslinux" \
|
|
--debian-installer none \
|
|
--archive-areas "main contrib non-free non-free-firmware" \
|
|
--mirror-bootstrap "http://mirror.mephi.ru/debian/" \
|
|
--mirror-chroot "http://mirror.mephi.ru/debian/" \
|
|
--mirror-binary "http://mirror.mephi.ru/debian/" \
|
|
--security true \
|
|
--linux-flavours "amd64" \
|
|
--linux-packages "${LB_LINUX_PACKAGES}" \
|
|
--memtest memtest86+ \
|
|
--iso-volume "${LB_ISO_VOLUME}" \
|
|
--iso-application "EASY-BEE-${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \
|
|
--bootappend-live "boot=live live-media=/dev/disk/by-label/${LB_ISO_VOLUME} live-media-label=${LB_ISO_VOLUME} components video=1920x1080 console=ttyS0,115200n8 console=tty0 loglevel=3 systemd.show_status=1 username=bee user-fullname=Bee modprobe.blacklist=nouveau,snd_hda_intel,snd_hda_codec_realtek,snd_hda_codec_generic,soundcore" \
|
|
--debootstrap-options "--include=ca-certificates" \
|
|
--apt-recommends false \
|
|
--chroot-squashfs-compression-type zstd \
|
|
"${@}"
|
|
|
|
# live-build (1:20230502, bookworm) has no `lb config --hostname` flag: the
|
|
# chroot_hostname helper zeroes /etc/hostname to "localhost.localdomain" for
|
|
# the duration of package installation and restores it afterwards from this
|
|
# includes file, so this is the only supported way to set it.
|
|
mkdir -p config/includes.chroot_before_packages/etc
|
|
echo "${LB_HOSTNAME}" > config/includes.chroot_before_packages/etc/hostname
|