Skip to content

OpenBMC 子系统文档索引

概述

OpenBMC 是基于 Linux 的开源 BMC 固件栈,核心设计基于 Phosphor D-Bus 框架。本文档索引涵盖 OpenBMC 的 8 大核心子系统的深度分析。

源码仓库: https://github.com/openbmc


文档清单

文档描述源码位置
phosphor_dbus_services.mdPhosphor D-Bus 服务层: 状态管理/日志/传感器/FRU/LEDopenbmc/phosphor-dbus-interfaces
ipmi_protocol_stack.mdIPMI 协议栈: 命令/KCS/SMIC/FRU/SEL/SDRopenbmc/ipmid
redfish_interface.mdRedfish 接口: REST API/JSON Schema/Sessionopenbmc/redfish-core
kvm_virtualmedia.mdKVM/虚拟介质: VNC/NBD/USB Gadgetopenbmc/phosphor-kvm
hardware_control.md硬件控制: 电源/风扇/热/PID/LED/看门狗openbmc/phosphor-power
boot_firmware_update.md启动控制/固件更新: 双镜像/Flash布局openbmc/phosphor-boot
security_subsystem.md安全子系统: 证书/加密/用户/PAM/SSHopenbmc/phosphor-certificate-manager
network_comm_services.md通信/网络服务: 网络/Web UI/D-Busopenbmc/phosphor-networkd

1. Phosphor D-Bus 服务层 (phosphor_dbus_services.md)

核心服务

服务D-Bus 路径功能
phosphor-state-manager/xyz/openbmc_project/state/*电源/启动/看门狗状态机
phosphor-log-manager/xyz/openbmc_project/logging/*SEL 日志管理
phosphor-inventory-manager/xyz/openbmc_project/inventory/*FRU 资产信息
phosphor-sensor-manager/xyz/openbmc_project/sensors/*传感器数据/SDR
phosphor-fru-inventory/xyz/openbmc_project/fru/*FRU EEPROM 读写
phosphor-led-manager/xyz/openbmc_project/led/*LED 指示控制
phosphor-pef/xyz/openbmc_project/pef/*事件过滤/告警

2. IPMI 协议栈 (ipmi_protocol_stack.md)

核心组件

组件源码功能
ipmidopenbmc/ipmidIPMI 命令处理
ipmi-fru-parseropenbmc/ipmi-fru-parserFRU 数据解析
ipmi-selopenbmc/ipmi-selSEL 事件日志
ipmi-sensoropenbmc/ipmi-sensor传感器读取

IPMI 消息格式

NetFn/LUN (1B) | CMD (1B) | Data (N bytes)

硬件接口

  • KCS: Keyboard Controller Style (最常用)
  • SMIC: Server Management Interface Card
  • BT: Block Transfer

3. Redfish 接口 (redfish_interface.md)

REST API 路径

路径描述
/redfish/v1/服务根
/redfish/v1/Systems服务器系统
/redfish/v1/Chassis机箱
/redfish/v1/ManagersBMC 管理器
/redfish/v1/EventService事件订阅

认证机制

  • Session-based 认证
  • X.509 证书
  • HTTP Basic Auth (禁用)

4. KVM/虚拟介质 (kvm_virtualmedia.md)

数据流

Web Browser → bmcweb → phosphor-virtualmedia → NBD Client → USB Gadget → HOST

核心组件

组件功能
phosphor-virtualmedia介质重定向 (CD/DVD/USB)
phosphor-kvmKVM 会话管理
obmc-ikvmVNC/RFB 视频流

5. 硬件控制 (hardware_control.md)

子系统

组件功能
phosphor-powerd电源开/关/重启
phosphor-fan-presence风扇检测/控制
phosphor-thermal温度监控/PID 控制
phosphor-led-managerLED 指示
phosphor-watchdog看门狗服务
PEL平台事件日志

6. 启动控制/固件更新 (boot_firmware_update.md)

Flash 布局

┌─────────────┬─────────────┬─────────────┐
│  U-Boot     │   Kernel    │  Rootfs     │
├─────────────┼─────────────┼─────────────┤
│  u-boot     │  kernel     │  squashfs   │
│  env        │  dtb        │  overlay    │
└─────────────┴─────────────┴─────────────┘
       ↑            ↑            ↑
    Bootloader    Linux      用户空间

双镜像 A/B

镜像 A (Active) ←→ 镜像 B (Backup)

7. 安全子系统 (security_subsystem.md)

安全机制

组件功能
phosphor-certificate-managerX.509 证书管理
phosphor-cryptolib加密服务 (AES/RSA/HMAC)
phosphor-user-manager用户/PAM 集成
phosphor-single-root单用户模式
SSHauthorized_keys 管理
Secure Boot启动链签名验证

8. 通信/网络服务 (network_comm_services.md)

网络架构

┌─────────────────────────────────────┐
│    bmcweb (HTTP/HTTPS Server)       │
├─────────────────────────────────────┤
│  Redfish │ REST │ WebSocket │ KVM │
├─────────────────────────────────────┤
│      phosphor-networkd (网络配置)     │
├─────────────────────────────────────┤
│         systemd-networkd             │
├─────────────────────────────────────┤
│         eth0 / eth1                  │
└─────────────────────────────────────┘

架构总览

                    ┌─────────────────────────────────────────┐
                    │        管理接口层                        │
                    │  IPMI │ Redfish │ REST │ Web UI │ SSH  │
                    └─────────────────┬─────────────────────┘

                    ┌─────────────────┴─────────────────────┐
                    │         Phosphor D-Bus 服务层           │
                    │  状态 │ 日志 │ 传感器 │ FRU │ LED    │
                    └─────────────────┬─────────────────────┘

                    ┌─────────────────┴─────────────────────┐
                    │         硬件抽象层                     │
                    │  电源 │ 风扇 │ 温度 │ I2C │ USB Gadget │
                    └─────────────────┬─────────────────────┘

                    ┌─────────────────┴─────────────────────┐
                    │         Linux Kernel / BMC Firmware    │
                    └─────────────────────────────────────────┘

知识点关联表

层级组件协议/接口核心文件
管理接口ipmidIPMInetfn.cpp
管理接口bmcwebRedfish/HTTPmain.cpp
服务层phosphor-state-managerD-Busstate_manager.cpp
服务层phosphor-log-managerD-Buslog_manager.cpp
硬件抽象phosphor-powerdD-Bus/sysfspower_manager.cpp
硬件抽象phosphor-fan-presenceD-Bus/I2Cfan_presence.cpp
固件更新phosphor-bmc-updateD-Bus/Redfishupdate_manager.cpp
安全phosphor-certificate-managerD-Bus/OpenSSLcert_manager.cpp

文档版本: R1 分析源码: OpenBMC (latest) 生成时间: 2026-04-27

基于 VitePress 构建