USBメモリでmemtest86とmemtest86+を実行する

USBメモリmemtest86memtest86+を実行しようしたけど、以前と同様に4GBのUSBメモリでは普通の方法ではうまく行かなかった。
memtest86USBメモリのディスクイメージを提供している。memtest86-4.0a.usbをCygwinのddでUSBメモリに書きこみ、起動しようとしたが起動しなかった。memtest86+インストーラを提供していて、これでUSBメモリに書きこんでみたがやはり起動しない。どちらも4GBのメモリの先頭に小さなFATのパーティションが作られる。これがブートローダから見えていないようだ。

解決方法は以前と同じでSyslinuxを使う。まずCreating FreeDOS USB boot stick for BIOS flashingからbootstick.zipをもらってくる。今回使うのはsyslinux.exeだけ。USBメモリFAT32でフォーマットして、管理者として実行したコマンドプロンプトで、syslinux -ma X:を実行する。XはUSBメモリのドライブレター。

次に以下の一行だけのsyslinx.cfgをUSBメモリに作成する。

default memtest

memtest86を実行したいときには、Floppy disk packageを取ってきて、memtest.binをUSBメモリにmemtestとしてコピーする。memtest86+の場合には、Pre-Compiled Bootable Binaryを取ってきて、memtest.binをUSBメモリにmemtestとしてコピーする。これでUSBメモリからブートすればメモリテストを実行できる。

どちらのmemtest.binもブートローダLinuxカーネルとして読み込む。memtest.binをmemtestにリネームしないと、これがうまくいかない。拡張子がbinだとsyslinuxがブートストラッププログラムと誤解して、Linuxカーネルとして起動してくれない。手順そのものは簡単だけど、いろいろはまってうまくいくまでに結構苦戦した。