このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。

4.5.4 iPXEクライアントをサポートするためのDHCPの構成

iPXEは、次のような多くの点でPXEの機能を拡張しています。

  • iPXEクライアントは、HTTP、iSCSI、AoEおよびFCoEを使用してブートできます。

  • スクリプトを使用してブート・プロセスを制御できます。

  • DNSルックアップが使用可能です。

  • ワイド・エリア・ネットワークやインターネットにわたるブートが可能です。

gpxelinux.0ブート・ローダーは、いくつかのiPXE機能(DNSルックアップやHTTPファイル転送など)を提供するもので、syslinuxパッケージ内にあります。 iPXEコマンドやスクリプトはサポートしていません。

レガシー・モードではgpxelinux.0をBIOSベースのPXEクライアントおよびUEFIベースのクライアントと組み合せて使用できますが、UEFIモードではできません。

iPXEクライアントをサポートするようにDHCPサービスを構成するには、次の手順を実行します。

  1. DHCPサーバー構成テンプレート・ファイル/etc/cobbler/dhcp.templateを編集します:

    1. 次の行を追加して、DHCPに対してiPXEオプションを定義します。

      option space ipxe;
      option ipxe-encap-opts code 175 = encapsulate ipxe;
      option ipxe.priority code 1 = signed integer 8;
      option ipxe.keep-san code 8 = unsigned integer 8;
      option ipxe.skip-san-boot code 9 = unsigned integer 8;
      option ipxe.syslogs code 85 = string;
      option ipxe.cert code 91 = string;
      option ipxe.privkey code 92 = string;
      option ipxe.crosscert code 93 = string;
      option ipxe.no-pxedhcp code 176 = unsigned integer 8;
      option ipxe.bus-id code 177 = string;
      option ipxe.bios-drive code 189 = unsigned integer 8;
      option ipxe.username code 190 = string;
      option ipxe.password code 191 = string;
      option ipxe.reverse-username code 192 = string;
      option ipxe.reverse-password code 193 = string;
      option ipxe.version code 235 = string;
      option iscsi-initiator-iqn code 203 = string;
      option ipxe.pxeext code 16 = unsigned integer 8;
      option ipxe.iscsi code 17 = unsigned integer 8;
      option ipxe.aoe code 18 = unsigned integer 8;
      option ipxe.http code 19 = unsigned integer 8;
      option ipxe.https code 20 = unsigned integer 8;
      option ipxe.tftp code 21 = unsigned integer 8;
      option ipxe.ftp code 22 = unsigned integer 8;
      option ipxe.dns code 23 = unsigned integer 8;
      option ipxe.bzimage code 24 = unsigned integer 8;
      option ipxe.multiboot code 25 = unsigned integer 8;
      option ipxe.slam code 26 = unsigned integer 8;
      option ipxe.srp code 27 = unsigned integer 8;
      option ipxe.nbi code 32 = unsigned integer 8;
      option ipxe.pxe code 33 = unsigned integer 8;
      option ipxe.elf code 34 = unsigned integer 8;
      option ipxe.comboot code 35 = unsigned integer 8;
      option ipxe.efi code 36 = unsigned integer 8;
      option ipxe.fcoe code 37 = unsigned integer 8;
      option ipxe.vlan code 38 = unsigned integer 8;
      option ipxe.menu code 39 = unsigned integer 8;
      option ipxe.sdi code 40 = unsigned integer 8;
      option ipxe.nfs code 41 = unsigned integer 8;
    2. プロキシDHCPサーバーを使用しない場合は、次の行を指定して、DHCPサーバーとのネゴシエーションを高速化します。

      option ipxe.no-pxedhcp 1;
    3. 次の行を追加して、user-classオプションを定義します。

      option user-class code 77 = string;
    4. 次の例のように、DHCPサーバーを構成して、iPXEクライアントがドメイン名をIPアドレスに解決するために使用できるネーム・サーバーのIPアドレスを指定します。

      option domain-name-servers 192.168.1.1, 192.168.1.4, 192.168.1.8;
    5. 次の例のように、DHCPを構成して、iPXE以外のクライアントにはgpxelinux.0ブート・ローダー、iPXEクライアントにはブート・スクリプトのURIを指定します。

      if exists user-class and option user-class = "iPXE" {
            filename "http://web.mydom.com/pxeboot.php";
        } else {
            filename "gpxelinux.0";
        }

      この例では、純粋なiPXEクライアントがHTTP提供のブート・スクリプトpxeboot.phpを実行します。

      iPXEクライアント用のブート・スクリプトの例を次に示します。

      #!ipxe
      
      dhcp
      kernel http://swksvr.mydom.com/distro-trees/ol6u6-x86_64-server/images/pxeboot/vmlinuz
      initrd http://swksvr.mydom.com/distro-trees/ol6u6-x86_64-server/images/pxeboot/initrd.img
      boot vmlinuz initrd=initrd.img ksdevice=bootif lang=en_US kssendmac text \
      ks=http://192.168.1.3/cblr/svc/op/ks/profile/ol6-x86_64-minimal:1:SpacewalkDefaultOrganization

      dhcpは、クライアントのネットワーク・インタフェースを構成します。

      kernelは、インストール・カーネルをダウンロードします。

      initrdは、初期RAMディスク・イメージ・ファイルをダウンロードします。

      bootは、ダウンロード済のインストール・カーネルをブートします。 ブート行パラメータ(初期RAMディスク・ファイルの名前やKickstartファイルの場所など)が、追加引数として指定されています。

      \行継続文字を使用しないでください。 例の中のこの文字は、印刷用に長い行を改行するために使用されています。 bootコマンドおよびそのすべての引数は、同じ行に指定する必要があります。

      詳細は、http://ipxe.org/scriptingおよびhttp://ipxe.org/cmdを参照してください。

      iPXE以外のクライアントは、gpelinux.0を使用してブートします。 4.5.3項「ブート・ローダー構成ファイルについて」で説明しているように、gpxelinux.0の構成ファイルの名前はpxelinux.0と同様の方法で付けられます。 pxelinux.0の場合とは異なり、HTTPを使用してインストール・カーネルと初期RAMディスク・イメージのファイルにアクセスできます。

      gpxelinux.0の構成ファイルの例を次に示します。

      prompt 0
      default ol6u6
      timeout 0
      
      label ol6u6
      kernel http://swksvr.mydom.com/distro-trees/ol6u6-x86_64-server/images/pxeboot/vmlinuz
      append initrd=http://swksvr.mydom.com/distro-trees/ol6u6-x86_64-server/images/pxeboot/initrd.img \
      ksdevice=bootif lang=en_US kssendmac text \
      ks=http://192.168.1.3/cblr/svc/op/ks/profile/ol6-x86_64-minimal:1:SpacewalkDefaultOrganization
      ipappend 2

      \行継続文字を使用しないでください。 例の中のこの文字は、印刷用に長い行を改行するために使用されています。 appendキーワードおよびそのすべての引数は、同じ行に指定する必要があります。

  2. cobbler syncコマンドを実行します:

    # cobbler sync
    task started: YYYY-MM-DD_hhmmss_sync
    task started (id=Sync, time=date)
    ...
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    ...
    *** TASK COMPLETE ***

    Cobblerサービスは、/etc/dhcp/dhcpd.confファイルを再生成し、dhcpdサービスをリロードします。

    /etc/cobbler/dhcp.templateをさらに変更する場合は、cobbler syncコマンドを実行します。 ブート・ローダー構成ファイルの内容を変更する場合は、このコマンドを実行する必要はありません。