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ブートで起動すると、キックスタート設定に基づいて完全に自動化されたインストールが実行されます。