#!/bin/sh # Copy memtest86+ binaries from chroot /boot into the ISO boot directory # so GRUB can chainload them directly (they must be on the ISO filesystem, # 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 MEMTEST_FILES="memtest86+x64.bin memtest86+x64.efi memtest86+ia32.bin memtest86+ia32.efi" 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}" if [ -f "${src}" ]; then cp "${src}" "binary/boot/${f}" echo "memtest: copied ${f} from chroot/boot/" fi 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)"