entity-manager主體流程 該軟體包分為兩部分:FruDevoce EntityManager
FruDevoce主要功能是讀取i2c挂載的eeprom中FRU資料,更新到dbus上
EntityManager主要功能判斷目前的裝置是否有相應的配置。如果有就将讀取的資料和配置比對并更新到dbus上
1. Frudevice 【openbmc之entity-manager】 FruDevice首先會檢索i2c裝置是否存在 注冊“ReScan ReScanBus GetRawFru WriteFru”, phosphor-ipmi-host中調用了後兩個 讀取資料一:檢索并拼接出/dev/sys/i2c/device/i2c-/2-/eeprom路徑,然後讀取出fru資料 讀取資料二:會在0x03-0x77範圍内(第三步的排除)在進行檢索,然後讀取i2c裝置,擷取fru資料 讀取資料三:目錄“/etc/fru/baseboard.fru.bin”讀取fru資訊 這三次資料讀取都會拼接在同一個map中 dbus資料解析與更新 2.EntityManager 【openbmc之entity-manager】 EntityManager是一個服務其他應用程式的,功能很全面,我隻記錄大概流程
先定義出systemConfiguration,用來儲存解析後的json資料 檢索os-release檔案和version檔案hash值,确認是否首次加載 周遊/usr/share/entity-manager/configuration目錄下的所有json檔案 解析Probe資料為interface和fru資料,根據interface核對fru資料是否正确 接下來會生成hash值,再将其他模闆資料指派.然後指派給systemConfiguration 此時會判斷_passed值,如果為true,則會将目前的資料儲存在執行一遍 儲存好systemConfiguration後, 會寫入/var/configuration/system.json檔案中,用于下一次出現資料更新時對比 更新資料到dbus 3. 疑惑點 EntityManager中的_passde感覺很奇怪,大可不必