Add TARGET_MACHINE to /etc/os-release

Joseph Reynolds joseph-reynolds at
Sat Nov 17 04:30:34 AEDT 2018

> Send openbmc mailing list submissions to
> 	openbmc at

Proposal to add TARGET_MACHINE to /etc/os-release.

In an OpenBMC image, the /etc/os-release file includes distro 
("openbmc-phosphor") and version (as a git tag or commit).  It should 
also include the target machine (the kind of device the OpenBMC image is 
intended to control).  This is needed to be able to track the image back 
to its source code: the distro and version indicate the exact source 
code that was used, and the target says which Bitbake layer 
configuration within that source was used.

Specifically, the proposal is to enhance the generated /etc/os-release 
file with a new OS identification parameter like:
where MACHINE="romulus", for example.

All OpenBMC images should define this os-release parameter.

Proposed documentation for the new parameter: Indicates the kind of 
device the OpenBMC image is targeted to control.

... tl;dr details follow ... snip ...

The MACHINE is set in 
openbmc/meta-COMPANY/meta-MACHINE/conf/local.conf.sample.  (This is 
where TEMPLATECONF points to.)

Note MACHINE is not guaranteed to be unique across all future OpenBMC 
layer configurations.  (That is, meta-A/meta-B/conf and 
meta-X/meta-Y/conf may inadvertently define the same machine name.) To 
guarantee uniqueness, an alternate design would be to use the 
TEMPLATECONF parameter as the machine name. (e.g., 
"meta-ibm/meta-romulus/conf").  In practice I expect the machine name 
will be sufficiently unique: as unique as different company's brand and 
model names.

The manual page for "os-release" recommends prefixing the parameter name 
with the distro name.  Ideas for alternate parameter names are welcome 
("OBMC_TARGET_HARDWARE" anyone?).  See

The os-release file is generated by the and 
os-release.bbappend recipes.

More information about the openbmc mailing list