2023/03/01

建構樹莓派的OpenBMC映像檔

摘要

本文概要記錄建構運行於樹莓派單板電腦上之OpenBMC的映像檔的注意事項。

本文

OpenBMC是一個應用於伺服器ToR(Top of Rack)交換機、或磁碟陣列等設備中使用之管理控制器(management controllers)Linux發行版,其使用了Yocto、OpenEmbedded、systemd、和D-Bus來輕鬆地定製平台。

OpenBMC可以運行於多種平台,包含了樹莓派4代單板電腦。

隨後將使用Windows 10宿主作業系統,安裝VMware Workstation 15 Player虛擬化程式、並於VMware上執行Ubuntu 20.04作業系統。當Ubuntu虛擬機啟動後,便於其上安裝編譯OpenBMC所需的套件,接著再下載OpenBMC的原始碼,隨後將原始碼切換至指定的標籤,透過BitBake執行跨平台編譯完畢後,便將編譯的成果透過Win32DiskImager工具程式寫入SD卡,最後再將該SD卡插入樹莓派進行測試與確認。主要步驟將參考這裡、和這裡

1. 安裝相依套件。 

sudo apt install git python3-distutils gcc g++ make file wget gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2

2. 下載OpenBMC原始碼、並切換至指定的2.8.0標籤。

git clone https://github.com/openbmc/openbmc.git
cd openbmc
git checkout tags/2.8.0

3. 因應樹莓派4代調整快閃記憶體的尺寸。

nano meta-phosphor/classes/image_types_phosphor.bbclass

image_types_phosphor.bbclass

4. 設置建構環境;留意,設置完畢時將自動切換至build目錄。

export TEMPLATECONF=meta-evb/meta-evb-raspberrypi/conf
echo $TEMPLATECONF
source openbmc-env

5. 因應樹莓派4代調整目標機器名稱,另外再調整建構快取的路徑、以及映像檔型態。

sudo mkdir -p /home/yocto/Yocto/sstate-cache-2
sudo chmod a+rw -R /home/yocto/Yocto/sstate-cache-2
sudo mkdir -p /home/yocto/Yocto/downloads-2
sudo chmod a+rw -R /home/yocto/Yocto/downloads-2

cp conf/local.conf conf/local.conf.bk
nano conf/local.conf

local.conf

6. 調整linux-firmware-rpidistro這個recipe;參考這裡以因應RPi-Distro專案當前的設定。

linux-firmware-rpidistro_git.bb

7. 優先執行所有recipe的fetch任務(選配)。

bitbake obmc-phosphor-image --runall=fetch

8. 建構;執行所有recipe的各個任務。

bitbake obmc-phosphor-image

建構完畢的畫面如下。

bitbake obmc-phosphor-image

9. 複製映像檔;建構完成的映像檔擺放於tmp/deploy/images/raspberrypi4/目錄,有著rpi-sdimg的後綴,把該檔案複製到接下來Win32DiskImager工具程式能夠存取的路徑。

ls tmp/deploy/images/raspberrypi4/*rpi-sdimg
10. 於宿主作業系統透過Win32DiskImager工具程式將映像檔寫入SD卡。

Win32DiskImager

11. 將該SD卡插入樹莓派4代進行測試與確認;其中,參照這裡可以得知預設的賬號為root、而對應的密碼為0penBmc

Raspberry Pi 4
完成。
 

參考文獻

https://sourceforge.net/projects/osboxes/files/v/vm/55-U--u/20.04/20.04.4/64bit.7z
https://github.com/openbmc/openbmc/issues/3884
https://github.com/openbmc/openbmc/issues/3812
https://github.com/openbmc/openbmc/blob/2.8.0/meta-evb/meta-evb-raspberrypi/conf/local.conf.sample
https://lore.kernel.org/all/DAA57A92-5A7F-47CE-9DFC-4CB8F2231FCC@gmail.com/T/
https://stackoverflow.com/questions/54078174/bitbake-how-to-only-fetch-the-sources
https://ezgif.com


沒有留言:

張貼留言