OpenBMC Boot Process

PowerOn 電源

Bios Init

Bootloader

Linux Kernel

Init Process

U-Boot

初始化系統與硬體

Eg: Time, Network Interface

OpenBMC使用Systmed來Init

Systemd會啟動BMCUI, IPMI, 和其他Service

BMC WebUI

此為OpenBMC的主要竹官理界面

由Phosphor WebUI提供

提供的功能有

日誌

時間

健康狀態

用戶

系統加電時,CPU 會先執行內部的 Boot ROM,然後啟動 U-Boot

設置啟動參數

初始化 BMC 硬體設備

加載 Linux 核心映像

設置 BMC 的網路接口

啟動 Linux 核心等工作

主要目的是要確保 BMC 能夠在啟動 Linux 核心之前進行網路連接

例如 IP 地址、子網掩碼、預設閘道等

解釋此階段Network Interface 的作用

例如 SSH、WebUI、IPMI 等

主要目的是要確保 BMC 能夠正常地運行各種網路應用

Linux 核心會讀取網路設定檔案(例如 /etc/network/interfaces),並且根據設定檔案來設置網路接口

Linux 核心會設置多個網路接口,例如 eth0、eth1 等。

SNMP Agent

Systemd 還提供了一個單元文件 (Unit Files)的機制

IPMI 驅動程式

Systemd 會自動啟動各種服務和進程,包括一些管理和監控服務

使得使用者可以自定義和管理系統服務和進程

單元文件是一種文本文件

管理系統服務或進程

創建服務或進程依賴關係

創建自定義系統服務或進程

自動啟動系統服務或進程

使用者可以透過手動編輯單元文件,也可以使用 systemd 提供的指令來創建和管理單元文件

單元文件管理指令

systemctl restart [unit]:重新啟動單元。
systemctl status [unit]:查詢單元的狀態。

systemctl list-units:列出所有當前正在運行的單元。
systemctl list-unit-files:列出所有已經安裝的單元文件。

systemctl start [unit]:啟動單元。(一次性)
systemctl stop [unit]:停止單元。(一次性)

systemctl enable [unit]:設置單元在系統啟動時自動啟動。
systemctl disable [unit]:取消設置單元在系統啟動時自動啟動。

為了將服務或應用程序在系統啟動後運行,您需要創建一個相應的 systemd 單元文件。使用 systemctl enable 指令來啟用此單元文件,使得該服務在系統啟動後自動運行

Systemd 會自動啟動多個服務,以保證系統正常運行。以下是一些常見的服務

obmc-console: 這是一個 WebShell 界面,可以通過它來訪問 BMC 的命令行界面。當您訪問 BMC 的 WebShell 時,Systemd 會自動啟動此服務。

obmc-mapped: 這是一個名稱映射服務,它可以為 BMC 中的一些名稱提供映射,例如 FRU(Field Replaceable Unit)名稱、傳感器名稱等。

phosphor-ipmi-host: 這是一個 IPMI(Intelligent Platform Management Interface)服務,它提供了一個 IPMI 端口,可以用於通過 IPMI 協議訪問 BMC。

phosphor-networkd: 這是一個網絡服務,它用於管理 BMC 的網絡設置,例如 IP 地址、DNS、DHCP 等。

phosphor-sensors: 這是一個傳感器服務,用於監測 BMC 中的各種傳感器,例如溫度、電壓、風扇速度等。

phosphor-watchdog: 這是一個看門狗服務,它用於監控 BMC 的運行狀態,並在系統出現問題時自動重啟 BMC。

phosphor-power: 這是一個電源管理服務,它用於監測 BMC 的電源狀態,例如電源開關、電壓等,並根據需要控制 BMC 的電源。

IBM OpenBMC framework

OpenBMC

Platform

Application

Driver

Hardware

IBM OpenPower

AST2600

AST2500

AST2400

Mgmt function(設備管理功能), DB(數據儲存功能)
(KCS,SSH...)

Python agent (Rest API)

Yocto Linux

D-Bus (Each Process communicates via D-Bus)

click to edit

Redfish,
Virtual Media USB,
KVM,
Web GUI, RSD...etc

Inventory

OOB

Sensor

FRU (Field Replacement Unit)
Inventory Device(可抽換單元)

.....

click to edit

解釋 Yocto

Yocto Project和Linux kernel在OpenBMC中是共同存在的,
但他們的功能和職責是不一樣的

Yocto Project用於構建整個OpenBMC 的 firmware

Linux kernel 管理的是操作系统的核心部分

Yocto Project是基于Linux开发出来的软件开发框架,
它可以帮助构建定制化的Linux发行版

虽然Yocto Project可以自定义系统的软件堆栈,
但它仍然需要一个基礎的Linux内核才能運行

OpenBMC的fw架構包括以下組件

recipe定義了如何編譯和打包源代碼,以及如何構建出目標軟體包
。這些軟體包最終被組裝成一個完整的固件(FW)映像

Yocto通過bitbake工具執行recipe

Bootloader

Kernel

click to edit

Rootfs

Firmware Utilities

u-boot

Linux kernel

Rootfs是操作系統的根文件系統

FW工具,用於管理和診斷硬體設備

例如:
BMC firmware update工具用於更新BMC固件,
IPMI工具用於監控和管理硬體設備

Mgmt (Management)
function

事件記錄

遠端控制

傳感器監測

固件升級

硬體監控和控制

遠端鏡像和管理

監控硬件設備的狀態

例如CPU、記憶體、硬碟、風扇、電源等

監測設備的溫度、電壓、電流等感測器數據

記錄設備運行期間的各種事件,包括警告、錯誤、故障等

通過遠程管理界面,對設備進行遠程控制和操作

升級設備的固件,包括BIOS、UEFI、BMC等

支持遠程鏡像和管理,以方便管理員進行設備的部署、設置和管理

DB(Database)
數據模型

“phosphor-dbus-interfaces”

D-Bus接口不是一個DB(數據庫),但它可以被認為是一个類似於數據庫的東西。
在OpenBMC中,D-Bus接口(message bus)用于在系统中的各个组件之间传递信息和执行命令

“phosphor-dbus-interfaces” component(組件) 提供的D-bus接口(message bus),是一個包含許多不同的D-Bus接口定義的庫,用於定義和管理OpenBMC系統中各個components之間的通信和交互

It's a Interface

It's a component

click to edit

click to edit

click to edit

click to edit

D-Bus 是一種進程間通訊(IPC)機制,允許不同的軟體組件在同一系統上進行通信和交互

提供了一種方便的方式,讓開發人員可以在系統上創建基於 D-Bus 的應用程式

"xyz.openbmc_project.Control"

這兩個為
D-Bus 接口(message bus)

壞了可以抽換掉

風扇,EEPROM,HDD,電源供應,sensor

網絡設置

BIOS初始化系統硬件的一些典型步驟

CPU初始化

記憶體初始化

裝置初始化

開機自檢
(POST - Power-On Self-Test)

啟動裝置設定

載入作業系統