How to build openBMC binary for Barreleye

Barreleye is the openPOWER server that Rackspace helped build.  It runs openBMC for it’s management.

In my work at Rackspace, I often build custom openBMC builds for the sake of testing stability / new features.

Here’s how you can build your own openBMC binary for Barreleye.

If you are building on Ubuntu you need to install following packages before you build openBMC:

sudo apt-get install -y git build-essential libsdl1.2-dev texinfo gawk chrpath diffstat

If you are building on Fedora 23 you need to install the following packages before you build openBMC

sudo dnf install -y git patch diffstat texinfo chrpath SDL-devel bitbake
sudo dnf groupinstall "C Development Tools and Libraries"

 

Build Process:

First, clone the openBMC repository. If you are cloning form master this is how you’d do it:

git clone https://github.com/openbmc/openbmc

Then run the following commands:

cd openbmc
TEMPLATECONF=meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/conf . oe-init-build-env
bitbake obmc-phosphor-image

 

If you run it a laptop with decent power, it takes about 2-3 hours. If you run it on a Barreleye (this is where I make you jealous) it takes about 35 minutes to build the binary.

The built binaries are in openbmc/build/tmp/deploy/images/barreleye location

In my case I use the barreleye-20160818194255.all.tar image and untar it to get an file named ‘image-bmc’ about 32MB in size .

You can  use a flash programmer to flash your BMC chip with this new version or use the openBMC online upgrade process.

If you wanna rebuild your binary, then you will have to first clear your config before you run above 3 commands again.

This is the command to clear the config:

rm -rf build/conf

Comment here for any issues you run into, while building the binary or if you want a link to a latest binary.

 

How to build openBMC binary for Barreleye

How to update Mellanox Firmware on OpenPower Servers

Mellanox Technologies being a openPOWER foundation member, has worked towards providing support towards Little Indian POWER based distros.

Mellanox supports the their cards (has official drivers) following ppc64LE OS:

Ubuntu, Fedora, SLES, PowerKVM, RHEL and CentOS

If you have multiple mellanox adapters in the same box, it can get tricky to find the exact device ID and flash the firmware to adapter.

Step1 : Grab the model number (PSID) of Mellanox Nic you have in your server

a) mst start

b) mst status 

c) mstflint -d <PCI-device-id-of-adapter> q

where PCI device id can be gotten from command:   b)  and is of the example format: 0002:01:00.0

d) Find the PSID   (Format of PSID : MT_1270116023)

Output from c) contain the PSID

 

Step2: 

Find and download the latest firmware for the adapter in below webpage using above found PSID

http://www.mellanox.com/page/firmware_download

Step3:

Unzip the firmware binary image (.zip file) from Step 2

Burn the FW image. Enter:

flint -d <device_name> -i <binary image> burn

Exact device name can be gotten from: mst status

Format of device name: /dev/mst/mt<dev_id>_pci{_cr0|conf0}

Either cro or conf0 string will work in above command.

Step4:

reboot

Step5:

check if your firmware is updated with below command

ibstat

How to update Mellanox Firmware on OpenPower Servers

OS support for Linux on Power (Little Endian)

OpenPOWER movement is gaining pace. Linux community has been overwhelmingly supportive of Little Indian port of Power (PPC64LE).  As a result, most of the leading Linux server distributions have built server images in the past couple of years.

Through this post I want to aggregate the installer links to server install images for PPC64LE. Where available I also listed cloud images used to boot up VM’s / (OpenStack guests).

OS Hypervisor Install image Guest Installer Image
Fedora 23 Refer to Link Link
Fedora 22 Refer to Link Link
Fedora 24 Refer to Link Link
Ubuntu 15.10 Refer to Link Link
Ubuntu 15.04 Refer to Link Link
Ubuntu  14.04 LTS Refer to Link Link
Centos 7.2 Refer to Link NA (But you can use init from RHEL)
OpenSUSE 13.2 Refer to Link Link
Debian 8 Refer to Link NA
PowerKVM 3.1 Refer to Link NA
Ubuntu 16.04 Refer to Link Link
RHEL 7.2 Refer to Link (Needs Login) Link
SLES 12 Refer to Link (Needs Login) Link

Hopefully this table helps the audience who are just getting started on power servers, to finish a quick install.

OS support for Linux on Power (Little Endian)

openBMC Usage Basics

OpenBMC is an open software framework to build a complete Linux image for a Board Management Controller (BMC)

I expect increasing number of openPOWER based servers moving towards openBMC vs conventional and proprietary IPMI implementations.

In my effort to familiarize readers with openPOWER servers, I wanted to write about some basic commands on using openBMC, specifically on how to control host via openBMC. 

Once you ssh into openBMC Linux:

To power off the host from BMC:

obmcutil poweroff

 

To power on the host from BMC

obmcutil poweron

 

To get remote host console within the BMC SSH Session

obmc-console-client

 

If you are debugging something on the host, I suggest you have 2 parallel ssh sessions to the BMC and use one to control power / look at logs and the other to look at host console.

To get remote host console directly without logging into the BMC:

ssh -p2200 root@<BMC IP>

openBMC Usage Basics

Update Model /Serial number of OpenPOWER server

I’ve found the necessity of updating the Model / Serial numbers of our openPOWER servers at Rackspace. And here’s how I did it:

Using LC system VPD update tool
The VPD update tool is used to make VPD modifications to POWER Systems from the host OS of the machine.

For Ubuntu distributions:
ophtk-lht_20160128-1.ub14.04_ppc64el.deb

For RHEL distributions:
ophtk-lht-20160128-1.el7.ppc64le.rpm

Ubuntu
  • To install, run the following:
  • apt-get install libxml2-utils
  • sudo dpkg -i <deb downloaded above>
  • If you encounter a dependency error when installing the tool, run the following to install dependencies and complete the install:
  • sudo apt-get -f install
RHEL
  • To install, run the following as root:
  • yum install ./<rpm downloaded above>
Execution
  • To update the machine serial number:
  • sudo /opt/openpower/lht/bin/updateserial <0000000000000000>
  • Note: <0000000000000000> to be replaced with your Serial Number
  • To update the machine model:
  • sudo /opt/openpower/lht/bin/updatemodel <8335-GTA>
  • Note: <8335-GTA> to be replaced with your model

 

Image