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