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