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