跳转至

控制台

iPXE 支持多种控制台类型。在默认配置下,iPXE 使用本地键盘和显示器。

你可以通过编辑文件 config/console.h 来修改控制台配置。例如,要使用串口控制台,可以启用构建选项 CONSOLE_SERIAL

  #define CONSOLE_SERIAL

你可以同时启用多种控制台类型。iPXE 的任何输出都会同时出现在所有控制台上。

控制台类型

BIOS 控制台

BIOS console

BIOS 控制台使用本地连接的键盘和显示器与用户交互。你可以使用构建选项 CONSOLE_PCBIOS 启用或禁用 BIOS 控制台。BIOS 控制台默认启用。

大多数 BIOS 假定使用美式键盘布局。你可以使用 KEYBOARD_MAP 构建选项修改 iPXE 使用的键盘布局。例如,使用德语键盘布局:

  #define KEYBOARD_MAP de

图形帧缓冲控制台

Graphical framebuffer console

图形帧缓冲控制台使用与 BIOS 控制台相同的本地键盘和显示器,但支持更高的分辨率、任意颜色以及背景图片。你可以使用构建选项 CONSOLE_FRAMEBUFFER 启用或禁用图形帧缓冲控制台。

要激活图形帧缓冲控制台,必须使用 console 命令配置控制台。

要使用背景图片,必须启用合适的图像格式支持,例如 IMAGE_PNG

串口控制台

串口控制台使用物理串口与用户交互。你可以使用构建选项 CONSOLE_SERIAL 启用或禁用串口控制台。

默认的串口配置是 COM1,115200 波特率,8 位数据位,无校验,1 位停止位。你可以使用 config/serial.h 中的 COMCONSOLECOMSPEEDCOMDATACOMPARITYCOMSTOP 构建选项修改串口配置。例如,使用 COM2,9600,8n1:

A null-modem cable

  #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:

A network card

  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 )

日志消息

A disk

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 服务器。