PXEブートとは (Preboot eXecution Environment boot) 、ネットワーク経由でOSを起動する仕組み、及びその規格を差します。一言で表すのは簡単なのですが、複数の要素技術を組み合わせて実現しているので、仕組みを理解するのはちょっと複雑です。また、WOL(Wake On LAN)やkickstartとも混同しやすいので、初心者にも分かるように、そして自分の頭(お犬脳)の整理のために、やり方を解説します。
PXEブートを実現するための要素技術
通常、コンピュータは内蔵ハードディスク(最近ではSSD)にインストールされたOSから起動します。インストールする前のコンピュータなら、DVDからインストーラを起動することが多いですね。さて、PXEブートは、ネットワーク経由で起動するOSイメージを送り込んでコンピュータを起動する仕組みのことを差します。
PXEブートを実現するには、以下の構成が必要です。
・PXEに対応したNIC(Network Interface Card)
・DHCPサーバ
・TFTPサーバ
さて、この3つの要素技術があれば、コンピュータのメモリにOSイメージを送り込んで、メモリ上でシステムを稼働させることができます。HDDやSSDを持たないシンクライアントは、このようにしてシステムを起動します。
その一方で、PXEブートの利用シーンとしては、最初にメモリに仮のOSイメージを送り込んで起動した後、仮のシステムがコンピュータのストレージ(HDDやSSDのことを差す)に本番用のOSを自動インストールして再起動を行い、その後はストレージにインストールした本番用のOSからシステムを起動する、という使い方が多いです。
OSを自動インストールする仕組みのひとつに、kickstartがあります。kickstartでは、OSのインストールメディアをHTTPやFTPで提供することができます。よって、PXEブートをベースとしたOS自動インストールの構成要素のひとつにHTTPサーバを加えることがあります。また、ReaR(Relax-and-Recover)によるバックアップにおいて、OUTPUT=PXEを設定してバックアップを行ったときのリカバリーでは、バックアップ本体をストレージに復元するときにNFSを使用することがあります。この場合では、OS自動インストールの構成要素のひとつにNFSサーバが加わります。
PXEブート開始は電源ONから
PXEブートは、OSイメージを送り込んで起動するという行為なので、最初にコンピュータの電源ON(または再起動)の操作が必要になります。
高価なサーバマシンでは、OSが動くサーバ本体のCPUの他に、BMC (Baseboard Management Controller)というプロセッサを持っていることがほとんどです。BMCはサーバ本体からは独立したシステムで、サーバ本体の監視や電源操作を行うことができます。
BMCはネットワークに接続可能なので、リモートからBMC経由でサーバ本体の電源操作を行うことが多いです(IPMIというインターフェースを使う)。BMCはサーバ本体のNICとは別のNICを持ち、MacアドレスもIPアドレスもサーバ本体のNICとは別のものとなります(物理的なNICのポートを、サーバ本体のNICと共有することもできますが、その場合もMacアドレスとIPアドレスは別のものになります)。
PXEブート開始は電源ONからと書きましたが、正確には電源ONの前に、
「BIOSのブートオーダの設定で、起動順序の1番目をPXEブートに変更する」
という操作が必要になります。ブートオーダの順序変更もIPMIで行うことができます。
PXEブートするにはBMCは必要なのか?
BIOSのブートオーダを変更して、電源ONを行うまでの操作をリモートから行うには、BMCがあったほうが便利なのですが、リモートからの電源ON操作なら、WOL(Wake On LAN)という技術を使っても実現可能です。また、BIOSのブートオーダの変更を手作業で行った後、サーバ本体の電源ボタンを押してONする操作を行っても構いません。起動順序の1番目がPXEブートになっていて、なんらかの方法で電源ONができれば、PXEブートを開始することができます。
すなわち、BMC及びIPMIは、PXEブートによるOSインストールの一連の作業を、リモートからスマートに操作するのには有用ですが、必須ではないということです。
私が持っている安いミニPC MINISFORUM GK41 も GMKtec NucBox3 もBMCは付いていません。WOLには対応していると書いてありましたが、WOLのクライアントソフトから操作ができませんでした(別のノートPCは操作できたので、なんでだろう)。だから、ミニPCの電源ボタンを手で押して、PXEブートを試しています。
PXEブートの処理フロー
分かりやすく説明するために、PXEブートの処理フローを以下に図示します。正確に言うと、PXEブートを含むOSインストールの自動処理のフローを図示しています。

