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のインストール 」ご参照ください。

 

お疲れ様でした。

 

Joomla templates by a4joomla