作者:沈綸銘(Odin Shen),Arm首席解決方案架構師 & Bryant Lee、Ken Zhang,Insyde Software
這篇部落格文章將帶您了解如何將伺服器的主機板管理控制器(Baseboard Management Controller, BMC)與韌體模擬,與持續整合(Continuous Integration,CI)流程結合,以加速平台啟動(bring-up)、測試,以及開發人員上手的效率。
如果您是平台韌體工程師、BMC開發人員,或系統整合測試工程師,您可能曾面臨以下一個或多個挑戰:
- 晶片尚未完成設計定案(tape-out),但開機流程驗證已經排定。
- 需要驗證 UEFI (編按:統一可延伸韌體介面)與 OpenBMC (編按:開放源碼BMC韌體專案)之間的協同運作,但未取得實體硬體。
- 需要在 CI 流程中測試開機電源時序以及 IPMI(Intelligent Platform Management Interface)回應。
這個Learning Path正是為你設計。
透過固定虛擬平台(Fixed Virtual Platform,FVP),你可以在晶片尚未完成前,模擬完整的OpenBMC + UEFI開機流程,並實作自訂的IPMI處理程式。
(本篇文章延伸自另一篇在虛擬平台上開發CSSv3開機流程的技術分享文章,想進一步了解相關技術細節,歡迎點擊此連結閱讀完整內容)
為什麼BMC在現代伺服器中如此關鍵
在現今的伺服器中,BMC不僅僅是開機時的輔助元件,更是整個平台的控制中樞。
- 雲端服務供應商利用BMC管理數以萬計的伺服器,進行韌體更新、自動化監控,以及系統復原。
- OEM/ODM 製造商則使用BMC進行電源控制、風扇管理、開機設定,以及安全的韌體更新。
雲端服務供應商:集中化且可擴展的營運
- 使用Redfish API 在數千個節點上進行滾動式韌體升級。
- 將OpenBMC的感測器、KVM,以及重置機制整合至監控儀表板中。
- 在系統卡住或開機失敗時,遠端觸發重置或復原操作。
OEM/ODM 廠商:平台管理能力與客製化
- 在不同電壓區域之間定義精確的電源時序。
- 透過BMC設定BIOS開機模式或PXE開機流程。
- 實作具備回復機制(rollback)的安全韌體更新。
OpenBMC:開放且業界標準的BMC軟體堆疊
OpenBMC是由Linux基金會主導的開源專案,提供模組化、基於Yocto的BMC韌體平台。它支援IPMI、Redfish、PLDM與MCTP等標準管理協定,並具備高度客製化能力。
你可以透過OpenBMC:
- 定義自訂的機器設定檔,例如meta-evb-fvp。
- 新增Redfish端點,或擴展系統與D-Bus服務。
- 將自訂的C++ IPMI處理程式嵌入至韌體建置流程中。
若想進一步了解OpenBMC在推動產業整體伺服器管理標準方面所扮演的角色,可參考Arm的Samer El-Haj-Mahmoud與Insyde的Tim Lewis所撰寫的這篇文章,內容說明Arm CSS與OpenBMC 如何在整個生態系中實現可擴展且標準化的BMC整合。
CSS V3:加速SoC與平台開發提供
CSS-V3是Arm的參考運算子系統(Reference Compute Subsystem),提供可重複使用的開機韌體(boot firmware)以及SoC IP模組化功能區塊。對軟體開發者而言,CSS-V3可提供:
- 清晰且可模擬的開機流程,涵蓋TF-A、SCP、UEFI與RSE。
- 立即可用的FVP支援,讓開發者在無需實體硬體的情況下即可執行主機端韌體。
- 整合的OpenBMC設定檔(例如meta-evb-fvp),立即可用可支援MCTP與IPMI。
沒有實體硬體仍可驗證OpenBMC與UEFI
這個Learning pathㄛ解決了一個常見的問題:在尚未取得實體硬體之前,該如何驗證BMC與UEFI韌體之間的協同運作?
我們採用的是完全虛擬化的方法,也就是在開發者工作站上模擬開機流程、序列通訊、MCTP/IPMI 橋接,以及 OpenBMC 端的控制機制。這一切都可直接在開發者的工作站上執行。
你可以在標準的Ubuntu 22.04工作站上:
- 使用Yocto建構OpenBMC韌體,其中包含WebUI、SOL與 ipmitool。
- 透過meta-evb-fvp與BitBake產生自訂映像檔,並整合新的IPMI處理器(handler)或D-Bus服務。
- 使用Arm的repo與Docker建構主機端RDV3韌體,例如TF-A、SCP與UEFI。
- 透過rdinfra-builder容器搭配build-test-busybox.sh,產生fip-uefi.bin 與平台相關的二進位檔。
- 透過run.sh啟動模擬,同時啟動BMC與主機端FVP,並提供多個UART主控台,用於觀察開機日誌、BMC shell與UEFI輸出。
- 建議在圖形化介面(GUI)或透過XRDP執行,以完整查看主控台輸出,包括OpenBMC UART、ns_uart0、Cortex-M55與Cortex-M7。
- 使用socat將主機與BMC的UART進行橋接,並可透過OpenBMC的Web UI(SOL)存取主機。
- 可透過ipmitool raw驗證自訂IPMI指令與開機狀態回報。
以下動畫展示了整個模擬流程的縮時畫面:
- 右側視窗顯示OpenBMC韌體開機並進入Linux shell。
- 左側視窗顯示主機端SoC依照CSS-V3的開機流程啟動:TF-A → SCP → UEFI。
- 當兩個系統皆啟動完成後,會透過UART與IPMI在橋接的模擬環境中進行通訊。

這條模擬路徑不僅適用於早期開發階段,同時也是CI/CD自動化以及長期平台導入(bring-up)流程的重要基礎。
虛擬BMC可執行完整的OpenBMC使用者空間(userspace),讓你能在模擬環境中啟動實際的BMC服務,例如Redfish或Web UI伺服器,並透過標準介面與其互動。如此一來,即使沒有實體硬體,也能進行 BMC 功能的原型開發、測試,甚至自動化。

你可以在這個Learning Path學到:
- 如何使用BitBake建構並客製化OpenBMC。
- 如何建構並驗證主機端UEFI韌體。
- 如何透過socat將BMC與主機的UART進行橋接,並透過Web UI進行互動。
- 如何撰寫並註冊自訂IPMI handler(NetFn、Command ID)。
結論:以開發者為核心的韌體驗證
透過這個Learning Path,開發者不但能免除等待實體硬體的時間,也能主導平台驗證與原型開發,並且:
- 將模擬整合至CI流程,用於測試開機成功與失敗的各種情境。
- 進行OEM擴充功能的原型開發,例如新增IPMI指令或watchdog邏輯。
- 將模擬環境用於新人訓練、展示,以及平台團隊培訓。
完整的教學內容請查看:OpenBMC + UEFI 前矽(Pre-Silicon)模擬
(參考原文:Pre-silicon simulation and validation of OpenBMC + UEFI on Neoverse RD-V3;本文中文版由作者之一沈綸銘校閱)
- 【Arm的AI世界】運算平台開發者必看:無須硬體也能進行OpenBMC+UEFI模擬與驗證! - 2026/04/09
- 【Arm的AI世界】運用ExecuTorch與Arm SME2加速裝置端機器學習推論 - 2026/03/18
- 【Arm的AI世界】重新思考CPU在AI中的角色:在DGX Spark上實作實用的RAG - 2026/02/12
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!


