Difference between revisions of "Compiling Firmware"

From RCS Wiki
Jump to navigation Jump to search
Line 29: Line 29:
  
  
At this point, you will want to connect two SSH sessions to OpenBMC.
+
At this point, you should connect two SSH sessions to OpenBMC.
In one session, run the following to display the console during bootup:
+
In the first session, run the following to display the console during bootup:
 
<pre>obmc-console-client</pre>
 
<pre>obmc-console-client</pre>
 +
The console log will be useful in debugging any issues with the firmware that could occur.
  
On the BMC, ensure the system is off by running obmcutil. You should see the following:
+
In the second BMC session, ensure the system is off by running obmcutil. You should see the following:
 
<pre>root@talos:~# obmcutil state
 
<pre>root@talos:~# obmcutil state
 
CurrentBMCState    : xyz.openbmc_project.State.BMC.BMCState.Ready
 
CurrentBMCState    : xyz.openbmc_project.State.BMC.BMCState.Ready

Revision as of 18:28, 15 April 2018

The following steps can be used to compile and update the firmware on Talos™ II-based solutions. It's maintained by both Raptor CS and community members.

Requirements

  • At least 25GB of free hard drive space
  • 16GB of free RAM

Grabbing the sources

Raptor CS maintains a public git repository containing the complete source code for the firmware. To download the source code:

git clone --recursive https://git.raptorcs.com/git/talos-op-build

Building the firmware

Before building the firmware, all needed support packages must be installed. Please see the README.md file for directions on installing the needed packages.

Once the packages are installed, the firmware can be build using the following commands:

cd talos-op-build
. op-build-env
op-build talos_defconfig
op-build

To rebuild an individual package (such as hostboot) and recreate the pnor image, the following can be run:

op-build hostboot-rebuild openpower-pnor-rebuild

Updating the firmware

Copy the firmware to the BMC

scp ./output/images/talos.pnor root@<talos-openbmc>:/tmp/


At this point, you should connect two SSH sessions to OpenBMC. In the first session, run the following to display the console during bootup:

obmc-console-client

The console log will be useful in debugging any issues with the firmware that could occur.

In the second BMC session, ensure the system is off by running obmcutil. You should see the following:

root@talos:~# obmcutil state
CurrentBMCState     : xyz.openbmc_project.State.BMC.BMCState.Ready
CurrentPowerState   : xyz.openbmc_project.State.Chassis.PowerState.Off
CurrentHostState    : xyz.openbmc_project.State.Host.HostState.Off

The HostState must be Off before continuing with the procedure. If the HostState is not Off, please turn off the machine:

obmcutil chassisoff

Once off, perform the update:

pflash -E -p /tmp/talos.pnor

Start the machine:

obmcutil poweron

Note: the machine may reboot multiple times after the initial flash.

Troubleshooting

SBE_MASTER_VERSION_DOWNLEVEL

If you see the following message reported in the console, then the SBE update process did not work as expected:

 16.74709|Error reported by sbe (0x2200) PLID 0x90000008
 16.74823|  SBE Image Version Miscompare with Master Target
 16.74824|  ModuleId   0x0d SBE_MASTER_VERSION_COMPARE
 16.74825|  ReasonCode 0x2215 SBE_MASTER_VERSION_DOWNLEVEL
 16.74826|  UserData1  Master Target HUID : 0x0000000000050000
 16.74826|  UserData2  Master Target Loop Index : 0x0000000000000000

The machine needs to be reset to finish the update proceedure using the following:

obmcutil chassisoff
systemctl stop xyz.openbmc_project.State.Host.service
systemctl start xyz.openbmc_project.State.Host.service
obmcutil poweron

The update should now complete as expected.

A bug report is open[1] to track this issue.

internal compiler error: Killed

Building the hostboot source code requires a large amount of ram. If your machine runs out, you may see an error similar ot the following:

powerpc64le-buildroot-linux-gnu-g++.br_real: internal compiler error: Killed (program cc1plus)

To continue you have a few options:

  • Reduce the number of parallel jobs being run by appending -j<num> to you build command line
op-build -j4
  • Increase the swap space
  • Install additional RAM