PXEを用いた効率的なネットワークによるマルチPCインストール

一、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バッチデプロイの利点

  1. 大規模性:複数のサーバーを同時に設置可能
  2. 自動化:システムのインストールと各種サービスの設定
  3. リモート実現:CD-ROMやUSBなどのインストールメディア不要

2.PXEネットワーク体系の構築に必要な条件

  1. クライアントのNICがPXEプロトコルをサポートし(BOOTROMチップが内蔵)、マザーボードがネットワークブートをサポートしていること。一般的なサーバーではBIOS設定でネットワークまたはLANからブートを有効にするだけでよい。
  2. ネットワーク内にDHCPサーバーが存在し、クライアントに自動的にIPアドレスを割り当て、ブートファイルの場所を指定する必要がある。
  3. サーバーがTFTPサービス(簡易ファイル転送プロトコル)を通じてブートイメージファイルを提供する必要がある。

3.PXEサービスの構築プロセス

  1. PXEクライアントがDHCPリクエストを送信し、DHCPサーバーにIPアドレスを申請
  2. DHCPサーバーがPXEクライアントのリクエストに応答し、IPアドレスプールからIPアドレスを割り当て、TFTPサーバーのIPアドレスとPXEブートプログラムファイルpxelinux.0の場所を通知
  3. PXEクライアントがTFTPサーバーにpxelinux.0ブートプログラムファイルを取得するリクエストを送信
  4. TFTPサーバーがPXEクライアントのリクエストに応答し、共有されたpxelinux.0ファイルをPXEクライアントに転送
  5. PXEクライアントがネットワークを通じてシステムインストールメインインターフェースにブート
  6. PXEクライアントがファイル共有サーバー(ftp、http、nfsなど)にCentOSまたはWindowsシステムインストールファイルを取得するリクエストを送信
  7. ファイル共有サービスがPXEクライアントのリクエストに応答し、共有されたシステムインストールファイルをPXEクライアントに転送
  8. 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.自動インストール設定完了

タグ: PXE KickStart CentOS DHCP TFTP

6月13日 18:20 投稿