BIOS POST Code技术介绍
更新时间: 2026/04/24
在Gitcode上查看源码

说明:本文档主要描述 x86 架构服务器 的 BIOS POST Code 技术体系。华为 Taishan (ARM) 服务器不适用此标准,详见"x86 服务器与华为 Taishan 服务器对比"章节。

基本概念

定义

BIOS POST Code(又称 POST 诊断码、开机自检码)是服务器 / PC 上电后,BIOS 在 Power-On Self-Test(POST,上电自检)阶段输出的一组十六进制状态编码,用于标记自检流程的执行进度、硬件状态与故障定位,是服务器底层硬件调试、开机故障排查的核心基础工具。

物理架构

系统架构图(x86 服务器)

数据流向(x86 服务器)

输出接口

POST Code 的标准输出接口为 I/O 端口 0x80,这是 x86 架构的约定。

接口类型说明典型应用
I/O Port 0x80标准 POST Code 端口诊断卡、主板 LED
LPC Bus低速外设总线,服务器用于传输 POST 数据传统服务器
eSPI Bus增强型 SPI 总线,现代服务器替代 LPC新一代服务器

在现代服务器中,POST Code 可以通过以下方式获取:

  • BMC WebUI 实时显示
  • IPMI sel get 命令读取 SEL 日志
  • Redfish 接口查询 SystemEventLog
  • 前面板 8 位数码管显示(部分机型)
  • PCIe 诊断卡(消费级或开发调试场景)

核心工作原理

POST 阶段划分

服务器上电复位后,CPU 最先执行 BIOS 固件,POST 自检按固定时序依次完成各核心硬件的初始化与功能校验。BIOS 每完成一个自检步骤,就会向指定硬件接口写入对应的唯一 POST Code。

UEFI POST 阶段详解

Checkpoint 范围定义

POST Code 按阶段划分为多个范围,每个范围对应特定的 BIOS 执行阶段:

编码范围阶段名称功能描述
0x01 – 0x0BSEC Execution安全阶段:CPU/CACHE 初始化、AP/BSP 设置、微码加载
0x0C – 0x0FSEC ErrorsSEC 阶段的错误码
0x10 – 0x2FPEI (Pre-Memory)PEI 阶段:内存检测前
0x30 – 0x4FPEI (Post-Memory)PEI 阶段:内存检测后
0x50 – 0x5FPEI ErrorsPEI 阶段的错误码
0x60 – 0x8FDXE ExecutionDXE 阶段:驱动执行环境初始化
0x90 – 0xCFBDS ExecutionBDS 阶段:启动设备选择
0xD0 – 0xDFDXE ErrorsDXE 阶段的错误码
0xE0 – 0xE8S3 ResumeS3 唤醒流程
0xE9 – 0xEFS3 Resume ErrorsS3 唤醒的错误码
0xF0 – 0xF8RecoveryBIOS 恢复模式
0xF9 – 0xFFRecovery Errors恢复模式的错误码

关键 Checkpoint 详解

编码说明可能的故障原因
0x01上电复位,检测复位类型电源故障、主极故障
0x02AP 初始化(微码加载前)CPU 接触不良、微码损坏
0x03北桥初始化主板芯片组故障
0x04南桥初始化PCH 故障
0x10PEI 核心启动BIOS 固件损坏
0x11运行时数据区初始化CMOS 故障
0x15早期内存初始化内存控制器故障
0x50内存初始化完成内存条故障、DIMM 接触不良
0x60DXE 核心启动BIOS 固件损坏
0xA2IDE/Storage 检测存储设备故障
0xB2Legacy Option ROMPCIe 设备故障
0xBA内存初始化失败内存条损坏

核心功能

POST Code 在服务器运维中的核心价值体现在以下方面:

故障精准定位

这是最核心价值。解决服务器开机黑屏、无显示、启动中止时 "无报错信息" 的诊断盲区,通过最终停留的 POST Code,直接锁定故障硬件模块(如内存、CPU、PCIe 设备等),大幅缩短排障时间。

典型故障排查流程(x86 服务器)

自检进度追踪

可视化 BIOS 启动全流程,清晰判断当前自检所处阶段,区分是 BIOS 固件执行异常,还是硬件初始化失败。

研发与量产调试

