openBmc Code Structure

Joseph Reynolds jrey at linux.ibm.com
Wed Mar 2 07:12:49 AEDT 2022


On 2/25/22 7:31 AM, Mike Jones wrote:
> Sandeep, I think that is like asking what the source code structure of 
> a linux distribution is. Obmc is built from a linux kernel and many 
> application, each with it’s own structure. I’m still learning OBMC 
> myself, but I would look at the obmc ZjQcmQRYFpfptBannerStart
> This Message Is From an External Sender
> This message came from outside your organization.
> ZjQcmQRYFpfptBannerEnd
> Sandeep,
>
> I think that is like asking what the source code structure of a linux 
> distribution is. Obmc is built from a linux kernel and many 
> application, each with it’s own structure.
>
> I’m still learning OBMC myself, but I would look at the obmc design 
> docs and learn its architecture, which is basically a dbus system with 
> services, and to the outside world, Redfish. Yocto is the glue that 
> makes a complete image.
>
> Mike
>
>> On Feb 24, 2022, at 11:42 PM, Sandeep Kumar <sandeep.pkumar at tcs.com> 
>> wrote:
>>
>> Hi,
>> I have just started looking into the openBmc source code. Could 
>> anyone explain the source code structure for openBMC?

Here is how I explain its most basic structure:
OpenBMC has a complex source code structure.  It uses the bitbake build 
system which runs on your build host and processes recipes to produce 
the firmware image.  In this sense, the OpenBMC source code consists of 
a set of recipes.  A typical recipe tells bitbake to fetch a package, 
unpack, patch, and configure it, and build it into the firmware image.  
In this sense, the OpenBMC source code consists of the recipes actually 
used together with the packages they fetch.  Naturally, the exact source 
code used in any given build depends on which version you are building 
from (as daily changes are made to the master branch) and which platform 
you are building for.
* The downstream flow for the recipes is: OpenEmbedded --> Yocto/Poky 
--> OpenBMC --> IBM product forks.  (Details for IBM product forks are 
below.)  Each project along the stream customizes the recipes and adds 
new recipes.
* The OpenEmbedded (OE) project is seminal.  It provides the bitbake 
tool and recipes for many thousands of open source projects.
* The Yocto/Poky project is downstream from OE.  It organizes the 
recipes into a Linux distribution suitable for embedded systems.
* The OpenBMC project (https://github.com/openbmc/) is downstream from 
Poky.  It adds BMC's specialized functions in bitbake layers:
     - meta-phosphor (and other layers) - provide common/core BMC function
     - meta-openpower - adds support for OpenPOWER
     - meta-ibm - adds support common to IBM systems
     - meta-witherspoon (as an example) - adds support for specific host 
machines

Are you more interested in the Yocto/bitbake structure, or interested in 
the OpenBMC customization layers?

Joseph

>> Thanks,
>> Sandeep.
>>
>> =====-----=====-----=====
>> Notice: The information contained in this e-mail
>> message and/or attachments to it may contain
>> confidential or privileged information. If you are
>> not the intended recipient, any dissemination, use,
>> review, distribution, printing or copying of the
>> information contained in this e-mail message
>> and/or attachments to it are strictly prohibited. If
>> you have received this communication in error,
>> please notify us by reply e-mail or telephone and
>> immediately and permanently delete the message
>> and any attachments. Thank you
>>
>



More information about the openbmc mailing list