|
|
|
|
@@ -1,76 +0,0 @@
|
|
|
|
|
#!/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).
|
|
|
|
|
# Naming fallbacks:
|
|
|
|
|
# Debian Bookworm: /boot/memtest86+ — EFI PE64 (no extension)
|
|
|
|
|
# /boot/memtest86+.bin — legacy binary
|
|
|
|
|
# Upstream/Ubuntu: /boot/memtest86+x64.efi, /boot/memtest86+x64.bin, etc.
|
|
|
|
|
# Last resort: 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"
|
|
|
|
|
|
|
|
|
|
# Ensure destination directory exists (absence caused silent copy failures).
|
|
|
|
|
mkdir -p binary/boot
|
|
|
|
|
|
|
|
|
|
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 upstream-named files 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
|
|
|
|
|
|
|
|
|
|
# Debian Bookworm naming fallback: /boot/memtest86+ (no extension) is the EFI binary.
|
|
|
|
|
if [ ! -f "binary/boot/memtest86+x64.efi" ] && [ -f "chroot/boot/memtest86+" ]; then
|
|
|
|
|
cp "chroot/boot/memtest86+" "binary/boot/memtest86+x64.efi"
|
|
|
|
|
echo "memtest: copied /boot/memtest86+ as memtest86+x64.efi (Debian naming)"
|
|
|
|
|
fi
|
|
|
|
|
if [ ! -f "binary/boot/memtest86+x64.bin" ] && [ -f "chroot/boot/memtest86+.bin" ]; then
|
|
|
|
|
cp "chroot/boot/memtest86+.bin" "binary/boot/memtest86+x64.bin"
|
|
|
|
|
echo "memtest: copied /boot/memtest86+.bin as memtest86+x64.bin (Debian naming)"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Last resort: 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
|
|
|
|
|
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
|
|
|
|
|
# Debian naming fallback inside .deb as well
|
|
|
|
|
if [ ! -f "binary/boot/memtest86+x64.efi" ] && [ -f "${EXTRACT_DIR}/boot/memtest86+" ]; then
|
|
|
|
|
cp "${EXTRACT_DIR}/boot/memtest86+" "binary/boot/memtest86+x64.efi"
|
|
|
|
|
echo "memtest: extracted /boot/memtest86+ as memtest86+x64.efi from .deb"
|
|
|
|
|
fi
|
|
|
|
|
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)"
|