既存のネットワーク環境は次のようになります。
- PXEクライアントを特定のTFTPサーバーに送信するDHCPサーバー
- 起動用のSYSLINUX「pxelinux.0」ファイルを備えたTFTPサーバー
SYSLINUX インストールでは、タイムアウト時にデフォルトで「ローカル ディスクから起動」されるため、既存のクライアントは正常に再起動できるだけでなく、レスキュー環境またはプロビジョニング環境で起動するオプションも提供されます。
DHCP サーバーが指定する TFTP サーバーとは異なる TFTP サーバー上にある新しいプロビジョニング環境をテストしています。既存のクライアントは現在の環境に依存していますが、プロビジョニングのためにテスト クライアントを新しい TFTP サーバーに参照させたいと思います。
理想的には、SYSLINUX プロンプトから特定のメニュー オプションを使用して、クライアントを別の (DHCP サーバーが提供するものではなく、ハードコードされた) TFTP サーバーから起動できるようにしたいと考えています。
SYSLINUX のメニュー オプションとしてカスタム gPXE イメージをインストールしようとしました。カスタム イメージは DHCP アドレスを (再) 取得し、ハードコードされた TFTP サーバーにアクセスしましたが、gPXE では実現できないと思われる部分が欠けています。
新しいプロビジョニング システムは Cobbler に基づいており、クライアントが MAC アドレスで名前が付けられたファイルを検索し、その後、あまり特定されていない、最終的には汎用的なファイルを選択するという通常の PXE シーケンスに依存しています。私の知る限り、gPXE はこの MAC アドレス ベースのブート シーケンスを実行できないようです。
誰か、これを実行する別の方法を教えてもらえませんか? この問題で数日間頭を悩ませています。よろしくお願いします!
答え1
同一サーバー内でのPXE/TFTPチェーン
他の PXE ブートローダーをカーネルとして配置します。
これは、Linux PXE チェーン ローダーから BSD PXE ブート ローダーをチェーン ロードするために使用した例です。
LABEL openbsd
MENU LABEL ^OpenBSD 3.9
KERNEL openbsd_3.9/pxeboot.0
別のサーバーへのPXE/TFTPチェーン
pxechain.com
他の PXE サーバーをチェーンロードするために使用されます。
pxechain.com
syslinux-common
Debian/Ubuntuのパッケージ内で利用可能またはsyslinux プロジェクト アーカイブ異なるファイル名でpxechn.c32
。
例:
LABEL pxeserver2
menu label Switch to 2nd PXE server...
kernel pxechain.com
append 192.168.10.254::pxelinux.0
例2:(感謝鮫) pxelinux の設定ファイル名やパスが両方の pxe サーバーで異なる場合は、オプション -p および -c を使用して明示的に定義する必要があります。そうしないと、機能しません (現在の起動に使用された dhcp によって定義された値を使用しようとします)。
DC-ISO2 サーバー構成:
LABEL DC-ISO1
MENU LABEL DC-ISO1 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.1::pxelinux.0 -c default -p /
TEXT HELP
Boot the legacy dc-iso1 menu in bios mode.
ENDTEXT
古い DC-ISO1 サーバー構成の場合:
LABEL DC-ISO2
MENU LABEL DC-ISO2 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.2::/configs/pxelinux.0 -p /configs/ -c bios.cfg
TEXT HELP
Boot the new dc-iso2 menu in bios mode.
ENDTEXT
技術的には、DC-ISO1 の DHCP サーバーを無効にすることもできます (TFTP は無効にできません)。また、両方のサーバーのメニューを切り替えることができ、常に最初に DC-ISO2 を起動するようになります。
答え2
Ubuntu 10.4 LTS から pxelinux.0 を取得します。これは、「通常の」反復処理 (MAC - 16 進数の IP - ... デフォルト) を実行します。
DHCP サーバーに特定の要求に応答しないように指示し、同じネットワーク内にテスト サーバーの要求に応答する (他の要求には応答しない) 別の DHCP (権限のない) を設定する方が簡単です。