控制台¶
iPXE 支持多种控制台类型。在默认配置下,iPXE 使用本地键盘和显示器。
你可以通过编辑文件 config/console.h 来修改控制台配置。例如,要使用串口控制台,可以启用构建选项 CONSOLE_SERIAL:
#define CONSOLE_SERIAL
你可以同时启用多种控制台类型。iPXE 的任何输出都会同时出现在所有控制台上。
控制台类型¶
BIOS 控制台¶

BIOS 控制台使用本地连接的键盘和显示器与用户交互。你可以使用构建选项 CONSOLE_PCBIOS 启用或禁用 BIOS 控制台。BIOS 控制台默认启用。
大多数 BIOS 假定使用美式键盘布局。你可以使用 KEYBOARD_MAP 构建选项修改 iPXE 使用的键盘布局。例如,使用德语键盘布局:
#define KEYBOARD_MAP de
图形帧缓冲控制台¶

图形帧缓冲控制台使用与 BIOS 控制台相同的本地键盘和显示器,但支持更高的分辨率、任意颜色以及背景图片。你可以使用构建选项 CONSOLE_FRAMEBUFFER 启用或禁用图形帧缓冲控制台。
要激活图形帧缓冲控制台,必须使用 console 命令配置控制台。
要使用背景图片,必须启用合适的图像格式支持,例如 IMAGE_PNG。
串口控制台¶
串口控制台使用物理串口与用户交互。你可以使用构建选项 CONSOLE_SERIAL 启用或禁用串口控制台。
默认的串口配置是 COM1,115200 波特率,8 位数据位,无校验,1 位停止位。你可以使用 config/serial.h 中的 COMCONSOLE、COMSPEED、COMDATA、COMPARITY 和 COMSTOP 构建选项修改串口配置。例如,使用 COM2,9600,8n1:

#define COMCONSOLE COM2
#define COMSPEED 9600
#define COMDATA 8
#define COMPARITY 0
#define COMSTOP 1
有些 BIOS 提供"控制台重定向"和"串口 over LAN"功能,可用于远程访问 BIOS 控制台。如果你的 BIOS 已经提供了控制台重定向,就不应该再启用 iPXE 串口控制台,因为它会干扰 BIOS 自己对串口的使用。
Syslog 控制台¶
syslog 控制台把输出发送到远程 syslog 服务器。你可以使用构建选项 CONSOLE_SYSLOG 启用或禁用 syslog 控制台。
syslog 服务器地址通过 syslog 设置来配置。例如,把日志消息发送到 192.168.0.1:

iPXE> set syslog 192.168.0.1
你需要确保 syslog 服务器已配置为接受通过网络接收的消息。
加密的 syslog 控制台¶
加密的 syslog 控制台通过 TLS 加密连接把输出发送到远程 syslog 服务器。你可以使用构建选项 CONSOLE_SYSLOGS 启用或禁用加密的 syslog 控制台。
加密的 syslog 服务器地址通过 syslogs 设置来配置。例如,把日志消息发送到 syslog.example.com:
iPXE> set syslogs syslog.example.com
VMware 控制台¶
VMware 控制台把输出发送到 VMware 日志文件(通常是虚拟机 .vmx 文件所在目录中的 vmware.log 文件)。你可以使用构建选项 CONSOLE_VMWARE 启用或禁用 VMware 控制台。
VMware 控制台只有在 iPXE 运行于 VMware 虚拟机内部时才可用。
控制台用途¶
iPXE 的控制台输出被划分为几种不同的用途:
CONSOLE_USAGE_STDOUT |
标准输出 |
|---|---|
CONSOLE_USAGE_DEBUG |
调试消息 |
CONSOLE_USAGE_TUI |
文本用户界面(例如 config 命令) |
CONSOLE_USAGE_LOG |
日志消息 |
CONSOLE_USAGE_ALL |
以上所有用途的组合 |
你可以控制每个控制台关联哪些用途。例如,要把调试消息发送到串口而不发送到本地显示器,可以使用:
#define CONSOLE_SERIAL CONSOLE_USAGE_ALL
#define CONSOLE_PCBIOS ( CONSOLE_USAGE_ALL & ~CONSOLE_USAGE_DEBUG )
各控制台的默认用途如下:
| STDOUT | DEBUG | TUI | LOG | |
| BIOS 控制台 | 是 | 是 | 是 | 否 |
| 串口控制台 | 是 | 是 | 是 | 否 |
| Syslog 控制台 | 是 | 是 | 否 | 是 |
| VMware 控制台 | 是 | 是 | 否 | 是 |
如果你启用了某个控制台但没有显式指定任何用途,就会使用这些默认值。例如:
#define CONSOLE_SERIAL
与下面的写法效果相同:
#define CONSOLE_SERIAL ( CONSOLE_USAGE_STDOUT | CONSOLE_USAGE_DEBUG | CONSOLE_USAGE_TUI )
日志消息¶

iPXE 可以生成日志消息,用于创建一份简洁的引导过程记录。例如:
Mar 27 11:07:29 ipxe: Downloaded "boot.php"
Mar 27 11:07:29 ipxe: Executing "boot.php"
Mar 27 11:07:29 ipxe: Downloaded "vmlinuz"
Mar 27 11:07:29 ipxe: Downloaded "initrd.img"
Mar 27 11:07:30 ipxe: Executing "vmlinuz"
你可以使用构建选项 LOG_LEVEL 启用或禁用这些消息。例如:
#define LOG_LEVEL LOG_ALL
日志消息只会发送到启用了 CONSOLE_USAGE_LOG 控制台用途的控制台。
示例¶
默认配置¶
#define CONSOLE_PCBIOS
只使用本地连接的键盘和显示器进行用户交互。
不会生成任何日志消息。
启用串口¶
#define CONSOLE_PCBIOS
#define CONSOLE_SERIAL
除本地连接的键盘和显示器外,还将使用默认串口(COM1,115200,8n1)进行用户交互。
不会生成任何日志消息。
串口调试¶
#define CONSOLE_PCBIOS ( CONSOLE_USAGE_STDOUT | CONSOLE_USAGE_TUI )
#define CONSOLE_SERIAL
除本地连接的键盘和显示器外,还将使用默认串口(COM1,115200,8n1)进行用户交互。所有调试输出只发送到串口。
不会生成任何日志消息。
完整控制台日志¶
#define CONSOLE_PCBIOS
#define CONSOLE_SYSLOG
使用本地连接的键盘和显示器进行用户交互。所有控制台输出同时发送到远程 syslog 服务器。
不会生成任何日志消息。
无用户交互的完整控制台日志¶
#undef CONSOLE_PCBIOS
#define CONSOLE_SYSLOG
不提供任何用户交互。所有控制台输出只发送到远程 syslog 服务器。
不会生成任何日志消息。
引导进度日志¶
#define CONSOLE_PCBIOS
#define CONSOLE_SYSLOG CONSOLE_USAGE_LOG
#define LOG_LEVEL LOG_ALL
使用本地连接的键盘和显示器进行用户交互。
日志消息将发送到远程 syslog 服务器。