跳转至

示例

iPXE 有许多不同的用法。iPXE 文档为各个特性提供了大量示例,你也可以随时尝试联系 iPXE 开发者和其他用户。

围绕 iPXE 构建的完整解决方案示例非常丰富;本页提供了一些你可能会觉得有用的示例链接。

完整的 iPXE 菜单示例

如果你需要一个基于文本的引导菜单,能够模拟 pxelinux.0 和 menu.c32 的大部分功能,并支持针对特定机器覆盖引导过程,你应该仔细研究 https://gist.github.com/robinsmidsrod/2234639 上的示例。其中的 bootstrap.ipxe 脚本基本上用纯 iPXE 脚本实现了下文提到的 PXE dispatcher 的全部功能。而且它不需要任何服务器端脚本支持,如 Perl、PHP 或 Python。

A light bulb

使用链式加载增强 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 实现。它还包含了身份验证功能。