この図においては、OSの自動インストールに必要となるサービス(TFTP,HTTP)やBMCをリモートから操作するためのIPMIクライアント(ipmitool)が、管理サーバにインストールされています。それぞれのサービスやツールが別のサーバにインストールされていても構いません。
尚、この図の管理ノードのように、PXEブートに必要になるサービスを統合したサーバを分かりやすく「PXEサーバ」のような通称で呼ぶこともありますが、正確にはPXEサービスというものは存在せず、複数のサービスの集合で構成されていることをご理解下さい。
尚、この図において管理サーバはあたかも物理サーバのように図示していますが、私のおうちでは仮想マシンとして作成して、ネットワークにブリッジで接続しています。仮想マシンを作成して外部のネットワークにブリッジで接続する方法は、犬でも分かるKVM シリーズ をご覧下さい。
さて、この図に示す通りPXEブートはOSの自動インストール処理の一部です。前述の通り、ブートオーダの変更と電源ONが手作業の操作でも良いですし、kickstartによるシステムインストールがReaRのリカバリ処理であっても構いません。
ブートローダとカーネルは、OSディストリビューションの中に含まれています。RAMイメージはブートローダが起動するシステムの本体となりますので、必要な機能が組みこまれた状態で作成されています。OSディストリビューションには、kickstartでインストール処理を行うためのRAMイメージが含まれていますし、ReaRのバックアップでOUTPUT=PXEを指定した場合は、ReaRのリカバリに必要な機能を組みこんだRAMイメージを作成します。
PXEブートにおける各処理の挙動
前述のフローの図を解説します。
- ①②では、BMCに対してIPMIに対応したクライアント(ipmitool)から、ブートオーダの変更(PXE対応のNICを起動順序の1番目に設定)と電源ON操作を行います。
- BMCはBIOSに対してブートオーダの変更操作を行った後、サーバ本体の電源をONします。
最初の状態でサーバ本体が既にONになっていた場合は、サーバの電源をOFF(OSからshutdown -hを実行する)してから電源をONするか、またはOSから再起動(shutdown -rを実行)して下さい。 - PXE対応のNICは、接続されたネットワークからDHCPサーバを探し出し、DHCPサーバはこのNICのMacアドレスに対してIPアドレスを割り当てます(③④)。また、PXE対応のNICはブートローダのパスを問い合わせ、DHCPサーバはdhcpd.confに定義された、TFTPサーバのIPアドレスとブートローダのパスを回答します(⑤⑥)。
- PXEブートの対象となるサーバはブートローダをダウンロードして起動し(⑦⑧)、その後、ブートローダは、grub.cfgファイルに定義されたOSのカーネルとRAMイメージを、TFTPサーバからダウンロードして起動します(⑨~⑫)。
- grub.cfgファイルには、インストーラ(またはレスキューシステム)が使用するkickstartファイルとインストールで使用するレポジトリの場所を定義することができます。起動されたインストーラは、kickstartファイルの定義に従って(本番用の)OSのインストール処理を行い(⑫⑭)、インストールで使用するPKG(バッケージ)はレポジトリからダウンロードして取得します(⑮⑯)。インストーラはサーバのストレージにOSをインストールします。
- kickstartファイルの最後に再起動の命令が書いてあれば、インストール後にサーバを再起動します。インストーラは、BIOSのブートオーダにおいて起動順序をストレージに変更しているので、再起動後は自動的にインストールしたOSでシステムが起動します(⑰)。

理解できたかな…?
PXEブート及びOSの自動インストール環境の構築を初めて行う場合、最初から全てがうまくいく訳ではありません。順番を追って、ログをチェックしながらそれぞれの構成要素が正しく動作しているのかを確認して、構築を進めていくのが良いでしょう。
広告主へのリンク
![]()
このブログにおける関連リンク
・犬でも分かるPXEブート(2):起点は電源ON
・犬でも分かるPXEブート(3):DHCPサーバの構築
・犬でも分かるPXEブート(4):TFTPサーバの構築
・犬でも分かるPXEブート(5):HTTPサーバとリポジトリーの構築
・犬でも分かるPXEブート(6):kickstartによるOS自動インストール
・犬でも分かるPXEブート(7):実際にやってみた
・犬でも分かるKVM シリーズ



コメント