|

【Arm的AI世界】運算平台開發者必看:無須硬體也能進行OpenBMC+UEFI模擬與驗證!

   

作者:沈綸銘(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。

沒有實體硬體仍可驗證OpenBMCUEFI

 這個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;本文中文版由作者之一沈綸銘校閱)

 

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: Arm作者群

來自各方的Arm開發者社群專家。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *