スポンサーリンク

memtest86+ Ver.6.10 を Ubuntu 22.04 LTS の grub から起動する

Memtest86+ PASSed
記事内に広告が含まれています。
スポンサーリンク

PC 不調

急な電源断

最近 PC が不調です。特別な負荷をかけていない状態で、CPU や GPU の温度が室温程度の状態でも、前触れなく電源が落ちてしまいます。BSOD が表示される事もありますが、一瞬で電源が落ちるので原因が分かりません。

頻度がどんどん増えてきましたので、PC の中の掃除を兼ねて内部を確認し、二つの対策を取る事で収まったようです。一日ほど経過しましたが、電源が落ちる現象は発生していません。

  • 使用している電源のファンを常時動作するように変更 (Fractal Design Ion+ 660W)
  • メモリを 16GB x 4枚差していましたが、古い2枚を抜いて 16GB x 2 枚の構成に変更

BSOD が表示されて固まっている訳ではないので、おそらく電源かメモリだと推測しました。電源であれば高負荷時に落ちる事が多いでしょうから、状況から考えて外した古いメモリが怪しいと思いましたので、メモリのチェックを実施しようと考えました。

メモリチェックを実施したいが実行できず

PC のメモリチェックツールとしては、

  • Windows11 標準の 「Windows メモリ診断」
  • Memtest86+

を実施しようとしましたが、どちらも動作しませんでした。

Windows メモリ診断

「Windowsメモリ診断ツール」でメモリの不具合をチェックする
ブルースクリーンが発生するようになったり、突然再起動するようになったりしたら、PCに不具合が発生している可能性がある。原因を特定するため、メモリ診断などを実行して不具合がないかチェックしよう。

こちらの @IT の記事を参考に進めました。

Windows メモリ診断は、Windows7 の頃から存在している Windows 標準のメモリ診断ツールです。Windows11 の場合は、検索から 'memory' と入力すれば選択できます。

Windows メモリ診断

「今すぐ再起動して問題の有無を確認する (推奨)」を選択して、再起動するとメモリ診断が始まります。

Windows メモリ診断ツール 起動画面

ところが30分程度待っても「テスト パスを実行しています」も「全体的なテストの状態」も、数値が全く変化ありません。また、F1 でオプションを表示しようとしても青い画面のみで文字が表示されません。ESC による終了がかろうじて機能するのみで、診断できているかどうかが分からない状態でした。

セーフモードにしてから起動するとメモリ診断ツールが使用できるという記事も見つけてやってみましたが、結局同じ状態でした。

という事で、Windows メモリ診断ツールによる確認は諦めて別の方法を考えることにしました。

Memtest86+ によるメモリ診断 (USB メモリ)