在服务器主板设计、BIOS 固件开发、产线量产测试阶段,通过 POST Code 快速定位硬件设计缺陷、固件逻辑 Bug、焊接 / 物料不良问题。

远程化读取

区别于消费级 PC 依赖 PCIe 诊断卡,企业级服务器几乎都通过 BMC 实现 POST Code 的远程捕获、实时显示、历史存储与告警,无需现场拆机,可通过 BMC WebUI、IPMI CLI、Redfish 接口远程获取,部分机型前面板自带数码管直接显示。

服务器应用场景

BMC 日志集成

服务器 BIOS 会将异常 POST Code 同步写入BMC 系统事件日志(SEL),支持故障回溯与运维审计,致命错误还会触发远程告警。

ipmitool 读取示例

bash
# 通过 IPMI 读取 SEL 日志中的 POST Code 事件
ipmitool -H <BMC_IP> -U <USER> -P <PASS> sel list

# 读取系统事件日志(包含 POST 相关事件)
ipmitool -H <BMC_IP> -U <USER> -P <PASS> sel get <Entry_ID>

# 实时读取 POST Code(部分 BMC 支持)
ipmitool -H <BMC_IP> -U <USER> -P <PASS> raw 0x0c 0x01

Redfish 接口查询

bash
# 通过 Redfish 获取系统事件日志
curl -k -u <user>:<pass> https://<BMC_IP>/redfish/v1/Managers/Self/LogServices/EventLog/Entries

厂商自定义规范

POST Code 无统一通用标准,其含义由 BIOS 厂商(服务器主流为 AMI Aptio、Phoenix)、服务器整机厂商自定义,同厂商不同固件版本的编码定义也可能存在差异,必须对应机型官方手册解读。

主流 BIOS 厂商

厂商产品系列典型应用
American MegatrendsAMIBIOS 8, Aptio IV/VSupermicro, ASUS, Gigabyte
PhoenixPhoenixBIOS, CoreBIOSDell, HP 部分机型
InsydeInsydeH2OHP, Lenovo 部分机型

版本演进

核心技术迭代

版本核心能力典型应用场景
AMIBIOS 8传统 POST Code,I/O Port 0x80 输出早期服务器、消费级 PC
Aptio IVUEFI POST 阶段化,多阶段 CheckpointSupermicro X9 系列
Aptio V完整 UEFI POST,MMCONF 支持现代服务器主流

x86 服务器与华为 Taishan 服务器对比

说明:华为 Taishan 服务器使用 ARM 架构(鲲鹏 920 处理器),与 x86 标准服务器的 BIOS 体系有本质区别。

核心差异概述

对比维度x86 标准服务器华为 Taishan 服务器 (ARM)
处理器架构x86 (Intel/AMD)ARM (Kunpeng 920)
BIOS 架构AMI Aptio / Phoenix基于 Linaro UEFI 自研
POST Code 标准十六进制 (0x01 - 0xFF)UEFI 标准日志,无标准 POST Code
输出接口I/O Port 0x80 + LPC/eSPIUEFI Debug Port + iBMC
启动模式UEFI / Legacy 支持仅 UEFI
故障显示诊断卡 / 数码管iBMC WebUI + KVM
管理 BMCIPMI 标准 BMCiBMC (华为自研)

技术架构差异

x86 标准服务器 POST Code 体系

x86 标准服务器采用行业通用的 AMI Aptio 或 Phoenix BIOS,POST Code 遵循以下规范:

  • 输出接口:I/O 端口 0x80,通过 LPC/eSPI 总线转发至 BMC
  • 编码体系:1 字节十六进制 (0x01 - 0xFF)
  • 阶段划分:SEC → PEI → DXE → BDS(UEFI 标准流程)
  • 代表厂商:Supermicro、Dell、HP、Lenovo 采用 AMI/Phoenix BIOS

华为 Taishan 服务器故障诊断系统

华为 Taishan 服务器使用基于 Linaro UEFI 的自研 BIOS(基于 ARM 架构鲲鹏 920 处理器),其故障诊断体系与 x86 服务器有本质区别:

  • BIOS 架构:基于 Linaro UEFI 代码开发的自研 BIOS(非 AMI Aptio)
  • 故障诊断:通过 iBMC WebUI + KVM 远程查看,无标准 POST Code
  • 前面板显示:故障诊断数码管(如 RH1288 V3 等 FusionServer 机型)
  • 启动模式:仅支持 UEFI 模式(x86 服务器可选 Legacy)
  • POST 排查方式:通过 BMC KVM 查看屏幕输出或串口日志

