Memtest86+をPXE Bootできる環境を構築する
Memtest86+をPXE Bootしたい
Memtest86+というメモリーテストツールがあり、 これを使用すれば、メモリーの不良や相性などメモリー関連の不具合をある程度調べることができます。
今回、3台のPCに対してメモリーテストを行わなければならず、その分のイメージを焼いたUSBメモリーを用意するのは、めんどくさいなとか思いました。
なので、PXE Bootというネットワークブートの仕組みを使ってメモリーテストを行える環境を構築していきたいと思います。
やる
今回はPXEの中でも単純なtftpを用いた方法を使います。
必要な物
- PXE Bootの母艦PC
- LANケーブル
- L2SW (DHCPを使うので、ルーターではなくスイッチのほうが都合が良い)
- PXE Boot対応のイメージ
環境
ちょうどよいLinuxが入ったパソコンがノートパソコンしかなかったので、今回はそれをつかいました。
- OS: ArchLinux x64
- NIC: enp0s31f6
結線は以下のようになります。
母艦PCがDHCPサーバーの役割を持ち、配下の機器にIPアドレスをリースします。
なお、Firewallは何も考えたくなかった上、母艦もNATの下に隠されてるので無効化してあります。
- DHCPとPXEとTFTP関連のポートさえ露出してれば多分起動するはずです。(未確認)
手順
パッケージのインストール
PXE BootにはDHCPサーバーとtftpサーバーが必要なので、その両方を動かせるdnsmasqという物を今回使用しました。
yay -S dnsmasq syslinux unzip
起動にはPXE対応のブートローダーが必要なので、syslinuxもインストールします。
ファイル設置
メモリーテストのイメージを置くディレクトリとは別に syslinuxを置くディレクトリとその中に起動設定を置くディレクトリを作成します。
mkdir -p /var/lib/tftpboot/efi/{memtest,pxelinux.cfg}
PXE対応のイメージをダウンロードします。
cd /var/lib/tftpboot/efi/memtest
wget https://memtest.org/download/v6.20/mt86plus_6.20.binaries.zip
unzip mt86plus_6.20.binaries.zip
rm mt86plus_6.20.binaries.zip
ArchLinuxでは、syslinuxのUEFI用のファイルは/usr/lib/syslinux/efi64/
に存在するので、コピーします。
cp /usr/lib/syslinux/efi64/* /var/lib/tftpboot/efi/
起動設定
/var/lib/tftpboot/efi/pxelinux.cfg/
にdefault
というファイルを作成し、以下を記述。
default memtest86
prompt 1
timeout 15
label memtest86
menu label Memtest86+ 6.20
kernel /memtest/memtest64.efi
kernelに起動させたいイメージのパスを記述します。
dnsmasqの設定
/etc/dnsmasq.conf
という設定ファイルがあるので、それを編集します。
自分の環境ではすべてコメントアウトされていたので、ファイルの末尾に以下を記述しました。
# DNSの無効化
port=0
# dnsmasqがDHCPリクエストをリッスンするインターフェース
interface=enp0s31f6
bind-interfaces
# DHCPのプールするIPアドレスの始点と終点
dhcp-range=192.168.1.50,192.168.1.150,12h
# syslinuxの場所
dhcp-boot=/efi/syslinux.efi
# tftpの有効化
enable-tftp
# tftpのルート
tftp-root=/var/lib/tftpboot
ログ出したいときは以下を記述すると良い。
log-queries
log-facility=/var/log/dnsmasq.log
ネットワーク設定
enp0s31f6に192.168.1.1を割り当てる
ip link set enp0s31f6 up
ip addr add 192.168.1.1/24 dev enp0s31f6
dnsmasqの起動
起動
systemctl start dnsmasq
あとの作業
- 結線
- PXE起動する機器のPXE関連の設定(Network StackだったりCSMの設定だったりセキュアブートだったり)
- 起動しない場合はログを見たらわかるかも。(わからない時もある)
おわり
これでお手軽に複数台PC相手にメモリーテストを一気に回すことができる環境ができました。
もう少しいじくり回して、Ubuntu ServerやProxmoxとかも起動できるようにすれば、めんどくさい起動イメージを焼く作業から開放されそう。