Memtest86+ | The Open-Source Memory Testing Tool
Memtest86+ is an advanced, free, open-source, stand-alone memory tester for 32- and 64-bit computers (UEFI & BIOS suppor...

次に、Memtest86+ によるメモリ診断を行おうとしました。

Memtest86+ は以前から存在しているメモリの負荷チェックのソフトウェアです。

Memtest86 - Wikipedia

一方で、フリーで配布を続けていたMemtest86+の開発が長い間停止していたが、2020年に入って開発が再開された。memtest.orgの公式サイトより、ISO形式のCD-ROMから起動するファイルや、Windows向けのUSBフラッシュメモリから起動するバージョンをダウンロード出来る。こちらは現在もGPLによるライセンスを継続している。

https://ja.wikipedia.org/wiki/Memtest86

Wikipedia によれば、色々と経緯はありますが、現在では Memtest86+ がフリーで使用できるソフトウェアになります。現在では Ver.6.10 が最新版になっています。

OS が起動する前に動作させる必要がある為、パッケージとして

  • Windows USB Installer (32/64 bits)
  • Linux ISO (32 bits)
  • Linux ISO (64 bits)
  • Linux ISO w/ GRUB (64 bits)
  • Binary Files (.bin/.efi)
  • Source code (.tar.gz)

が存在しています。

当初、Windows USB Installer を使用して USB メモリにインストール、PC の UEFI から選択して起動させようとしましたが、UEFI のエントリに Memtest86+ をインストールした USB メモリが表示されず、実行が出来ない状態でした。USB メモリを再フォーマットしてもダメ、別の USB メモリを使用してもダメ、という事で、USB メモリから Memtest86+ を起動するのは断念しました。

Ubuntu も使うのと、これまでも USB メモリからの起動は試していますので、PC の UEFI のセキュアブートは無効の状態です。これで起動できなかった事から、USB メモリ内のディレクトリ構成の問題かもしれません(今回は追及しません)。

スポンサーリンク

Ubuntu 22.04 LTS の grub から Memtest86+ を起動する

今更 DVD-R を焼いたりするのも面倒だったので他の方法を考えました。

上記の Memtest86+ のパッケージの中には Linux ISO w/ GRUB (64 bits) のパッケージがありますので、こちらを使用して Ubuntu 22.04 LTS の grub から Memtest86+ を起動させる事にしました。

Ubuntu 22.04 LTS 標準の Memtest86+ Ver.5.31b

元々、Ubuntu 22.04 LTS には memtest86+ Ver.5.31b がインストールされていました。

$ dpkg -l | grep -i memtest | tr -s ' ' ' '
ii memtest86+ 5.31b+dfsg-4 amd64 thorough real-mode memory tester

しかし、grub menu には表示されない設定になっています。update-grub コマンドで参照される /etc/grub.d/20_memtest86+ には以下の記述があり、

...snip...
# We need 16-bit boot, which isn't available on EFI.
if [ -d /sys/firmware/efi ]; then
  echo "Memtest86+ needs a 16-bit boot, that is not available on EFI, exiting" >&2
  exit 0
fi
...snip...

/sys/firmware/efi が存在する UEFI 環境ではエントリが作成されません。この部分をバイパスして強引に grub menu を作っても良かったのですが、最新の Ver.6.10 を使ってみる事とし、修正は行いませんでした。

Memtest86+ Ver.6.10 の入手と grub への登録

Memtest86+ | The Open-Source Memory Testing Tool
Memtest86+ is an advanced, free, open-source, stand-alone memory tester for 32- and 64-bit computers (UEFI & BIOS suppor...

最新版をこちらのページから入手します。Linux ISO w/ GRUB (64 bits) で試しました。

入手と展開

$ mkdir memtest86+
$ cd memtest86+
$ wget https://memtest.org/download/v6.10/mt86plus_6.10_64.grub.iso.zip
$ unzip mt86plus_6.10_64.grub.iso.zip
$ ls *iso
mt86plus_6.10_64.grub.iso

これで ISO ファイルが取り出せました。

ISO ファイルの loopback mount と中身のファイルの取り出し

ISO ファイルから中身のファイルを取り出します。

$ sudo mount -o loop ./mt86plus_6.10_64.grub.iso /mnt
$ mkdir mt86
$ cp -r /mnt/* mt86/
$ cd m86
$ ls
EFI  boot  boot.catalog
$ tree -d .
.
├── EFI
│   └── BOOT
│       └── grub
│           ├── fonts
│           └── x86_64-efi
└── boot
    └── grub
        ├── fonts
        └── i386-pc

9 directories

この中で、小文字の boot 以下は 16 ビット環境用のファイルですので、今回は使用しません。EFI 以下のファイルを使用します。

$ cd EFI/BOOT
$ file memtest
memtest: Linux kernel x86 boot executable bzImage, version Memtest86+ v6.10, RW-rootFS,
$ cat grub/grub.cfg
...snip...
menuentry "Start Memtest86+, use built-in support for USB keyboards" {
    linux /EFI/BOOT/memtest keyboard=both
}
...snip...

ここまでで、

  • EFI/BOOT/memtest が Memtest86+ の本体で、Linux の bzImage 形式になっている事
  • EFI/BOOT/grub/grub.cfg に grub の menuentry が入っている事

が分かりました。使用するのはこの二つのファイルのみです。

ファイルの配置と grub menu への登録

この二つのファイルを配置して、grub menu から使用できるようにします。

$ sudo mkdir /boot/memtest86plus
$ sudo cp ./memtest /boot/memtest86plus/
$ mv ./grub/grub.cfg ./grub/custom.cfg
$ vim ./grub/custom.cfg
### menuentry 以外を削除し memtest のディレクトリを変更
$ cat ./grub/custom.cfg
menuentry "Start Memtest86+, use built-in support for USB keyboards" {
    linux /boot/memtest86plus/memtest keyboard=both
}
menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" {
    linux /boot/memtest86plus/memtest keyboard=legacy
}
menuentry "Start Memtest86+, disable SMP and memory identification" {
    linux /boot/memtest86plus/memtest nosmp nosm nobench
}
$ sudo cp ./grub/custom.cfg /boot/grub/ 

Ubuntu の grub には、/etc/grub.d/41_custom に custom.cfg を読み込む機能が記載されていますので、custom.cfg を適切に配置すれば、grub 起動時にエントリが表示されます。

Ubuntu 22.04 LTS の grub からの Memtest86+ の起動確認

実機の前に、Hyper-V 仮想マシンで動作確認しました。設定通り、grub のメニューが3項目追加されています。

追加した grub メニューの確認

一つを起動してみると、Memtest86+ が起動しました。

この Hyper-V Ubuntu 22.04 は SSD に Path Through でインストールしていますので、Hyper-V 仮想マシンでも実機でも起動できます。この後、実機で Memtest86+ を実行して、メモリに不良が無いかどうかを確認します。

とりあえず一組目のメモリは PASS しました。取り外したメモリはこれから確認します。

まとめ

PC の突然の電源断トラブルに悩まされていました。恐らくメモリか電源だろうと推測し、メモリ診断のソフトを使おうと考えました。しかし、Windows メモリ診断ツールでは診断が進まず、Memtest86+ を USB メモリにインストールした際には UEFI から起動できない、という状態でした。

Ubuntu 22.04 LTS の grub から Memtest86+ Ver.6.10 を起動するように設定した所、問題なく Memtest86+ を実行する事が出来ました。

Hyper-V の Path Through ディスクで SSD に Ubuntu 22.04 LTS を入れていますので、設定作業は Hyper-V 仮想マシンで、実際の動作確認は PC を再起動して実機で、という形で作業できるので、設定作業が捗りました。この辺りの詳細については移転前のブログに記載していますので、よろしければご覧ください。

今回のアイキャッチ画像

今回は Stable Diffusion WebUI ではなく Memtest86+ の結果の画面です。動画配信までは考えていませんが画面のキャプチャは撮りたいですね。今回のような Memtest+ で動作させている画面はスマホで写真を撮るしかないのが少々面倒です。

コメント

タイトルとURLをコピーしました