配置设置¶
iPXE 提供了对各种配置设置的访问。你可以使用交互式配置工具交互地浏览和编辑这些设置:

你也可以从命令行或 iPXE 脚本中访问这些设置。例如,可以显示当前通过 DHCP 获取的 IP 地址:
iPXE> show net0/ip
net0.dhcp/ip:ipv4 = 10.0.0.103
或者配置静态 IP 地址:
iPXE> set net0/ip 192.168.0.3
iPXE> set net0/netmask 255.255.255.0
iPXE> set net0/gateway 192.168.0.1
iPXE> route
net0: 192.168.0.3/255.255.255.0 gw 192.168.0.1
或者根据系统 UUID 下载并引导操作系统:
#!ipxe
chain http://192.168.0.1/boot.php?uuid=${uuid}
你还可以使用 present 命令创建自己的用户界面,交互式地编辑选定的一组设置:

作用域¶
配置设置按照逻辑层次组织成不同的设置作用域:

探索这个层次结构最简单的方法是使用交互式配置工具。你也可以使用 set、show 和 clear 命令来观察在层次结构的不同级别上修改设置的效果。
例如,假设你已经通过 DHCP 获取了引导文件名:
iPXE> dhcp net0
DHCP (net0 52:54:00:12:34:56).... ok
iPXE> show filename
net0.dhcp/filename:string = http://192.168.0.1/boot.php
你可以在顶层设置作用域中配置另一个引导文件名,覆盖这个引导文件名:
iPXE> set filename vmlinuz
iPXE> show filename
filename:string = vmlinuz
原来的引导文件名(net0.dhcp/filename)仍然存在,但被顶层作用域中设置的 filename 覆盖了:
iPXE> show net0.dhcp/filename
net0.dhcp/filename:string = http://192.168.0.1/boot.php
iPXE> show net0/filename
net0.dhcp/filename:string = http://192.168.0.1/boot.php
iPXE> show filename
filename:string = vmlinuz
在父级作用域中配置的设置总是优先于在子级作用域中配置的等价设置。priority 设置可用于决定层次结构中同一级别的各个作用域之间的优先级。
类型¶
每个配置设置都有关联的类型。例如,引导文件名的类型是 string,IPv4 默认网关地址的类型是 ipv4。
你可以使用 show 命令查看设置的类型:
iPXE> show filename
filename:string = vmlinuz
你可以在设置名称中包含类型,从而指定新建设置的类型:
iPXE> set myvar:ipv4 212.13.204.60
iPXE> show myvar
myvar:ipv4 = 212.13.204.60
设置在内部以字节数组的形式存储。你可以选择用 hex 类型来解读设置,从而查看原始字节数组:
iPXE> show filename
filename:string = vmlinuz
iPXE> show filename:hex
filename:hex = 76:6d:6c:69:6e:75:7a
适用性¶
有些设置只在特定的作用域内生效。特别是,网络设备特有的设置只在该网络设备的作用域内生效。例如,要设置 net0 的 IP 地址,必须设置 net0/ip 的值,而不是只设置 ip:
iPXE> set net0/ip 192.168.0.100
iPXE> route
net0: 192.168.0.100/255.255.255.0

高级主题¶
PXE NBP¶
PXE NBP(例如 Windows Deployment Services 的 wdsnbp.com 或 pxelinux.0)会尝试获取 iPXE 使用的各种 DHCP 数据包的内容(通过 PXENV_GET_CACHED_INFO API 调用)。例如,wdsnbp.com 会检查这些 DHCP 数据包,以确定使用哪个 TFTP 服务器地址。
PXE NBP 可能请求三种数据包:DHCPDISCOVER、DHCPACK 和 BINL。iPXE 会根据实际的 DHCP 数据包与通过其他方式(例如 set 命令)提供的设置组合起来,为 PXE NBP 构造这些数据包。
PXE NBP 数据包的作用域规则与 iPXE 内部使用的设置作用域逻辑层次略有不同:
- 对于 DHCPACK 数据包,网络设备作用域内的任何设置(例如
netX/next-server)会覆盖任何顶层设置(例如next-server)。 - 对于 BINL 数据包,ProxyDHCPACK 中存在的任何设置(例如
proxydhcp/next-server)或 Boot Server Reply 中的设置(例如pxebs/next-server)会覆盖任何顶层设置(例如next-server)。
如果你需要手动向 PXE NBP 传递特定的设置,大多数情况下应该在网络设备作用域内设置。例如,要手动设置 wdsnbp.com 使用的 TFTP 服务器地址和路径,可以使用:
set netX/next-server 192.168.1.2
set netX/filename boot\x86\wdsnbp.com
chain tftp://192.168.1.2/boot/x86/wdsnbp.com