同一服务器内的 PXE/TFTP 链接

同一服务器内的 PXE/TFTP 链接

我现有的网络环境提供以下内容:

  • 将 PXE 客户端发送到特定 TFTP 服务器的 DHCP 服务器
  • 带有 SYSLINUX“pxelinux.0”文件用于启动的 TFTP 服务器

SYSLINUX 安装默认超时为“从本地磁盘启动”,这允许现有客户端正确重新启动,但也提供启动到救援或配置环境的选项。

我正在测试一个新的配置环境,该环境驻留在与 DHCP 服务器所指向的服务器不同的 TFTP 服务器上。现有客户端取决于当前环境,但我想将测试客户端推荐给新的 TFTP 服务器进行配置。

理想情况下,我希望能够使用 SYSLINUX 提示符中的特定菜单选项,这将导致客户端从另一个(硬编码的,而不是 DHCP 服务器提供的)TFTP 服务器启动。

我尝试在 SYSLINUX 上安装自定义 gPXE 映像作为菜单选项。自定义映像(重新)获取了 DHCP 地址并转到硬编码的 TFTP 服务器,但它缺少一个我认为 gPXE 无法实现的部分。

新的配置系统基于 Cobbler,它依赖于通常的 PXE 序列,在该序列中,客户端会先查找以其 MAC 地址命名的文件,然后再选择不太具体且最终通用的文件。据我所知,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.comsyslinux-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 - IP in HEX - ...默认。

告诉您的 DHCP 服务器不要回答某些请求并在同一网络(非权威)中设置另一个 DHCP 来回答您的测试服务器请求(并且不回答任何其他请求)会更简单。

相关内容