Citrixの仮想環境で、Windows11の仮想マシンを作成してPXEブートで起動しようとしたら、
OS起動のタイミングでエラーが発生してしまった。
調査の結果、事象を解消することができたので内容を備忘録としてまとめていく。
PXEブートとは
PXEブートとは、ネットワークを経由してOSを起動する仕組みのこと。
起動までの流れとしては以下のようになる。
- クライアントPCの電源ON
- DHCPサーバーにIPアドレスとブートファイルを取得するためのTFTPサーバーの場所を問い合わせ
- DHCPサーバーから情報を受け取ったら、TFTPサーバーにブートファイルを要求
- ブートファイルを受け取ったらそれを使ってOS起動
今回は、4のOS起動のタイミングでエラーが発生してしまった。
UEFI環境でPXEブートに失敗した原因
UEFIを使った仮想PCでPXEブートに失敗した原因は、ブートファイルをBIOSと
同じものを使ってしまっていたことだった。
Citrixのサイトにも、BIOSとUEFIでは使用するブートファイルが異なると記載があった。
参考
UEFI起動前環境の構成 | Provisioning Services 7.15
XenDesktopは、それぞれSCVMM、vCenterを使用して管理され、Provisioning Servicesを使用して配信されているHyper-V(第2世代)仮想マシンおよびESX仮想マシンでUnified Extensible Firmware Interface(UEF)ハードウェアテクノロジをサポート...
解消方法としては、取得するブートファイルを指定する必要がある。
今回のエラーの原因として、DHCPサーバーにPXEブートを行うための
設定を入れるときにブートファイルを特に指定していなかった。
特に指定をしない場合は、BIOSのものが指定されてしまうということがわかった。
具体的な解消方法
先程も書いたが、ブートファイルを指定しない場合はBIOSのものを
使うように設定されてしまうので、UEFIのブートファイルを指定する必要がある。
設定に用いるコマンドは以下。
netsh dhcp serverscope <スコープのアドレス> set reservedoptionvalue <仮想PCのIPアドレス> 67 STRING <UEFIブートファイル>
参考
DHCP オプション番号
まとめ
UEFIを使用した仮想PCをPXEブートで起動するには、
DHCP側でブートファイルをUEFIのものにちゃんと設定しておかないと
エラーになってOSを起動できなくなる。