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