Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 105d92df8b | |||
| f96b149875 | |||
| 5ee120158e | |||
| 09fe0e2e9e |
@@ -30,7 +30,7 @@ lb config noauto \
|
|||||||
--linux-flavours "amd64" \
|
--linux-flavours "amd64" \
|
||||||
--linux-packages "${LB_LINUX_PACKAGES}" \
|
--linux-packages "${LB_LINUX_PACKAGES}" \
|
||||||
--memtest none \
|
--memtest none \
|
||||||
--iso-volume "EASY-BEE-${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \
|
--iso-volume "EASY_BEE_${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \
|
||||||
--iso-application "EASY-BEE-${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \
|
--iso-application "EASY-BEE-${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \
|
||||||
--bootappend-live "boot=live components video=1920x1080 console=tty0 console=ttyS0,115200n8 loglevel=7 username=bee user-fullname=Bee modprobe.blacklist=nouveau" \
|
--bootappend-live "boot=live components video=1920x1080 console=tty0 console=ttyS0,115200n8 loglevel=7 username=bee user-fullname=Bee modprobe.blacklist=nouveau" \
|
||||||
--apt-recommends false \
|
--apt-recommends false \
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ while [ $# -gt 0 ]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
case "$VARIANT" in
|
case "$VARIANT" in
|
||||||
nvidia|amd|all) ;;
|
nvidia|amd|nogpu|all) ;;
|
||||||
*) echo "unknown variant: $VARIANT (expected nvidia, amd, or all)" >&2; exit 1 ;;
|
*) echo "unknown variant: $VARIANT (expected nvidia, amd, nogpu, or all)" >&2; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$CLEAN_CACHE" = "1" ]; then
|
if [ "$CLEAN_CACHE" = "1" ]; then
|
||||||
@@ -62,6 +62,7 @@ if [ "$CLEAN_CACHE" = "1" ]; then
|
|||||||
echo "=== cleaning live-build work dirs ==="
|
echo "=== cleaning live-build work dirs ==="
|
||||||
rm -rf "${REPO_ROOT}/dist/live-build-work-nvidia"
|
rm -rf "${REPO_ROOT}/dist/live-build-work-nvidia"
|
||||||
rm -rf "${REPO_ROOT}/dist/live-build-work-amd"
|
rm -rf "${REPO_ROOT}/dist/live-build-work-amd"
|
||||||
|
rm -rf "${REPO_ROOT}/dist/live-build-work-nogpu"
|
||||||
echo "=== caches cleared, proceeding with build ==="
|
echo "=== caches cleared, proceeding with build ==="
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -182,8 +183,12 @@ case "$VARIANT" in
|
|||||||
amd)
|
amd)
|
||||||
run_variant amd
|
run_variant amd
|
||||||
;;
|
;;
|
||||||
|
nogpu)
|
||||||
|
run_variant nogpu
|
||||||
|
;;
|
||||||
all)
|
all)
|
||||||
run_variant nvidia
|
run_variant nvidia
|
||||||
run_variant amd
|
run_variant amd
|
||||||
|
run_variant nogpu
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ while [ $# -gt 0 ]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
case "$BEE_GPU_VENDOR" in
|
case "$BEE_GPU_VENDOR" in
|
||||||
nvidia|amd) ;;
|
nvidia|amd|nogpu) ;;
|
||||||
*) echo "unknown variant: $BEE_GPU_VENDOR (expected nvidia or amd)" >&2; exit 1 ;;
|
*) echo "unknown variant: $BEE_GPU_VENDOR (expected nvidia, amd, or nogpu)" >&2; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
BUILD_WORK_DIR="${DIST_DIR}/live-build-work-${BEE_GPU_VENDOR}"
|
BUILD_WORK_DIR="${DIST_DIR}/live-build-work-${BEE_GPU_VENDOR}"
|
||||||
@@ -249,8 +249,8 @@ rm -f \
|
|||||||
"${OVERLAY_STAGE_DIR}/usr/local/bin/bee-smoketest" \
|
"${OVERLAY_STAGE_DIR}/usr/local/bin/bee-smoketest" \
|
||||||
"${OVERLAY_STAGE_DIR}/usr/local/bin/all_reduce_perf"
|
"${OVERLAY_STAGE_DIR}/usr/local/bin/all_reduce_perf"
|
||||||
|
|
||||||
# Remove NVIDIA-specific overlay files for AMD variant
|
# Remove NVIDIA-specific overlay files for non-nvidia variants
|
||||||
if [ "$BEE_GPU_VENDOR" = "amd" ]; then
|
if [ "$BEE_GPU_VENDOR" != "nvidia" ]; then
|
||||||
rm -f "${OVERLAY_STAGE_DIR}/usr/local/bin/bee-nvidia-load"
|
rm -f "${OVERLAY_STAGE_DIR}/usr/local/bin/bee-nvidia-load"
|
||||||
rm -f "${OVERLAY_STAGE_DIR}/etc/systemd/system/bee-nvidia.service"
|
rm -f "${OVERLAY_STAGE_DIR}/etc/systemd/system/bee-nvidia.service"
|
||||||
fi
|
fi
|
||||||
@@ -387,9 +387,12 @@ CUBLAS_VERSION=${CUBLAS_VERSION}
|
|||||||
CUDA_USERSPACE_VERSION=${CUDA_USERSPACE_VERSION}
|
CUDA_USERSPACE_VERSION=${CUDA_USERSPACE_VERSION}
|
||||||
NCCL_TESTS_VERSION=${NCCL_TESTS_VERSION}"
|
NCCL_TESTS_VERSION=${NCCL_TESTS_VERSION}"
|
||||||
GPU_BUILD_INFO="nvidia:${NVIDIA_DRIVER_VERSION}"
|
GPU_BUILD_INFO="nvidia:${NVIDIA_DRIVER_VERSION}"
|
||||||
else
|
elif [ "$BEE_GPU_VENDOR" = "amd" ]; then
|
||||||
GPU_VERSION_LINE="ROCM_VERSION=${ROCM_VERSION}"
|
GPU_VERSION_LINE="ROCM_VERSION=${ROCM_VERSION}"
|
||||||
GPU_BUILD_INFO="rocm:${ROCM_VERSION}"
|
GPU_BUILD_INFO="rocm:${ROCM_VERSION}"
|
||||||
|
else
|
||||||
|
GPU_VERSION_LINE=""
|
||||||
|
GPU_BUILD_INFO="nogpu"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat > "${OVERLAY_STAGE_DIR}/etc/bee-release" <<EOF
|
cat > "${OVERLAY_STAGE_DIR}/etc/bee-release" <<EOF
|
||||||
@@ -414,17 +417,27 @@ if [ -f "${OVERLAY_STAGE_DIR}/etc/motd" ]; then
|
|||||||
mv "${OVERLAY_STAGE_DIR}/etc/motd.patched" "${OVERLAY_STAGE_DIR}/etc/motd"
|
mv "${OVERLAY_STAGE_DIR}/etc/motd.patched" "${OVERLAY_STAGE_DIR}/etc/motd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- copy variant-specific package list into work dir ---
|
# --- copy variant-specific package list, remove all other variant lists ---
|
||||||
|
# live-build picks up ALL .list.chroot files — delete other variants to avoid conflicts.
|
||||||
cp "${BUILD_WORK_DIR}/config/package-lists/bee-${BEE_GPU_VENDOR}.list.chroot" \
|
cp "${BUILD_WORK_DIR}/config/package-lists/bee-${BEE_GPU_VENDOR}.list.chroot" \
|
||||||
"${BUILD_WORK_DIR}/config/package-lists/bee-gpu.list.chroot"
|
"${BUILD_WORK_DIR}/config/package-lists/bee-gpu.list.chroot"
|
||||||
|
rm -f "${BUILD_WORK_DIR}/config/package-lists/bee-nvidia.list.chroot" \
|
||||||
|
"${BUILD_WORK_DIR}/config/package-lists/bee-amd.list.chroot" \
|
||||||
|
"${BUILD_WORK_DIR}/config/package-lists/bee-nogpu.list.chroot"
|
||||||
|
|
||||||
# --- remove archives for the other vendor ---
|
# --- remove archives for the other vendor(s) ---
|
||||||
if [ "$BEE_GPU_VENDOR" = "nvidia" ]; then
|
if [ "$BEE_GPU_VENDOR" = "nvidia" ]; then
|
||||||
rm -f "${BUILD_WORK_DIR}/config/archives/rocm.list.chroot" \
|
rm -f "${BUILD_WORK_DIR}/config/archives/rocm.list.chroot" \
|
||||||
"${BUILD_WORK_DIR}/config/archives/rocm.key.chroot"
|
"${BUILD_WORK_DIR}/config/archives/rocm.key.chroot"
|
||||||
else
|
elif [ "$BEE_GPU_VENDOR" = "amd" ]; then
|
||||||
rm -f "${BUILD_WORK_DIR}/config/archives/nvidia-cuda.list.chroot" \
|
rm -f "${BUILD_WORK_DIR}/config/archives/nvidia-cuda.list.chroot" \
|
||||||
"${BUILD_WORK_DIR}/config/archives/nvidia-cuda.key.chroot"
|
"${BUILD_WORK_DIR}/config/archives/nvidia-cuda.key.chroot"
|
||||||
|
else
|
||||||
|
# nogpu: remove both
|
||||||
|
rm -f "${BUILD_WORK_DIR}/config/archives/rocm.list.chroot" \
|
||||||
|
"${BUILD_WORK_DIR}/config/archives/rocm.key.chroot" \
|
||||||
|
"${BUILD_WORK_DIR}/config/archives/nvidia-cuda.list.chroot" \
|
||||||
|
"${BUILD_WORK_DIR}/config/archives/nvidia-cuda.key.chroot"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- substitute version placeholders in package list and archive ---
|
# --- substitute version placeholders in package list and archive ---
|
||||||
@@ -432,7 +445,7 @@ if [ "$BEE_GPU_VENDOR" = "nvidia" ]; then
|
|||||||
sed -i \
|
sed -i \
|
||||||
-e "s/%%DCGM_VERSION%%/${DCGM_VERSION}/g" \
|
-e "s/%%DCGM_VERSION%%/${DCGM_VERSION}/g" \
|
||||||
"${BUILD_WORK_DIR}/config/package-lists/bee-gpu.list.chroot"
|
"${BUILD_WORK_DIR}/config/package-lists/bee-gpu.list.chroot"
|
||||||
else
|
elif [ "$BEE_GPU_VENDOR" = "amd" ]; then
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "s/%%ROCM_VERSION%%/${ROCM_VERSION}/g" \
|
-e "s/%%ROCM_VERSION%%/${ROCM_VERSION}/g" \
|
||||||
-e "s/%%ROCM_SMI_VERSION%%/${ROCM_SMI_VERSION}/g" \
|
-e "s/%%ROCM_SMI_VERSION%%/${ROCM_SMI_VERSION}/g" \
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ elif [ "$GPU_VENDOR" = "amd" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
# nogpu: no GPU services needed
|
||||||
|
|
||||||
# Ensure scripts are executable
|
# Ensure scripts are executable
|
||||||
chmod +x /usr/local/bin/bee-network.sh 2>/dev/null || true
|
chmod +x /usr/local/bin/bee-network.sh 2>/dev/null || true
|
||||||
|
|||||||
@@ -2,15 +2,54 @@
|
|||||||
# Copy memtest86+ binaries from chroot /boot into the ISO boot directory
|
# Copy memtest86+ binaries from chroot /boot into the ISO boot directory
|
||||||
# so GRUB can chainload them directly (they must be on the ISO filesystem,
|
# so GRUB can chainload them directly (they must be on the ISO filesystem,
|
||||||
# not inside the squashfs).
|
# not inside the squashfs).
|
||||||
|
#
|
||||||
|
# Primary: copy from chroot/boot/ (populated by package postinst).
|
||||||
|
# Fallback: extract directly from the cached .deb if postinst didn't place
|
||||||
|
# the files (happens in chroot environments without grub triggers).
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "memtest: scanning chroot/boot/ for memtest files:"
|
MEMTEST_FILES="memtest86+x64.bin memtest86+x64.efi memtest86+ia32.bin memtest86+ia32.efi"
|
||||||
ls chroot/boot/memtest* 2>/dev/null || echo "memtest: WARNING: no memtest files found in chroot/boot/"
|
|
||||||
|
|
||||||
for f in memtest86+x64.bin memtest86+x64.efi memtest86+ia32.bin memtest86+ia32.efi; do
|
echo "memtest: scanning chroot/boot/ for memtest files:"
|
||||||
|
ls chroot/boot/memtest* 2>/dev/null || echo "memtest: WARNING: no memtest files in chroot/boot/"
|
||||||
|
|
||||||
|
# Primary path: copy from chroot/boot/
|
||||||
|
for f in ${MEMTEST_FILES}; do
|
||||||
src="chroot/boot/${f}"
|
src="chroot/boot/${f}"
|
||||||
if [ -f "${src}" ]; then
|
if [ -f "${src}" ]; then
|
||||||
cp "${src}" "binary/boot/${f}"
|
cp "${src}" "binary/boot/${f}"
|
||||||
echo "memtest: copied ${f} to binary/boot/"
|
echo "memtest: copied ${f} from chroot/boot/"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Fallback: if EFI binary still missing, extract from cached .deb
|
||||||
|
if [ ! -f "binary/boot/memtest86+x64.efi" ]; then
|
||||||
|
echo "memtest: EFI binary missing — attempting extraction from .deb cache"
|
||||||
|
deb=$(find chroot/var/cache/apt/archives/ chroot/var/lib/apt/lists/ \
|
||||||
|
-name 'memtest86+_*.deb' -o -name 'memtest86+*.deb' 2>/dev/null \
|
||||||
|
| head -1)
|
||||||
|
if [ -z "$deb" ]; then
|
||||||
|
# Also check lb package cache
|
||||||
|
deb=$(find cache/ -name 'memtest86+_*.deb' -o -name 'memtest86+*.deb' 2>/dev/null | head -1)
|
||||||
|
fi
|
||||||
|
if [ -n "$deb" ]; then
|
||||||
|
echo "memtest: extracting from ${deb}"
|
||||||
|
EXTRACT_DIR="$(mktemp -d)"
|
||||||
|
dpkg-deb -x "${deb}" "${EXTRACT_DIR}"
|
||||||
|
echo "memtest: files found in .deb:"
|
||||||
|
find "${EXTRACT_DIR}/boot" -type f 2>/dev/null || echo " (none in /boot)"
|
||||||
|
for f in ${MEMTEST_FILES}; do
|
||||||
|
src="${EXTRACT_DIR}/boot/${f}"
|
||||||
|
if [ -f "${src}" ]; then
|
||||||
|
cp "${src}" "binary/boot/${f}"
|
||||||
|
echo "memtest: extracted ${f} from .deb"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rm -rf "${EXTRACT_DIR}"
|
||||||
|
else
|
||||||
|
echo "memtest: WARNING: no memtest86+ .deb found in cache — memtest will not be available"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "memtest: binary/boot/ contents:"
|
||||||
|
ls binary/boot/memtest* 2>/dev/null || echo " (none)"
|
||||||
|
|||||||
1
iso/builder/config/package-lists/bee-nogpu.list.chroot
Normal file
1
iso/builder/config/package-lists/bee-nogpu.list.chroot
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# No GPU variant — no NVIDIA, no AMD/ROCm packages
|
||||||
@@ -67,7 +67,7 @@ case "$nvidia_mode" in
|
|||||||
load_module nvidia-modeset || true
|
load_module nvidia-modeset || true
|
||||||
load_module nvidia-uvm || true
|
load_module nvidia-uvm || true
|
||||||
;;
|
;;
|
||||||
gsp-off|safe|*)
|
gsp-off|safe)
|
||||||
# NVIDIA documents that GSP firmware is enabled by default on newer GPUs and can
|
# NVIDIA documents that GSP firmware is enabled by default on newer GPUs and can
|
||||||
# be disabled via NVreg_EnableGpuFirmware=0. Safe mode keeps the live ISO on the
|
# be disabled via NVreg_EnableGpuFirmware=0. Safe mode keeps the live ISO on the
|
||||||
# conservative path for platforms where full boot-time GSP init is unstable.
|
# conservative path for platforms where full boot-time GSP init is unstable.
|
||||||
@@ -76,6 +76,15 @@ case "$nvidia_mode" in
|
|||||||
fi
|
fi
|
||||||
log "GSP-off mode: skipping nvidia-modeset and nvidia-uvm during boot"
|
log "GSP-off mode: skipping nvidia-modeset and nvidia-uvm during boot"
|
||||||
;;
|
;;
|
||||||
|
nomsi|*)
|
||||||
|
# nomsi: disable MSI-X/MSI interrupts — use when RmInitAdapter fails with
|
||||||
|
# "Failed to enable MSI-X" on one or more GPUs (IOMMU group interrupt limits).
|
||||||
|
# NVreg_EnableMSI=0 forces legacy INTx interrupts for all GPUs.
|
||||||
|
if ! load_module nvidia NVreg_EnableGpuFirmware=0 NVreg_EnableMSI=0; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log "nomsi mode: MSI-X disabled (NVreg_EnableMSI=0), skipping nvidia-modeset and nvidia-uvm"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Create /dev/nvidia* device nodes (udev rules absent since we use .run installer)
|
# Create /dev/nvidia* device nodes (udev rules absent since we use .run installer)
|
||||||
|
|||||||
Reference in New Issue
Block a user