LinuxのLiveUSBにmemtest86+を追加する
RufusでUbuntuのLive USBを作成してある前提で、そのgrub起動メニューにmemtest86+を追加する。
| 項目 | 値 |
|---|---|
| メディア | Ubuntu 24.04 x86_64 |
| Live USB作成方法 | Rufus ISOモード |
Rufus ISOモードだと、USBにFATパーティションが作られ、その中にファイルとしてUbuntu起動のためのデータやgrubのデータがおかれる。
ちなみに、EFI bootではなくMBRブートならメニューに Test memory と表示されるので、これを使えばよい。
一番簡単な方法
USB内の /boot/grub/grub.cfg を開くと、
if [ "$grub_platform" = "efi" ]; then (省略) else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin }
とある。この Test memory をEFIの場合にも表示するようにすればよい。
linux16 では起動できないようなので、 linux として、
if [ "$grub_platform" = "efi" ]; then (省略) menuentry 'Test memory' { linux /boot/memtest86+x64.bin } else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin }
というように、追記した。
公式サイトのバイナリを使う
公式サイト Memtest86+ | The Open-Source Memory Testing Tool からダウンロードしてくる。
ダウンロードするものは Binary Files (.bin/.efi) を選択する。
執筆時点ではこのリンクだった。
mt86plus_7.00.binaries.zip
圧縮ファイル内にある memtest64.efi を、USB内に配置する。ここでは例えば /boot/memtest_efi とする。
次に /boot/grub/grub.cfg を開き、下記内容を追記する。
menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_efi keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_efi keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_efi nosmp nosm nobench }
上記の記述は Linux ISO w/ GRUB (64 bits) にあるものを真似した。
備考
なぜEFIの場合にデフォルトで使えないようにしているかは不明。
また、公式バイナリについて、EFI用バイナリでも、MBRから起動できた。逆にMBR用のバイナリでも、EFIから起動できた。(最後まで正常動作するのかは確認していない。)何のために別々なのか分からない。
メインボードによっては適切に選ぶ必要があるのかもしれない。
最終的なgrub.cfg
両方の方法を使えるようにしたgrub.cfgは下記となる。
筆者の好みでUbuntuの起動オプションを少しカスタマイズしているが、そこは今回関係ないので無視して頂きたい。
set timeout=30 loadfont unicode set menu_color_normal=white/black set menu_color_highlight=black/light-gray menuentry "Try or Install Ubuntu" { set gfxpayload=keep linux /casper/vmlinuz --- verbose initrd /casper/initrd } menuentry "Ubuntu (safe graphics)" { set gfxpayload=keep linux /casper/vmlinuz nomodeset --- verbose initrd /casper/initrd } menuentry "Console" { set gfxpayload=keep linux /casper/vmlinuz --- verbose systemd.unit=multi-user.target initrd /casper/initrd } menuentry "Console (safe graphics)" { set gfxpayload=keep linux /casper/vmlinuz nomodeset --- verbose systemd.unit=multi-user.target initrd /casper/initrd } grub_platform if [ "$grub_platform" = "efi" ]; then menuentry 'Boot from next volume' { exit 1 } menuentry 'UEFI Firmware Settings' { fwsetup } menuentry 'Test memory' { linux /boot/memtest86+x64.bin } menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_efi keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_efi keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_efi nosmp nosm nobench } else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin } menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_mbr keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_mbr keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_mbr nosmp nosm nobench } fi