华为 Taishan 服务器故障诊断

故障排查方式

由于 ARM 架构 Taishan 服务器不使用标准 POST Code,其故障排查方式如下:

通过 iBMC KVM 查看

bash
# 1. 登录 iBMC Web 界面
# 2. 打开 KVM Console 查看 POST 阶段屏幕输出
# 3. 观察卡在哪一步(内存检测、PCIe 初始化、RAID 初始化等)

通过 iBMC 日志

bash
# 登录 iBMC 查看事件日志
ipmitool -H <iBMC_IP> -U Administrator -P Admin@9000 sel list

# 查看详细告警
ipmitool -H <iBMC_IP> -U Administrator -P Admin@9000 sel get <Entry_ID>

常见故障场景

故障现象可能原因排查方法
卡在内存检测内存条故障/接触不良重新插拔 DIMM,更换槽位测试
卡在 PCIe 初始化PCIe 设备异常检查 lspci 识别情况
卡在 RAID 初始化RAID 卡未识别检查 BIOS 存储设备配置
启动设备找不到阵列卡故障/硬盘异常检查 iBMC 告警信息
BIOS 无法进入按键时机不对使用 KVM 连续按键尝试

故障码对比

故障场景x86 标准 POST Code华为 Taishan (ARM)
内存故障0x50 (内存初始化失败)KVM 卡在内存检测阶段
CPU 故障0x02 (AP 初始化)iBMC 告警 CPU 异常
PCIe 故障0xB2 (Option ROM)KVM 卡在 PCIe 初始化
存储故障0xA2 (IDE Detect)BIOS 未识别 RAID 卡
启动失败0xA0 (No Boot Device)BIOS 无启动设备

生态体系对比

特性x86 服务器华为 Taishan (ARM)
BIOS 架构AMI Aptio / PhoenixLinaro UEFI + 华为自研
BMCIPMI 标准 BMCiBMC (华为自研)
管理接口IPMI, RedfishiBMC WebUI, IPMI, Redfish, SNMP
故障诊断诊断卡 / 标准手册iBMC KVM + 华为手册
POST Code十六进制标准码UEFI Debug 日志
启动模式UEFI / Legacy仅 UEFI

关键区别总结

  1. 架构本质不同:x86 使用 AMI Aptio/Phoenix BIOS,Taishan 使用基于 Linaro UEFI 的自研 ARM BIOS

  2. POST Code 体系不同:x86 有标准十六进制 POST Code (0x01-0xFF),Taishan 无标准 POST Code,使用 UEFI Debug 日志

  3. 显示方式差异:x86 可通过 I/O Port 0x80 / 诊断卡查看,Taishan 通过 iBMC KVM 查看屏幕输出

  4. 管理生态差异:Taishan 使用 iBMC 作为核心管理系统,x86 通用 IPMI BMC

  5. 启动模式差异:x86 支持 UEFI + Legacy,Taishan 仅支持 UEFI

排查建议

  • x86 服务器:读取 POST Code → 对照手册 → 定位故障模块
  • 华为 Taishan:使用 iBMC KVM 查看 POST 阶段 → 检查 iBMC 告警日志 → 分析故障原因

POST Code 仅生效于 BIOS POST 阶段,一旦 BIOS 完成自检、移交控制权给 BootLoader / 操作系统,编码就会停止更新。它与 BMC 传感器告警码、OS 系统错误码分属不同启动阶段,不可混用解读。

POST Code 的含义因 BIOS 厂商和服务器整机厂商而异,同一机型不同固件版本的编码定义也可能存在差异,实际使用时必须参考对应机型的官方技术手册。

参考资料

规范文档说明

POST Code 的具体定义遵循 BIOS 厂商(AMI、Phoenix 等)发布的外部接口规范,不同服务器整机厂商会根据自身需求进行定制化扩展。

参考链接

Intel 官方文档

AMI 官方文档

华为官方文档

鲲鹏社区文档

其他参考资料