示例¶
iPXE 有许多不同的用法。iPXE 文档为各个特性提供了大量示例,你也可以随时尝试联系 iPXE 开发者和其他用户。
围绕 iPXE 构建的完整解决方案示例非常丰富;本页提供了一些你可能会觉得有用的示例链接。
完整的 iPXE 菜单示例¶
如果你需要一个基于文本的引导菜单,能够模拟 pxelinux.0 和 menu.c32 的大部分功能,并支持针对特定机器覆盖引导过程,你应该仔细研究 https://gist.github.com/robinsmidsrod/2234639 上的示例。其中的 bootstrap.ipxe 脚本基本上用纯 iPXE 脚本实现了下文提到的 PXE dispatcher 的全部功能。而且它不需要任何服务器端脚本支持,如 Perl、PHP 或 Python。

使用链式加载增强 iPXE 的功能集¶
如果你的 ROM 中烧录的是旧版本的 iPXE 或 gPXE,或者你用的是非 iPXE 的 PXE ROM,那么在运行时把它"升级"到具备你所需全部功能的版本往往非常有用。https://gist.github.com/robinsmidsrod/4008017 上的 ISC DHCPD 配置示例展示了如何做到这一点,并确保加载的 iPXE 版本具备你需要的全部功能。它还展示了如何为传统 BIOS 和 UEFI 环境加载不同的 iPXE 二进制文件。
嵌入菜单以选择从哪块网卡引导¶
启动时默认的 Ctrl-B 提示并不总是选择引导网卡的最友好方式。https://gist.github.com/robinsmidsrod/3871687 上的示例展示了如何嵌入一个脚本,弹出菜单让你无需输入任何内容即可选择从哪块网卡引导,同时在超时后提供一个合理的默认选项。
PXE dispatcher¶
Robin Smidsrød 的 PXE dispatcher 为你可能想用 iPXE 菜单做的几乎任何事情提供了参考实现,还给出了加载各种各样操作系统的示例。这份代码已经被上面提到的纯 iPXE 脚本方案所取代。
构建 ipxelinux.0¶
把 undionly.kpxe 和 pxelinux.0 构建成一个二进制文件似乎是很常见的需求。它以前叫做 gpxelinux.0。查看 https://coderwall.com/p/0sq9gg,你会找到如何使用 iPXE 嵌入功能从零构建这个二进制文件的详细说明。
使用带校验和的二进制文件从公共镜像引导¶
http://boot.salstar.sk/ 上的引导系统展示了如何使用 imgtrust 命令让 iPXE 只引导校验和匹配的程序。它还直接从 SourceForge 等公共镜像引导。另外还有一个很精妙的示例,用 iPXE 脚本和 pciscan 命令复刻了 lspci 的基本功能。
带身份验证的菜单示例¶
https://github.com/skunkie/ipxe-phpmenu 仓库展示了一个与上面基于文本的菜单类似的示例,但用 PHP 实现。它还包含了身份验证功能。