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)
啟動裝置設定
載入作業系統