ネットワーク上のPCにPXEブートを提供するために、DHCPオプション66および67を提供するようにMountain Lion(10.8.2)OS X ServerBOOTPを構成する必要があります。 bootpd MANページをたどってみましたが、十分に具体的ではありません。ネット上の矛盾する情報も読みましたが、Mountain LionDHCPの決定的なものは何もありません。
Bootpdのマニュアルページから:
bootpdには、さらに多くのオプション(主にRFC 2132で指定されているもの)の型変換テーブルが組み込まれており、オプションがプロパティリストに表示されるタイプからバイナリのパケット形式に変換しようとします。たとえば、bootpdは、オプションのタイプがIPアドレスまたはIPアドレスのリストであることを認識している場合、IPアドレスの文字列形式からバイナリのネットワークバイトオーダー数値に変換します。
オプションのタイプが数値の場合、文字列、整数、またはブール値から、適切なサイズのネットワークバイトオーダーの数値に変換されます。
Bootpdがオプションのタイプを知っているかどうかに関係なく、データプロパティリストタイプを使用してDHCPオプションをいつでも指定できます。
<key>dhcp_option_128</key>
<data>
AAqV1Tzo
</data>
私のTFTPサーバーは172.16.152.20で、ブートファイルはpxelinux.0です。
/etc/bootpd.plistを編集し、サブネットdictに以下を追加しました。
<key>dhcp_option_66</key>
<data>
LW4gLWUgrBCYFAo=
</data>
<key>dhcp_option_67</key>
<data>
LW4gLWUgcHhlbGludXguMAo=
</data>
マニュアルページによると、データ要素はBase64でエンコードされているはずですが、何を試してもPXEクライアントを起動できません。
さまざまな方法を使用して172.16.152.20をエンコードしてみました。
上記のメソッドでpxelinux.0をエンコードすると、同様に異なるエンコードが生成されます。
データ要素をエンコードする3つの方法すべてを使用しようとしましたが、何も機能していないようです。つまり、PXEブートクライアントがTFTPサーバーに転送されません。誰か助けてもらえますか?
よろしく、ポールアダムズ。
Appleフォーラムのスレッドのおかげで、ついにこれが機能するようになりました:
https://discussions.Apple.com/thread/4561762?start=15&tstart=
OS X Mountain Lionでは、Appleは、特定のDHCPオプションに対してnullで終了する文字列を期待しています。貢献者John Lockwoodは、nullで終了するオプション文字列を含む正しいbootpd XMLを生成するユーティリティを作成しました。上記のスレッドを参照し、ここからユーティリティをダウンロードしてください。
http://jelockwood.blogspot.co.uk/2013/06/dhcp-server-on-os-x-server.html
生成されたコードをbootpd.plistに追加すると、OS XDHCPサービスのみを使用してPCをPXEブートできるようになりました。