From 2dccbc010c77a4f2bd41e63c233e861fe6c8488a Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Wed, 15 Apr 2026 09:57:29 +0300 Subject: [PATCH] Use MEPHI mirror, disable security repo, fix memtest in ISO build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Switch all lb mirrors to mirror.mephi.ru/debian/ for faster/reliable downloads - Disable security repo (--security false) — not needed for LiveCD - Pin MEMTEST_VERSION=6.10-4 in VERSIONS, export to hook environment - Set BEE_REQUIRE_MEMTEST=1 in build-in-container.sh — missing memtest is now fatal - Fix 9100-memtest.hook.binary: add apt-get download fallback when lb binary_memtest has already purged the package cache; handle both 5.x (memtest86+x64.bin) and 6.x (memtest86+.bin) BIOS binary naming Co-Authored-By: Claude Sonnet 4.6 --- iso/builder/VERSIONS | 1 + iso/builder/auto/config | 8 +-- iso/builder/build-in-container.sh | 2 + iso/builder/build.sh | 1 + .../hooks/normal/9100-memtest.hook.binary | 61 ++++++++++++++++--- 5 files changed, 61 insertions(+), 12 deletions(-) diff --git a/iso/builder/VERSIONS b/iso/builder/VERSIONS index c63678d..3cd4a93 100644 --- a/iso/builder/VERSIONS +++ b/iso/builder/VERSIONS @@ -21,3 +21,4 @@ HIPBLASLT_VERSION=0.10.0.60304-76~22.04 COMGR_VERSION=2.8.0.60304-76~22.04 GO_VERSION=1.24.0 AUDIT_VERSION=1.0.0 +MEMTEST_VERSION=6.10-4 diff --git a/iso/builder/auto/config b/iso/builder/auto/config index 81fd28b..e7e6bc8 100755 --- a/iso/builder/auto/config +++ b/iso/builder/auto/config @@ -23,10 +23,10 @@ lb config noauto \ --bootloaders "grub-efi,syslinux" \ --debian-installer none \ --archive-areas "main contrib non-free non-free-firmware" \ - --mirror-bootstrap "https://deb.debian.org/debian" \ - --mirror-chroot "https://deb.debian.org/debian" \ - --mirror-binary "https://deb.debian.org/debian" \ - --security true \ + --mirror-bootstrap "http://mirror.mephi.ru/debian/" \ + --mirror-chroot "http://mirror.mephi.ru/debian/" \ + --mirror-binary "http://mirror.mephi.ru/debian/" \ + --security false \ --linux-flavours "amd64" \ --linux-packages "${LB_LINUX_PACKAGES}" \ --memtest memtest86+ \ diff --git a/iso/builder/build-in-container.sh b/iso/builder/build-in-container.sh index 28b3710..1c8a4e7 100755 --- a/iso/builder/build-in-container.sh +++ b/iso/builder/build-in-container.sh @@ -161,6 +161,7 @@ run_variant() { -e GOMODCACHE=/cache/go-mod \ -e TMPDIR=/cache/tmp \ -e BEE_CACHE_DIR=/cache/bee \ + -e BEE_REQUIRE_MEMTEST=1 \ -w /work \ "${IMAGE_REF}" \ sh /work/iso/builder/build.sh --variant "${_v}" \ @@ -175,6 +176,7 @@ run_variant() { -e GOMODCACHE=/cache/go-mod \ -e TMPDIR=/cache/tmp \ -e BEE_CACHE_DIR=/cache/bee \ + -e BEE_REQUIRE_MEMTEST=1 \ -w /work \ "${IMAGE_REF}" \ sh /work/iso/builder/build.sh --variant "${_v}" diff --git a/iso/builder/build.sh b/iso/builder/build.sh index 72847c2..04de8da 100755 --- a/iso/builder/build.sh +++ b/iso/builder/build.sh @@ -57,6 +57,7 @@ OVERLAY_STAGE_DIR="${DIST_DIR}/overlay-stage-${BUILD_VARIANT}" export BEE_GPU_VENDOR BEE_NVIDIA_MODULE_FLAVOR BUILD_VARIANT . "${BUILDER_DIR}/VERSIONS" +export MEMTEST_VERSION export PATH="$PATH:/usr/local/go/bin" : "${BEE_REQUIRE_MEMTEST:=0}" diff --git a/iso/builder/config/hooks/normal/9100-memtest.hook.binary b/iso/builder/config/hooks/normal/9100-memtest.hook.binary index 15d8ab5..9534e93 100755 --- a/iso/builder/config/hooks/normal/9100-memtest.hook.binary +++ b/iso/builder/config/hooks/normal/9100-memtest.hook.binary @@ -5,6 +5,8 @@ set -e : "${BEE_REQUIRE_MEMTEST:=0}" +# memtest86+ 6.x uses memtest86+.bin (no x64 suffix) for the BIOS binary, +# while 5.x used memtest86+x64.bin. We normalise both to x64 names in the ISO. MEMTEST_FILES="memtest86+x64.bin memtest86+x64.efi" BINARY_BOOT_DIR="binary/boot" GRUB_CFG="binary/boot/grub/grub.cfg" @@ -26,13 +28,13 @@ fail_or_warn() { copy_memtest_file() { src="$1" - base="$(basename "$src")" - dst="${BINARY_BOOT_DIR}/${base}" + dst_name="${2:-$(basename "$src")}" + dst="${BINARY_BOOT_DIR}/${dst_name}" [ -f "$src" ] || return 1 mkdir -p "${BINARY_BOOT_DIR}" cp "$src" "$dst" - log "copied ${base} from ${src}" + log "copied ${dst_name} from ${src}" } extract_memtest_from_deb() { @@ -41,14 +43,42 @@ extract_memtest_from_deb() { log "extracting memtest payload from ${deb}" dpkg-deb -x "$deb" "$tmpdir" - for f in ${MEMTEST_FILES}; do - if [ -f "${tmpdir}/boot/${f}" ]; then - copy_memtest_file "${tmpdir}/boot/${f}" - fi - done + + # EFI binary: both 5.x and 6.x use memtest86+x64.efi + if [ -f "${tmpdir}/boot/memtest86+x64.efi" ]; then + copy_memtest_file "${tmpdir}/boot/memtest86+x64.efi" + fi + + # BIOS binary: 5.x = memtest86+x64.bin, 6.x = memtest86+.bin + if [ -f "${tmpdir}/boot/memtest86+x64.bin" ]; then + copy_memtest_file "${tmpdir}/boot/memtest86+x64.bin" + elif [ -f "${tmpdir}/boot/memtest86+.bin" ]; then + copy_memtest_file "${tmpdir}/boot/memtest86+.bin" "memtest86+x64.bin" + fi + rm -rf "$tmpdir" } +download_and_extract_memtest() { + tmpdl="$(mktemp -d)" + ver_arg="" + if [ -n "${MEMTEST_VERSION:-}" ]; then + ver_arg="=memtest86+=${MEMTEST_VERSION}" + log "downloading memtest86+=${MEMTEST_VERSION} from apt" + else + log "downloading memtest86+ from apt (no version pinned)" + fi + # shellcheck disable=SC2086 + ( cd "$tmpdl" && apt-get download "memtest86+${ver_arg}" ) 2>/dev/null || true + deb="$(find "$tmpdl" -maxdepth 1 -type f -name 'memtest86+*.deb' 2>/dev/null | head -1)" + if [ -n "$deb" ]; then + extract_memtest_from_deb "$deb" + else + log "apt download of memtest86+ failed" + fi + rm -rf "$tmpdl" +} + ensure_memtest_binaries() { missing=0 for f in ${MEMTEST_FILES}; do @@ -56,10 +86,15 @@ ensure_memtest_binaries() { done [ "$missing" -eq 1 ] || return 0 + # 1. Try files already placed by lb binary_memtest or chroot for root in chroot/boot /boot; do for f in ${MEMTEST_FILES}; do [ -f "${BINARY_BOOT_DIR}/${f}" ] || copy_memtest_file "${root}/${f}" || true done + # 6.x BIOS binary may lack x64 in name — copy with normalised name + if [ ! -f "${BINARY_BOOT_DIR}/memtest86+x64.bin" ]; then + copy_memtest_file "${root}/memtest86+.bin" "memtest86+x64.bin" || true + fi done missing=0 @@ -68,6 +103,7 @@ ensure_memtest_binaries() { done [ "$missing" -eq 1 ] || return 0 + # 2. Try apt package cache (may be empty if lb binary_memtest already purged) for root in cache chroot/var/cache/apt/archives /var/cache/apt/archives; do [ -d "$root" ] || continue deb="$(find "$root" -type f \( -name 'memtest86+_*.deb' -o -name 'memtest86+*.deb' \) 2>/dev/null | head -1)" @@ -76,6 +112,15 @@ ensure_memtest_binaries() { break done + missing=0 + for f in ${MEMTEST_FILES}; do + [ -f "${BINARY_BOOT_DIR}/${f}" ] || missing=1 + done + [ "$missing" -eq 1 ] || return 0 + + # 3. Fallback: download fresh from apt (lb binary_memtest purges the cache) + download_and_extract_memtest + missing=0 for f in ${MEMTEST_FILES}; do if [ ! -f "${BINARY_BOOT_DIR}/${f}" ]; then