memtest86+ — staging, entry points, netboot (ADR 0014)
keyboot ships no memtest binaries (memtest86+ is GPLv2 but a build artifact, not vendored). You stage them once; every entry point below then lights up. Absent binaries, the entries are simply not emitted / fail gracefully — nothing breaks.
Getting the binaries
Download the latest memtest86+ 6.x release from https://memtest.org/ (or build from https://github.com/memtest86plus/memtest86plus). Two artifacts matter:
| file | from the release | used by |
|---|---|---|
memtest.efi | “Binary Files (.efi)” 64-bit | GRUB/firmware chainload (UEFI) |
memtest.bin | “Binary Files (.bin)” | BIOS GRUB linux16, keyboot kexec, iPXE BIOS |
Put both in one directory, named exactly memtest.efi / memtest.bin:
mkdir -p ~/memtest && cd ~/memtest
# from the release zips: mt86plus_<ver>.{efi,bin}.zip
unzip mt86plus_*.efi.zip && mv memtest64.efi memtest.efi
unzip mt86plus_*.bin.zip && mv memtest64.bin memtest.bin
Staging (KEYBOOT_MEMTEST_DIR)
Set KEYBOOT_MEMTEST_DIR=<that dir> and the build/install paths stage the
images at /EFI/keyboot/memtest.{efi,bin} on the ESP and emit a
memtest86+ GRUB menuentry (EFI chainload; BIOS linux16):
# USB rescue stick (ci/build-usb.sh)
sudo KEYBOOT_MEMTEST_DIR=~/memtest ci/build-usb.sh
# Fresh install (the install-os orchestrator grub step)
KEYBOOT_MEMTEST_DIR=~/memtest keyboot-install install-os alpine ... --confirm
On an existing host, copy the files onto the keyboot ESP yourself and drop
the chainload snippet with keyboot-install install --memtest --confirm
(writes /etc/grub.d/11_keyboot_memtest).
Entry points
- GRUB menuentry — the reliable path; chainloads
memtest.efibefore keyboot even starts (BIOS:linux16 memtest.bin). keyboot.mode=memtest— keyboot kexecs the ESP-stagedmemtest.binright after stage-1. SSH/IPMI-scriptable on a headless box; best-effort until verified on real hardware (GL#38).- stage-8 menu
m— same kexec, for an operator already in keyboot. - Netboot (GL#39) — no local footprint at all: the published
netboot.ipxemenu (ci/gen-netboot.sh) boots${BASE_URL}/memtest.{efi,bin}straight over the network — for burning in a box before it has any install. Publish the two binaries next tokeyboot-vmlinuz/keyboot-initramfs.imgat the release URL:
BASE_URL=http://packages.osterman.co/keyboot/v0.1.0 ci/gen-netboot.sh > netboot.ipxe
Serial output (console=ttyS0,115200) is baked into every memtest append
so progress reaches IPMI serial-over-LAN.