Linuxは、DVDメディアからのインストールの他に、さまざまな方法でインストールすることができます。
今回は、ネットワークインストール方法の1つで、PXEを利用して、ネットワークからインストールする方法をご紹介します。
いくつか用意するものがありますが、 CentOS7.2インストール(ネットワーク編)同様に、DVDドライブが付属していないノートPCなどにLinuxをインストールすることができます。
1. 前提条件
以下の準備が必要です。
- PXEに対応したNICが搭載されているクライアントPC
- DCHPサーバ
- TFTPサーバ
今回は、CentOS7.2にDHCPサーバとTFTPサーバを構築し、クライアントPCにCentOS7.2をインストールします。
2. DHCPサーバの構築
まずはDHCPサーバをインストールします。
# yum install dhcp
次に設定ファイルを編集します。
ここでは、通常のIPアドレス払い出しに加え、クライアントPCがPXE起動した際に読み込ませるブートローダーファイルや格納先サーバの指定をします。
# vi /etc/dhcp/dhcpd.conf
============================
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 10.0.2.0 netmask 255.255.255.0 {
range 10.0.2.100 10.0.2.254;
option subnet-mask 255.255.255.0;
option routers 10.0.2.1;
option domain-name-servers 192.168.24.1;
default-lease-time 600;
max-lease-time 7200;
# ブートローダーファイルを指定します。
filename "/pxelinux.0";
# ブートローダーファイルの格納サーバを指定します。
# 省略した場合は自動的にDHCPサーバが指定されます。
next-server 10.0.2.5;
}
============================
設定ファイルを保存したらDHCPサーバを起動します。
# systemctl enable dhcpd.service
# systemctl start dhcpd.service
3. TFTPサーバの構築
TFTPサーバをインストールします。
# yum install tftp-server xinetd
設定ファイルを編集してTFTPサーバを有効化します。
# cp -p /etc/xinetd.d/tftp /etc/xinetd.d/tftp_bk
# vi /etc/xinetd.d/tftp
============================
<略>
# -v を追加。/var/log/messageにログを出力するためです。
server_args = -s -v /var/lib/tftpboot
# tftpサーバの有効化。no→yes
disable = no
<略>
============================
設定ファイルを保存後、xinetdを起動します。
# systemctl enable xinetd.service
# systemctl start xinetd.service
4. ブートローダファイルの配置
ブートローダファイル(pxelinux.0)は、syslinuxパッケージに含まれていますので、syslinuxをインストールします。
# yum install syslinux
TFTPサーバ構築で指定したディレクトリに、必要なファイルをコピーします。今回は以下のファイルをコピーします。
- pxelinux.0 ブートローダファイル
- menu.c32 キャラクタベースメニューを表示するファイル
- reboot.c32 再起動を実行するファイル
- poweroff.com シャットダウンを実行するファイル
# cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cp -p /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
# cp -p /usr/share/syslinux/reboot.c32 /var/lib/tftpboot/
# cp -p /usr/share/syslinux/poweroff.com /var/lib/tftpboot/
なお、vesamenu.c32を選択することで、グラフィカルメニューの表示ができます。
5. OS起動イメージの配置
CentOS7.2のOS起動イメージを配置します。
# mkdir /var/lib/tftpboot/pxelinux.cfg
# mkdir /var/lib/tftpboot/CentOS7.2
# cd /var/lib/tftpboot/CentOS7.2
# wget http://ftp.riken.jp/Linux/centos/7.2.1511/os/x86_64/images/pxeboot/initrd.img
# wget http://ftp.riken.jp/Linux/centos/7.2.1511/os/x86_64/images/pxeboot/vmlinuz
6. メニューの作成
PXEブート後に表示するメニューを作成します。
# vi /var/lib/tftpboot/pxelinux.cfg/default
============================
DEFAULT menu.c32
PROMPT 0
TIMEOUT 300
ONTIMEOUT Local
MENU TITLE PXE Boot Menu
LABEL Local
MENU LABEL 1. Local HardDisk Drive
LOCALBOOT 0
LABEL CentOS7.2 x86_64
MENU LABEL 2. CentOS7.2 x86_64
kernel CentOS7.2/vmlinuz
append load initrd=CentOS7.2/initrd.img method=http://ftp.riken.jp/Linux/centos/7.2.1511/os/x86_64/
LABEL Reboot
MENU LABEL 4. Reboot
COM32 reboot.c32
LABEL Poweroff
MENU LABEL 5. Poweroff
COMBOOT poweroff.com
============================
- DEFAULT メニューファイルを指定
- PROMPT 0 を指定
- TIMEOUT タイムアウト時間を指定(0.1秒単位)
- ONTIMEOUT タイムアウト後に読み出すラベルを指定
- MENU TITLE メニュートップに表示するタイトル
- LABEL 各メニューの項目名
今回作成したメニューは、30秒間操作しないとローカルHDDから起動する様にしました。
7. 実際にPXEで起動してみる
クライアントPCのブート順序を、PXEを最優先にして起動します。
無事起動すると、以下の画面が表示されます。
実際に「2. CentOS7.2 x86_64」を選択すると、CentOS7.2のインストールが始まります。
これ以降は、CentOS7.2インストール(基本編) の「 2. CentOSのインストール 」ご参照ください。
お疲れ様でした。