OpenBMC 層與包


OpenBMC 層與包

我的博客

首先構建 OpenBMC 系統

首先克隆 OpenBMC倉庫 后,進入克隆的倉庫:

cd openbmc

執行 ls 命令,可以看到許多的層,比如:

 meta-ibm     meta-inventec       meta-phosphor      meta-security

這些層,有的是其他層的鏈接文件,有的是單獨的層,有的層內部包含更加細分的層,執行推薦動作 . setup romulus,腳本自動執行配置環境變量,建立工作目錄,拷貝一些配置文件等動作,且自動切換到工作目錄:

arv:~/openbmc/openbmc/build/romulus$

因為執行完 . setup romulus 命令后,bitbakedevtool 工具路徑已經被添加到環境變量中了,此時可以在當前目錄下使用 bitbakedevtool工具,因為剛建立好工作目錄,其中還沒有代碼,因此我們需要先執行一下默認的 romulus 工程的編譯動作,先看一下其中的信息,執行如下命令:

bitbake obmc-phosphor-image

等待系統慢慢編譯,一般8核i7設備在一個小時之內能夠完成整個固件編譯,如果配置較低,但是依舊滿足 OpenBMC 的最低環境要求,可能需要兩個小時,甚至更長的時間。

查看目標固件的相關信息

假設當前目錄是在 ~/openbmc/openbmc/build/romulus,在這個目錄下執行 cat conf/bblayers.conf,將有如下信息展示:

BBLAYERS ?= " \
  /home/arv/openbmc/openbmc/meta \
  /home/arv/openbmc/openbmc/meta-openembedded/meta-oe \
  /home/arv/openbmc/openbmc/meta-openembedded/meta-networking \
  /home/arv/openbmc/openbmc/meta-openembedded/meta-perl \
  /home/arv/openbmc/openbmc/meta-openembedded/meta-python \
  /home/arv/openbmc/openbmc/meta-security \
  /home/arv/openbmc/openbmc/meta-phosphor \
  /home/arv/openbmc/openbmc/meta-aspeed \
  /home/arv/openbmc/openbmc/meta-openpower \
  /home/arv/openbmc/openbmc/meta-ibm/meta-romulus \
  "

在這個打印內容中,BBLAYERS 中的內容都是以絕對路徑展示的生成 romulus 這個固件依賴的層。

食譜

我們在前面已經通過 . setup romulus 配置過環境了,因此我們可以在當前路徑下使用 bitbakedevtool工具,執行如下命令:

bitbake -g obmc-phosphor-image

bitbake 解析完畢元數據之后,會在當前目錄下生成 pn-buildlist 以及 task-depends.dot 文件,其中 task-depends.dot 中為依賴圖,這個我們暫時先不關注,我們主要關注 pn-buildlist 文件,執行命令:

cat pn-buildlist | grep curl

會打印如下內容:

curl-native
curlpp
curl

可以看到,curl 是生成 obmc-phosphor-image 依賴的 package,或者說是 recipe,這個關系有點混淆我暫時也不懂,留待后面補充。
如果我們執行:

bitbake -g curl

將會刷新當前的 pn-buildlist 文件,此時這個文件將是安裝 curl 所依賴的包,具體內容不再展開。

查看支持的食譜

首先我們使用默認的 romulusobmc-phosphor-imagepn-buildlist,查看如下內容:

cat pn-buildlist | grep ipmitool

可以看到,編譯默認的 romulus 固件,並沒有使用 ipmitool 工具,這也可以在我們最終生成的固件中看出來。
當前的 OpenBMC 框架其實是支持 ipmitool 工具的,我們使用如下的命令,將當前支持的食譜 recipe 輸出到一個文件中:

bitbake-layers --help
bitbake-layers show-recipes >> xdd_recipe.log
cat xdd_recipe.log | grep ipmitool

可以看到如下的輸出:

ipmitool:

它其實是位於 meta-openembedded/meta-oe/recipes-kernel/ipmitool 下,因此,只需要在編譯固件前,修改配置文件,添加額外的安裝包就可以將 ipmitool 集成到最終生成的固件中了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM