RufusでUbuntuのLive USBを作成してある前提で、そのgrub起動メニューにmemtest86+を追加する。
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は下記となる。
筆者の好みで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