下载¶
预编译二进制文件¶
你可以从 https://boot.ipxe.org/ipxe.iso 下载预编译的 iPXE ISO 镜像。这个镜像适合用来初次体验 iPXE。要充分发挥 iPXE 的功能,你需要从源代码构建合适的镜像。
源代码¶
iPXE 源代码维护在 https://github.com/ipxe/ipxe 的 git 仓库中。你可以用以下命令检出一份代码:
git clone https://github.com/ipxe/ipxe.git
然后构建:
cd ipxe/src
make
构建 iPXE 至少需要安装以下软件包:
- gcc
- binutils
- make
- perl
- liblzma 或 xz 头文件
- mtools
- mkisofs 或 genisoimage 或 xorrisofs(仅构建 .iso 镜像时需要)
- syslinux(提供 isolinux,仅构建 .iso 镜像时需要)
选择要构建的目标¶
使用引导 CD-ROM 或 U 盘¶

你可以把 iPXE 放到可引导的 CD-ROM 或 U 盘上,用它引导(几乎)任何机器。如果你只是偶尔需要用 iPXE 引导机器,或者你面对的是自己无权管理的计算机,这种方式会很有用。
构建 iPXE 可引导 CD-ROM 镜像:
make bin/ipxe.iso
然后把 bin/ipxe.iso 刻录到空白的 CD-ROM 或 DVD-ROM 上。
构建 iPXE 可引导 U 盘镜像:
make bin/ipxe.usb
然后用以下命令把镜像写入空白 U 盘:
dd if=bin/ipxe.usb of=/dev/sdX
其中 /dev/sdX 是代表你的 U 盘的设备。请注意,这会清除 U 盘上原有的全部内容。
从现有 PXE ROM 链式加载¶

你可以从现有的 PXE ROM 链式加载(chainload)iPXE。如果你有大量机器想用 iPXE 引导,但又不想逐台重刷网卡 ROM,这种方式就很实用。
构建可链式加载的 iPXE 镜像:
make bin/undionly.kpxe
接下来就可以配置网络进行链式加载了。
替换现有的 PXE ROM¶
你可以用 iPXE 替换网卡(或主板)上的 PXE ROM。如果你希望机器始终能用 iPXE 引导,而不依赖 CD-ROM 或链式加载器,可以采用这种方式。
你需要针对具体的网卡构建 ROM 镜像,命令类似:
make bin/808610de.rom
其中 808610de 由网卡的 PCI 厂商 ID 和设备 ID 组成。完整说明见 ROM 烧录教程。

高级主题¶
嵌入式脚本¶
你可以使用嵌入式脚本改变 iPXE 的默认行为。例如,你可能希望构建一个这样的 iPXE 版本:先通过 DHCP 获取 IP 地址,然后从预定义的 SAN 目标引导。
命名配置¶
使用命名配置,可以在同一份代码库的基础上构建出不同配置的二进制文件。这样就能方便地实现:一个配置用于 ROM,一个配置用于链式加载的二进制文件,还有一个配置用于 UEFI 二进制文件。
调试构建¶

iPXE 内置了完善的调试功能,可以在构建时通过指定一组 DEBUG 对象来有选择地启用。例如,要排查涉及 iSCSI 的问题,可以启用 iSCSI 协议驱动(位于 iscsi.c)的调试:
make bin/ipxe.iso DEBUG=iscsi
如果你发现问题不在 iscsi.c 中,可以再加上 SCSI 层(位于 scsi.c)的调试:
make bin/ipxe.iso DEBUG=scsi,iscsi
许多对象提供多个调试级别。例如,要为每条 SCSI 命令输出一条调试消息,可以使用:
make bin/ipxe.iso DEBUG=scsi:3,iscsi
数字调试级别(本例中为 3)是一个位掩码:
| 值 | 含义 |
|---|---|
| 1 | 启用基本调试消息 |
| 2 | 启用详细调试消息(例如每个事件一条消息) |
| 4 | 启用超详细调试消息(例如每个字节一条消息) |
| 8 | 启用 I/O 跟踪(例如每次 readl()/writel() 调用一条消息) |
你可能希望启用串口控制台(config/console.h 中的 CONSOLE_SERIAL),并连接一条 null-modem 线缆来捕获输出。如果需要修改默认的 115200,8N1 设置,可以在 config/serial.h 中配置串口参数。如果没有可用的串口,用数码相机对着屏幕拍照往往也是个出乎意料的替代办法!
大型 ROM 镜像¶

如果启用了大量 iPXE 特性,ROM 可能会变得过大而无法使用。有些网卡不支持超过 64kB 的 ROM,有些 BIOS 在存在较大 ROM 镜像时可能无法完成加电自检(POST)。
你可以使用 .mrom 镜像来缓解其中的一些问题。.mrom 镜像在 BIOS 看来只是一个非常小的(3kB)ROM,其中只包含一个很小的加载器存根。完整的 iPXE 镜像只有在 BIOS 尝试从网卡引导时才会被加载。
构建 .mrom 镜像只需把 .rom 改成 .mrom。例如:
make bin/808610de.rom # 普通的 .rom 镜像
make bin/808610de.mrom # .mrom 镜像
.mrom 镜像的烧录方式与普通 .rom 镜像完全相同。
并非所有网卡都支持 .mrom 镜像。要支持 .mrom 镜像,网卡必须至少有一个不小于其扩展 ROM BAR 的 PCI 内存 BAR。例如,如果网卡有 128kB 的扩展 ROM BAR 和 256kB 的内存 BAR,那么它就能支持最大 128kB 的 .mrom 镜像。
UEFI¶
iPXE 同时支持 UEFI 和 BIOS 平台。你可以使用 .efirom 镜像格式构建 UEFI ROM。例如:
make bin-x86_64-efi/808610de.efirom
其中 808610de 由网卡的 PCI 厂商 ID 和设备 ID 组成。
你也可以构建 .efi 可执行文件,从现有的 UEFI ROM 链式加载它(或直接从 UEFI shell 运行):
make bin-x86_64-efi/ipxe.efi