一、PXEの原理と概念
PXEはIntel社が開発したネットワークブート技術で、クライアント/サーバー方式で動作します。この技術により、クライアントはリモートサーバーからブートイメージをダウンロードし、インストールファイルまたはオペレーティングシステムをロードできます。
PXEは厳密にはインストール方法ではなく、ブート方法です。PXEインストールを行うには、インストール対象のコンピュータにPXEをサポートするNIC(ネットワークインターフェースカード)が必要です。PXEクライアントはNICのROM内にあり、コンピュータがブートする際にBIOSによってメモリに読み込まれます。PXEクライアントは遠隔サーバーからファイルをネットワーク経由でダウンロードし、ローカルで実行します。PXEプロトコルの実行にはDHCPサーバーとTFTPサーバーの設定が必要です。DHCPサーバーはPXEクライアントにIPアドレスを割り当て、TFTPサーバーのIPアドレスとブートファイルの場所を指定します。また、PXEクライアントのROMにはTFTPクライアントが組み込まれており、TFTPプロトコル(ポート69)を通じてTFTPサーバーから必要なファイルをダウンロードします。
1.PXEバッチデプロイの利点
- 大規模性:複数のサーバーを同時に設置可能
- 自動化:システムのインストールと各種サービスの設定
- リモート実現:CD-ROMやUSBなどのインストールメディア不要
2.PXEネットワーク体系の構築に必要な条件
- クライアントのNICがPXEプロトコルをサポートし(BOOTROMチップが内蔵)、マザーボードがネットワークブートをサポートしていること。一般的なサーバーではBIOS設定でネットワークまたはLANからブートを有効にするだけでよい。
- ネットワーク内にDHCPサーバーが存在し、クライアントに自動的にIPアドレスを割り当て、ブートファイルの場所を指定する必要がある。
- サーバーがTFTPサービス(簡易ファイル転送プロトコル)を通じてブートイメージファイルを提供する必要がある。
3.PXEサービスの構築プロセス
- PXEクライアントがDHCPリクエストを送信し、DHCPサーバーにIPアドレスを申請
- DHCPサーバーがPXEクライアントのリクエストに応答し、IPアドレスプールからIPアドレスを割り当て、TFTPサーバーのIPアドレスとPXEブートプログラムファイルpxelinux.0の場所を通知
- PXEクライアントがTFTPサーバーにpxelinux.0ブートプログラムファイルを取得するリクエストを送信
- TFTPサーバーがPXEクライアントのリクエストに応答し、共有されたpxelinux.0ファイルをPXEクライアントに転送
- PXEクライアントがネットワークを通じてシステムインストールメインインターフェースにブート
- PXEクライアントがファイル共有サーバー(ftp、http、nfsなど)にCentOSまたはWindowsシステムインストールファイルを取得するリクエストを送信
- ファイル共有サービスがPXEクライアントのリクエストに応答し、共有されたシステムインストールファイルをPXEクライアントに転送
- PXEクライアントがインストールプロンプトガイドインターフェースに移動し、ユーザーが手動でシステムインストール操作を行う必要がある
二、KickStart概要
KickStartは無人操作インストール方法です。KickStartの仕組みは、典型的なインストールプロセスで手動で入力する必要のあるさまざまなパラメータを記録し、ks.cfgというファイルを生成することです。その後のインストールプロセス(生成したKickStartインストールファイルのマシンに限らず)において、パラメータ入力が必要な場面が出てきた場合、インストールプログラムはまずKickStartで生成されたファイルを参照します。適切なパラメータが見つかった場合はそれを使うし、見つからなかった場合はインストーラーが手動で入力する必要があります。このように、KickStartファイルがインストールプロセスで必要となるすべてのパラメータをカバーしている場合、インストーラーはただインストールプログラムにks.cfgファイルの取得先を教えてあげれば、他のことは何もしなくて済みます。インストールが完了すると、インストールプログラムはks.cfgで設定された再起動オプションに従ってシステムを再起動し、インストールを終了します。
三、PXEリモートインストールサーバーの構築
環境準備: PXEサーバーとして1台、裸金属クライアントとして1台、同一のネットワークカードに接続し、裸金属クライアントのvmnet1ネットワークカードでDHCP設定を無効にする SELinuxとファイアウォールを無効化する
1.新しいネットワークカードの追加
2.vmware1のネットワークセグメントを確認し、ローカルDHCPを無効化し、新しいネットワークカードの名前がens36であることを確認
3.ネットワークカードをコピーし、編集し、ネットワークカードを再起動
4.DHCPサービスのインストールと起動
yum -y install dhcp #DHCPソフトウェアパッケージのインストール
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#DHCP設定テンプレートをDHCP設定ファイルにコピー
vim /etc/dhcp/dhcpd.conf #DHCPサービスの設定ファイルを編集
ddns-update-style none; #DNS動的更新を無効化
subnet 192.168.200.0 netmask 255.255.255.0 { #割り当てるネットワークセグメントを宣言
range 192.168.200.40 192.168.200.80; #アドレスプールを設定
option routers 192.168.200.10; #デフォルトゲートウェイをTFTPサーバーのIPアドレスに設定
next-server 192.168.200.10; #TFTPサーバーのアドレスを指定
filename "pxelinux-ja.0"; #ダウンロードするPXEブートプログラムのファイルを指定
}
systemctl start dhcpd #DHCPサービスを起動
systemctl enable dhcpd #DHCPサービスを起動時に自動実行
5.TFTPサービスのインストールと起動(PXEクライアントにブートプログラムを転送)
yum -y install tftp-server xinetd #TFTPサービスをインストールおよび起動
vim /etc/xinetd.d/tftp #TFTPサービス設定ファイルを編集
protocol = udp #TFTPはデフォルトでUDPプロトコルを使用
wait = yes #noはクライアントが複数同時に接続可能、yesはクライアントが1台ずつ接続
server_args = -s /var/tftpboot #TFTPルートディレクトリ(ブートファイルの保存パス)を指定
disable = no #noはTFTPサービスを有効化
systemctl start tftp #FTPサービスを起動
systemctl enable tftp #FTPサービスを起動時に自動実行
systemctl start xinetd #xinetdサービスを起動
systemctl enable xinetd #xinetdサービスを起動時に自動実行
mount /dev/sr0 /mnt
cd /mnt/images/pxeboot
cp vmlinuz /var/tftpboot/ #LinuxシステムのカーネルファイルをTFTPルートディレクトリにコピー
cp initrd.img /var/tftpboot/ #Linuxブートローダーモジュールの初期化イメージファイルをTFTPルートディレクトリにコピー
LinuxのPXEネットワークインストールに使用されるカーネル、ドライバーファイルはCentOS 7システムのCD-ROMから取得できます。これらはvmlinuzとinitrd.imgというファイルで、CD-ROMのimages/pxebootディレクトリに配置されています。これらのファイルをTFTPサービスのルートディレクトリにコピーします。
5.PXEブートプログラムの準備
yum provides */pxelinux.0 #pxelinux.0を提供するパッケージを検索
yum -y install syslinux
rpm -ql syslinux | grep pxelinux #PXEブートプログラムの位置を確認
cp /usr/share/syslinux/pxelinux.0 /var/tftpboot/ #システムブートファイルをTFTPのルートディレクトリにコピー
6.起動メニューファイルの設定 起動メニューはクライアントのブートプロセスをガイドします。カーネルの呼び出し方法やドライバの読み込み方法を含みます。デフォルトの起動メニューファイルはdefaultで、TFTPルートディレクトリのpxelinux.cfgサブディレクトリに配置する必要があります。典型的な起動メニュー設定は以下の操作を参考に自動または手動で作成できます。
mkdir /var/tftpboot/pxelinux.cfg
vim /var/tftpboot/pxelinux.cfg/default
default auto #デフォルトのエントリ名を指定
prompt 1 #起動インターフェースがユーザーの選択を待つかどうかを設定、「1」は待つ、「0」は自動
label auto #グラフィックインストール(デフォルト)の起動エントリ、labelは起動項目を定義
kernel vmlinuz #kernelとappendは起動パラメータを定義
append initrd=initrd.img method=ftp://192.168.200.10/centos7
label linux text #テキストインストール起動エントリ
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.200.10/centos7
label linux rescue #救援モード起動エントリ
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.200.10/centos7
7.VSFTPDサービスのインストール(CentOS7インストールソースをクライアントに転送)
yum -y install vsftpd #vsftpdサービスをインストール
mkdir /var/ftp/centos7 #ftpルートディレクトリにcentos7ディレクトリを作成
cp -rf /mnt/* /var/ftp/centos7/ #イメージファイルをcentos7ディレクトリに強制コピー、バックグラウンドで実行可能
systemctl start vsftpd #vsftpdサービスを起動
systemctl enable vsftpd #vsftpdサービスを起動時に自動実行
三、Kickstart無人操作インストールの実現(デスクトップ環境を使用)
1.インストール応答ファイルの準備
インストール後、Kickstartソフトウェアが表示されます。
2.設定を開始(パスワードは必ず設定)
3.ローカルFTPサーバーをYUMソースに設定
4.ファイルは/var/ftpに保存し、ファイル名は変更不可
5.設定ファイルは必要に応じて編集可能
6.起動メニューファイルdefaultを編集し、ks起動パラメータを追加
vim /var/tftpboot/pxelinux.cfg/default
#クライアントが常にPXE方式でブートするたびに、ks.cfg応答設定ファイルを自動ダウンロードし、その中の設定に従ってCentOS 7システムをインストールし、手動操作なしで完了します。
7.自動インストール設定完了