将 PXELINUX 转换为 gPXE

将 PXELINUX 转换为 gPXE

我有一个当前正在运行的 PXELINUX 设置,其中包含适用于不同操作系统版本的菜单。最近我尝试向其中添加 VMware 安装程序。它看起来很棒,直到我无法加载所需的文件。VMware 本身表示使用 TFTP 下载所有文件不是最佳选择,尤其是在您的网络负载很高的情况下,他们建议为此使用 HTTP/gPXE。

因此,我考虑实施 gPXE。但到目前为止,我尝试了几次都没有成功,目前我还不确定问题出在哪里。

首先,我更改了 DHCP 配置中的文件名,使其指向 gpxelinux.0,而不是 pxelinux.0。系统正在启动,显示 gPXE,但没有进一步处理。它正在获取 DHCP,然后显示

No filename or root path specified

我还尝试从 PXELINUX 配置链式加载 gPXE,但出现了同样的错误。

我阅读了一些有关 gPXE 的文档,它们都在 DHCP 配置中使用 HTTP 源作为文件名。我接下来尝试了这种方法,但它已经显示 TFTP 错误

PXE-T01: File not found PXE-E3B: TFTP Error - File Not found

此时我不确定还能尝试什么。我已经将整个 TFTP 复制到 HTTP 服务器,尝试使用 gPXE 脚本,该脚本将使用 DHCP 选项 209/210 重写源。但它们都失败了,因为我无法使用 HTTP 在 DHCP 配置中加载它。

谁能给我一些提示,告诉我在哪里寻找错误,或者如何将我当前的 PXELINUX 转换为 gPXE。

任何帮助都非常感谢。

更新:

我试了试,最后终于成功了。DHCP 配置有错误。我现在使用的配置如下:

class "pxeclients" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; if exists user-class and option user-class = "gPXE" { filename "http://10.140.160.203/boot.gpxe"; } else { next-server 10.140.160.203; filename "/gpxelinux.0"; } }

boot.gpxe 正在链式加载我的 pxelinux 配置

#!gpxe imgfree chain http://10.140.160.203/vesamenu.c32 http://10.140.160.203/pxelinux.cfg/default

这是一个好方法吗?或者还有其他需要注意的事情吗?

答案1

您不需要迁移到 gPXE,因为lpxelinux.0(Syslinux 6.03)支持http传输。

另外,如果您正在安装 VMware VMvisor(即 VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso),并且正确设置了环境,则只需通过常规 TFTP 即可完成安装。例如,如果您尝试使用 iso 安装它,并且记忆磁盘你肯定会失败。相反,你可以使用引导方法;来自塞瓦的地点:

kernel   = /NWA_PXE/$HEAD_DIR$/mboot.c32
append   = -c /NWA_PXE/$HEAD_DIR$/BOOT.CFG

相关内容