xref: /openbmc/openbmc/README.md (revision 09696fc3)
1# OpenBMC
2
3[![Build Status](https://openpower.xyz/buildStatus/icon?job=openbmc-build)](https://openpower.xyz/job/openbmc-build/)
4
5OpenBMC is a Linux distribution for management controllers used in devices such
6as servers, top of rack switches or RAID appliances. It uses
7[Yocto](https://www.yoctoproject.org/),
8[OpenEmbedded](https://www.openembedded.org/wiki/Main_Page),
9[systemd](https://www.freedesktop.org/wiki/Software/systemd/), and
10[D-Bus](https://www.freedesktop.org/wiki/Software/dbus/) to allow easy
11customization for your platform.
12
13## Setting up your OpenBMC project
14
15### 1) Prerequisite
16- Ubuntu 14.04
17
18```
19sudo apt-get install -y git build-essential libsdl1.2-dev texinfo gawk chrpath diffstat \
20    zstd pigz
21```
22
23- Fedora 28
24
25```
26sudo dnf install -y git patch diffstat texinfo chrpath SDL-devel bitbake \
27    rpcgen perl-Thread-Queue perl-bignum perl-Crypt-OpenSSL-Bignum
28sudo dnf groupinstall "C Development Tools and Libraries"
29```
30### 2) Download the source
31```
32git clone git@github.com:openbmc/openbmc.git
33cd openbmc
34```
35
36### 3) Target your hardware
37Any build requires an environment set up according to your hardware target.
38There is a special script in the root of this repository that can be used
39to configure the environment as needed. The script is called `setup` and
40takes the name of your hardware target as an argument.
41
42The script needs to be sourced while in the top directory of the OpenBMC
43repository clone, and, if run without arguments, will display the list
44of supported hardware targets, see the following example:
45
46```
47$ . setup <machine> [build_dir]
48Target machine must be specified. Use one of:
49
50bletchley               gsj                     romulus
51dl360poc                kudo                    s2600wf
52e3c246d4i               mihawk                  swift
53ethanolx                mtjade                  tiogapass
54evb-ast2500             nicole                  transformers
55evb-ast2600             olympus-nuvoton         witherspoon
56evb-npcm750             on5263m5                witherspoon-tacoma
57f0b                     p10bmc                  x11spi
58fp5280g2                palmetto                yosemitev2
59g220a                   qemuarm                 zaius
60gbs                     quanta-q71l
61```
62
63Once you know the target (e.g. romulus), source the `setup` script as follows:
64
65```
66. setup romulus
67```
68
69### 4) Build
70
71```
72bitbake obmc-phosphor-image
73```
74
75Additional details can be found in the [docs](https://github.com/openbmc/docs)
76repository.
77
78## OpenBMC Development
79
80The OpenBMC community maintains a set of tutorials new users can go through
81to get up to speed on OpenBMC development out
82[here](https://github.com/openbmc/docs/blob/master/development/README.md)
83
84## Build Validation and Testing
85Commits submitted by members of the OpenBMC GitHub community are compiled and
86tested via our [Jenkins](https://jenkins.openbmc.org/) server. Commits are run
87through two levels of testing.  At the repository level the makefile `make
88check` directive is run.  At the system level, the commit is built into a
89firmware image and run with an arm-softmmu QEMU model against a barrage of
90[CI tests](https://openpower.xyz/job/openbmc-test-qemu-ci/).
91
92Commits submitted by non-members do not automatically proceed through CI
93testing. After visual inspection of the commit, a CI run can be manually
94performed by the reviewer.
95
96Automated testing against the QEMU model along with supported systems are
97performed.  The OpenBMC project uses the
98[Robot Framework](http://robotframework.org/) for all automation.  Our
99complete test repository can be found
100[here](https://github.com/openbmc/openbmc-test-automation).
101
102## Submitting Patches
103Support of additional hardware and software packages is always welcome.
104Please follow the [contributing guidelines](https://github.com/openbmc/docs/blob/master/CONTRIBUTING.md)
105when making a submission.  It is expected that contributions contain test
106cases.
107
108## Bug Reporting
109[Issues](https://github.com/openbmc/openbmc/issues) are managed on
110GitHub.  It is recommended you search through the issues before opening
111a new one.
112
113## Questions
114
115First, please do a search on the internet. There's a good chance your question
116has already been asked.
117
118For general questions, please use the openbmc tag on
119[Stack Overflow](https://stackoverflow.com/questions/tagged/openbmc).
120Please review the [discussion](https://meta.stackexchange.com/questions/272956/a-new-code-license-the-mit-this-time-with-attribution-required?cb=1)
121on Stack Overflow licensing before posting any code.
122
123For technical discussions, please see [contact info](#contact) below for
124Discord and mailing list information. Please don't file an issue to ask a
125question. You'll get faster results by using the mailing list or Discord.
126
127## Features of OpenBMC
128
129**Feature List**
130* Host management: Power, Cooling, LEDs, Inventory, Events, Watchdog
131* Full IPMI 2.0 Compliance with DCMI
132* Code Update Support for multiple BMC/BIOS images
133* Web-based user interface
134* REST interfaces
135* D-Bus based interfaces
136* SSH based SOL
137* Remote KVM
138* Hardware Simulation
139* Automated Testing
140* User management
141* Virtual media
142
143**Features In Progress**
144* OpenCompute Redfish Compliance
145* Verified Boot
146
147**Features Requested but need help**
148* OpenBMC performance monitoring
149
150
151## Finding out more
152
153Dive deeper into OpenBMC by opening the
154[docs](https://github.com/openbmc/docs) repository.
155
156## Technical Steering Committee
157
158The Technical Steering Committee (TSC) guides the project. Members are:
159
160 * Roxanne Clarke, IBM
161 * Nancy Yuen, Google
162 * Sai Dasari, Facebook
163 * Terry Duncan, Intel
164 * Sagar Dharia, Microsoft
165 * Samer El-Haj-Mahmoud, Arm
166
167## Contact
168- Mail: openbmc@lists.ozlabs.org [https://lists.ozlabs.org/listinfo/openbmc](https://lists.ozlabs.org/listinfo/openbmc)
169- Discord: https://discord.gg/69Km47zH98
170
171