PXEによる大規模ネットワークインストール構築ガイド

PXEネットワークブート技術の基礎

1. PXE(Preboot eXecution Environment)の概要

PXE(Preboot eXecution Environment)はIntel社が開発したネットワークブート技術で、オペレーティングシステムの起動前に実行されるクライアント/サーバーモードで動作します。これにより、クライアントマシンはネットワーク経由でリモートサーバーからブートイメージをダウンロードし、インストールファイルまたは完全なオペレーティングシステムをロードできます。

2. PXE一括展開のメリット

  • スケーラビリティ:複数のサーバーを同時にセットアップ可能
  • 自動化:システムインストールと各種サービスの設定を自動化
  • リモート実装:光学ドライブやUSBメディアを不要に

3. PXEネットワークシステムの前提条件

クライアント側:

  • ネットワークカードがPXEプロトコルをサポート(BOOTROMチップ搭載)
  • マザーボードがネットワークブートをサポート(ほとんどのサーバーで対応、BIOS設定でNetwork/LAN起動を有効化)

サーバー側:

  • DHCPサーバー:クライアントにIPアドレスを自動割り当て、ブートファイルの場所を指定
  • TFTPサービス:システムカーネルとブートイメージファイルの提供

PXEリモートインストールサーバーの構築

1. TFTPサービスのインストールと有効化

[root@server yum.repos.d]# yum install -y xinetd tftp-server
読み込んだプラグイン:fastestmirror, langpacks
依存関係を解決しています
--> トランザクションを確認しています
---> パッケージ tftp-server.x86_64.0:5.2-22.el7 をインストール
---> パッケージ xinetd.x86_64.2:2.3.15-14.el7 をインストール
--> 依存関係の解決を完了しました
.....................................
インストール中: 2:xinetd-2.3.15-14.el7.x86_64
インストール中: tftp-server-5.2-22.el7.x86_64
検証中: tftp-server-5.2-22.el7.x86_64
検証中: 2:xinetd-2.3.15-14.el7.x86_64

インストール:
tftp-server.x86_64 0:5.2-22.el7
xinetd.x86_64 2:2.3.15-14.el7

完了しました!

2. TFTP設定ファイルの変更

[root@server ~]# cd /etc/xinetd.d/
[root@server xinetd.d]# vim tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

設定後、サービスを自動起動に設定:

[root@server xinetd.d]# systemctl enable --now xinetd
[root@server xinetd.d]# systemctl enable --now tftp

3. DHCPサービスのインストール

[root@server xinetd.d]# yum install -y dhcp
読み込んだプラグイン:fastestmirror, langpacks
依存関係を解決しています
--> トランザクションを確認しています
---> パッケージ dhcp.x86_64 12:4.2.5-83.el7.centos.1 をインストール
--> 依存関係の解決を完了しました
.....................................
インストール中: 12:dhcp-4.2.5-83.el7.centos.1.x86_64
検証中: 12:dhcp-4.2.5-83.el7.centos.1.x86_64

インストール:
dhcp.x86_64 12:4.2.5-83.el7.centos.1

完了しました!

4. DHCP設定ファイルの構成

[root@server dhcp]# vim dhcpd.conf
ddns-update-style none;

next-server 192.168.10.10;
filename "pxelinux.0";

default-lease-time 600;
max-lease-time 7200;

log-facility local7;

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.100 192.168.10.200;
  option routers 192.168.10.10;
}

サービスを有効化:

[root@server dhcp]# systemctl enable --now dhcpd

5. PXEブートプログラムとLinuxカーネルの準備

[root@server ~]# yum install -y syslinux
[root@server ~]# cd /usr/share/syslinux/
[root@server syslinux]# cp pxelinux.0 /var/lib/tftpboot/

[root@server ~]# mount /dev/sr0 /mnt/
[root@server ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@server ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

6. FTPサービスの設定とCentOSインストールソースの準備

[root@server ~]# yum install -y vsftpd
[root@server ~]# systemctl enable --now vsftpd
[root@server ~]# mkdir /var/ftp/centos7
[root@server ~]# mount /dev/sr0 /var/ftp/centos7/

7. ブートメニューファイルの設定

[root@server ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@server ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

default auto
prompt 1

label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.10/centos7

label text
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.10/centos7

label rescue
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.10/centos7

8. PXEネットワークインストールの検証

すべてのサービス(tftp-server、xinetd、dhcpd、vsftpd)を起動後、新しい仮想マシンを作成してテストします。仮想マシンのメモリは最低2GB必要です。光学ドライブがないため、自動的にネットワークブートが開始されます。

キックスタートによる完全自動化インストール

1. system-config-kickstartツールのインストール

[root@server ~]# yum install -y system-config-kickstart

2. キックスタート設定ファイルの作成

[root@server ~]# vim /root/ks.cfg

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
cdrom

# Use graphical install
graphical

# Run the Setup Agent on first boot
firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'

# System language
lang ja_JP

# Network information
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate

# Root password
rootpw --plaintext password

# System timezone
timezone Asia/Tokyo --isUtc

user --name=operator --password=password --plaintext --gecos="Operator"

%packages
@base
@core
%end

3. 設定ファイルの配置

[root@server ~]# cp ks.cfg /var/ftp/

4. ブートメニューの更新

[root@server ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

default auto
prompt 0

label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.10/centos7 ks=ftp://192.168.10.10/ks.cfg

5. 自動化インストールのテスト

新しい仮想マシンを作成し、PXEブートで起動すると、キックスタート設定に基づいて完全に自動化されたインストールが実行されます。

タグ: PXE DHCP TFTP キックスタート centos7

7月16日 20:53 投稿