Initial commit
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
# OpenBMC
|
||||
|
||||
[](https://jenkins.openbmc.org/job/latest-master/)
|
||||
|
||||
OpenBMC is a Linux distribution for management controllers used in devices such
|
||||
as servers, top of rack switches or RAID appliances. It uses
|
||||
[Yocto](https://www.yoctoproject.org/),
|
||||
[OpenEmbedded](https://www.openembedded.org/wiki/Main_Page),
|
||||
[systemd](https://www.freedesktop.org/wiki/Software/systemd/), and
|
||||
[D-Bus](https://www.freedesktop.org/wiki/Software/dbus/) to allow easy
|
||||
customization for your platform.
|
||||
|
||||
## Setting up your OpenBMC project
|
||||
|
||||
### 1) Prerequisite
|
||||
|
||||
See the
|
||||
[Yocto documentation](https://docs.yoctoproject.org/ref-manual/system-requirements.html#required-packages-for-the-build-host)
|
||||
for the latest requirements
|
||||
|
||||
#### Ubuntu
|
||||
|
||||
```sh
|
||||
sudo apt install git python3-distutils gcc g++ make file wget \
|
||||
gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2
|
||||
```
|
||||
|
||||
#### Fedora
|
||||
|
||||
```sh
|
||||
sudo dnf install git python3 gcc g++ gawk which bzip2 chrpath cpio \
|
||||
hostname file diffutils diffstat lz4 wget zstd rpcgen patch
|
||||
```
|
||||
|
||||
### 2) Download the source
|
||||
|
||||
```sh
|
||||
git clone https://github.com/openbmc/openbmc
|
||||
cd openbmc
|
||||
```
|
||||
|
||||
### 3) Target your hardware
|
||||
|
||||
Any build requires an environment set up according to your hardware target.
|
||||
There is a special script in the root of this repository that can be used to
|
||||
configure the environment as needed. The script is called `setup` and takes the
|
||||
name of your hardware target as an argument.
|
||||
|
||||
The script needs to be sourced while in the top directory of the OpenBMC
|
||||
repository clone, and, if run without arguments, will display the list of
|
||||
supported hardware targets, see the following example:
|
||||
|
||||
```text
|
||||
$ . setup <machine> [build_dir]
|
||||
Target machine must be specified. Use one of:
|
||||
|
||||
bletchley mori s8036
|
||||
dl360poc mtjade swift
|
||||
e3c246d4i mtmitchell tatlin-archive-x86
|
||||
ethanolx nicole tiogapass
|
||||
evb-ast2500 olympus-nuvoton transformers
|
||||
evb-ast2600 on5263m5 vegman-n110
|
||||
evb-npcm750 p10bmc vegman-rx20
|
||||
f0b palmetto vegman-sx20
|
||||
fp5280g2 qcom-dc-scm-v1 witherspoon
|
||||
g220a quanta-q71l witherspoon-tacoma
|
||||
gbs romed8hm3 x11spi
|
||||
greatlakes romulus yosemitev2
|
||||
gsj s2600wf zaius
|
||||
kudo s6q
|
||||
lannister s7106
|
||||
```
|
||||
|
||||
Once you know the target (e.g. romulus), source the `setup` script as follows:
|
||||
|
||||
```sh
|
||||
. setup romulus
|
||||
```
|
||||
|
||||
### 4) Build
|
||||
|
||||
```sh
|
||||
bitbake obmc-phosphor-image
|
||||
```
|
||||
|
||||
Additional details can be found in the [docs](https://github.com/openbmc/docs)
|
||||
repository.
|
||||
|
||||
## OpenBMC Development
|
||||
|
||||
The OpenBMC community maintains a set of tutorials new users can go through to
|
||||
get up to speed on OpenBMC development out
|
||||
[here](https://github.com/openbmc/docs/blob/master/development/README.md)
|
||||
|
||||
## Build Validation and Testing
|
||||
|
||||
Commits submitted by members of the OpenBMC GitHub community are compiled and
|
||||
tested via our [Jenkins](https://jenkins.openbmc.org/) server. Commits are run
|
||||
through two levels of testing. At the repository level the makefile `make check`
|
||||
directive is run. At the system level, the commit is built into a firmware image
|
||||
and run with an arm-softmmu QEMU model against a barrage of
|
||||
[CI tests](https://jenkins.openbmc.org/job/CI-MISC/job/run-ci-in-qemu/).
|
||||
|
||||
Commits submitted by non-members do not automatically proceed through CI
|
||||
testing. After visual inspection of the commit, a CI run can be manually
|
||||
performed by the reviewer.
|
||||
|
||||
Automated testing against the QEMU model along with supported systems are
|
||||
performed. The OpenBMC project uses the
|
||||
[Robot Framework](http://robotframework.org/) for all automation. Our complete
|
||||
test repository can be found
|
||||
[here](https://github.com/openbmc/openbmc-test-automation).
|
||||
|
||||
## Submitting Patches
|
||||
|
||||
Support of additional hardware and software packages is always welcome. Please
|
||||
follow the
|
||||
[contributing guidelines](https://github.com/openbmc/docs/blob/master/CONTRIBUTING.md)
|
||||
when making a submission. It is expected that contributions contain test cases.
|
||||
|
||||
## Bug Reporting
|
||||
|
||||
[Issues](https://github.com/openbmc/openbmc/issues) are managed on GitHub. It is
|
||||
recommended you search through the issues before opening a new one.
|
||||
|
||||
## Questions
|
||||
|
||||
First, please do a search on the internet. There's a good chance your question
|
||||
has already been asked.
|
||||
|
||||
For general questions, please use the openbmc tag on
|
||||
[Stack Overflow](https://stackoverflow.com/questions/tagged/openbmc). Please
|
||||
review the
|
||||
[discussion](https://meta.stackexchange.com/questions/272956/a-new-code-license-the-mit-this-time-with-attribution-required?cb=1)
|
||||
on Stack Overflow licensing before posting any code.
|
||||
|
||||
For technical discussions, please see [contact info](#contact) below for Discord
|
||||
and mailing list information. Please don't file an issue to ask a question.
|
||||
You'll get faster results by using the mailing list or Discord.
|
||||
|
||||
### Will OpenBMC run on my Acme Server Corp. XYZ5000 motherboard?
|
||||
|
||||
This is a common question, particularly regarding boards from popular COTS
|
||||
(commercial off-the-shelf) vendors such as Supermicro and ASRock. You can see
|
||||
the list of supported boards by running `. setup` (with no further arguments) in
|
||||
the root of the OpenBMC source tree. Most of the platforms supported by OpenBMC
|
||||
are specialized servers operated by companies running large datacenters, but
|
||||
some more generic COTS servers are supported to varying degrees.
|
||||
|
||||
If your motherboard is not listed in the output of `. setup` it is not currently
|
||||
supported. Porting OpenBMC to a new platform is a non-trivial undertaking,
|
||||
ideally done with the assistance of schematics and other documentation from the
|
||||
manufacturer (it is not completely infeasible to take on a porting effort
|
||||
without documentation via reverse engineering, but it is considerably more
|
||||
difficult, and probably involves a greater risk of hardware damage).
|
||||
|
||||
**However**, even if your motherboard is among those listed in the output of
|
||||
`. setup`, there are two significant caveats to bear in mind. First, not all
|
||||
ports are equally mature -- some platforms are better supported than others, and
|
||||
functionality on some "supported" boards may be fairly limited. Second, support
|
||||
for a motherboard is not the same as support for a complete system -- in
|
||||
particular, fan control is critically dependent on not just the motherboard but
|
||||
also the fans connected to it and the chassis that the board and fans are housed
|
||||
in, both of which can vary dramatically between systems using the same board
|
||||
model. So while you may be able to compile and install an OpenBMC build on your
|
||||
system and get some basic functionality, rough edges (such as your cooling fans
|
||||
running continuously at full throttle) are likely.
|
||||
|
||||
## Features of OpenBMC
|
||||
|
||||
### Feature List
|
||||
|
||||
- Host management: Power, Cooling, LEDs, Inventory, Events, Watchdog
|
||||
- Full IPMI 2.0 Compliance with DCMI
|
||||
- Code Update Support for multiple BMC/BIOS images
|
||||
- Web-based user interface
|
||||
- REST interfaces
|
||||
- D-Bus based interfaces
|
||||
- SSH based SOL
|
||||
- Remote KVM
|
||||
- Hardware Simulation
|
||||
- Automated Testing
|
||||
- User management
|
||||
- Virtual media
|
||||
|
||||
### Features In Progress
|
||||
|
||||
- OpenCompute Redfish Compliance
|
||||
- Verified Boot
|
||||
|
||||
### Features Requested but need help
|
||||
|
||||
- OpenBMC performance monitoring
|
||||
|
||||
## Finding out more
|
||||
|
||||
Dive deeper into OpenBMC by opening the [docs](https://github.com/openbmc/docs)
|
||||
repository.
|
||||
|
||||
## Technical Steering Committee
|
||||
|
||||
The Technical Steering Committee (TSC) guides the project. Members are:
|
||||
|
||||
- Roxanne Clarke, IBM
|
||||
- Nancy Yuen, Google
|
||||
- Patrick Williams, Meta
|
||||
- Terry Duncan, Intel
|
||||
- Sagar Dharia, Microsoft
|
||||
- Samer El-Haj-Mahmoud, Arm
|
||||
|
||||
## Contact
|
||||
|
||||
- Mail: openbmc@lists.ozlabs.org
|
||||
[https://lists.ozlabs.org/listinfo/openbmc](https://lists.ozlabs.org/listinfo/openbmc)
|
||||
- Discord: [https://discord.gg/69Km47zH98](https://discord.gg/69Km47zH98)
|
||||
Reference in New Issue
Block a user