近々自宅で主に使っているデスクトップPCのメモリを増設しようと思い、メモリチェック用に自宅サーバーをPXEサーバーとして使えるようにしてみました。
ついでにDHCPサーバーにもなりました。
今回使用した環境は以下のとおりです。
- OS: CentOS6.2
- LAN: 192.168.0.0/24
手順は以下の通り。
ブロードバンドルーターのDHCP機能を使っている場合は必ず無効にしてください。IPアドレスを正しく取得できなくなる可能性があります!
ファイアーウォールを使っている人は次のポートを開けておいてくださいね。 dhcp -> 67:udp tftp -> 69:udp pxe -> 4011:udp
1, パッケージのインストール
tftpサーバーとdhcpサーバー、PXEブートイメージを含むsyslinuxをインストールします
[root@server ~]# yum -y install tftp-server dhcp syslinux |
syslinuxの依存関係で他のパッケージがインストールされると思いますが、とりあえずインストールしてしまいます。
xinetdをインストールしていない環境の方は、この段階でインストールしておいてください。次のステップで利用します。
2, tftp設定
tftpサーバーを設定します。xinetdを利用して必要なときに起動するようにします。
[root@server ~]# vi /etc/xinetd.d/tftp |
変更箇所は2箇所です。
# default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { disable = no # yes -> no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot # デフォルトは "-s /var/lib/tftpboot" です。 per_source = 11 cps = 100 2 flags = IPv4 } |
server_argsで指定したディレクトリは覚えておいてくださいね。以降のステップで利用します。
# server_argsのディレクトリ指定は、デフォルトのままでも構いませんし、別の場所に変更しても構いません。
# 以降は /tftpboot を指定したとして説明します。
編集がおわったら、xinetdを再起動しましょう。
[root@server ~]# service xinetd restart xinetd を停止中: [ OK ] xinetd を起動中: [ OK ] |
3, memtest86+の起動ファイルを配置
クライアントの起動ファイルをダウンロードして配置します。
場所はtftpの設定で指定したディレクトリです。
[root@server ~]# cd /tftpboot [root@server tftpboot]# wget http://www.memtest.org/download/4.20/memtest86+-4.20.bin.gz #中略 [root@server tftpboot]# gunzip memtest86+-4.20.bin.gz [root@server tftpboot]# mv memtest86+-4.20.bin memtest-4.20 |
続いて、PXEブート用のブートローダーをコピーします。
[root@server tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./ |
PXEブートの設定をpxeboot.cfgディレクトリ以下に記述します。
[root@server tftpboot]# mkdir pxelinux.cfg [root@server tftpboot]# cd pxelinux.cfg [root@server pxelinux.cfg]# vi default |
default memtest86 # labelと同じ prompt 5 timeout 30 label memtest86 # defaultと同じ kernel memtest-4.20 # tftpboot以下に配置したファイル名
4, DHCPの設定
DHCPサーバーとして動作できるように設定します。
[root@server ~]# vi /etc/dhcp/dhcpd.conf |
書き方はDHCPサーバーの構築を説明しているサイトを参照したほうが説明もわかりやすいと思うので省略します。
新規にDHCPサーバーの設定をする方は、サンプルファイルを参照してとりあえず動作するようにしておいてください。
設定ファイルを記述したらもう2行書き加えます。
filename "pxelinux.0" # /tftpbootからの相対パスでブートローダーを指定 next-server 192.168.0.1 # PXEサーバーのIPアドレス |
dhcpdを再起動して、起動時に自動的に起動するようにします、
[root@server ~]# service dhcpd restart #省略 [root@server ~]# chkconfig dhcpd on
5, 起動
それでは起動してみましょう。
予めクライアントのBIOSの設定を変更して、Network bootの優先順位を上げておきます。
通常のPOST画面の後にこのような画面に切り替わるはずです。
上の画像はIPアドレスを取得しているところですね。
IPアドレスを取得し、PXEブートローダーをTFTPで取得できると下の画像のような表示になります。
放っておくと自動的にmemtestが走ります。
以上です。
内容の間違いなどありましたら、ご指摘ください。
今回は/tftpbootの直下にmemtestを配置しましたが、他のブートイメージ(例えばLinuxのインストールディスク)を配置する場合はサブディレクトリ以下に配置してブートメニューを作成することでディスクレスで起動できます。
memtestが入った起動ディスクを用意するのが面倒だという方は、一度試してみてください!