u-root on the BMC
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.





u-bmc uses u-root to create a Linux OS distribution that is fully open-source.

u-bmc borrows and contributes to OpenBMC which has similar high-level goals, but chooses to pursue industry-standard compliance. Where OpenBMC uses IPMI, u-bmc uses gRPC.


BMC software has historically been known to be insecure. There is no inherent reason for that. u-bmc sets out to improve this by offering an alternative built on modern technologies.


u-bmc is still in experimental stage and is currently only supporting BMCs based on ASPEED AST2400. Other BMC SOCs are planned, and if you want to contribute let us know.

Currently the supported boards are:

  • Open Compute Project: Quanta F06 Leopard DDR3

Planned boards are:

  • Open Compute Project: Quanta F20 Yosemite

Do you want to become a contributor of a board? Let us know!


To give you some sense of what we want to create:

  • All function exported over gRPC like:
    • Serial-over-LAN
    • Sensor data
    • iKVM
    • Updating BIOS
    • POST information
  • Implementation of OpenMetrics for Prometheus integration for sensors
  • Offer SSH server for on-platform debugging
    • Support SSH CA-signed certificates to avoid having to upload a bunch of certs
  • USB device emulation
    • Must have: USB storage from image
    • Cool to have: USB ethernet to host, replaces KCS IPMI interface.
    • Cool to have: USB graphics card + mouse + keyboard for KVM



sudo apt-get install gcc-arm-none-eabi mtd-utils u-boot-tools golang-1.10 fakeroot flex bison

# Until u-root vendoring is working properly, also grab:
go get -u github.com/u-root/u-bmc/cmd/uinit


go get github.com/u-root/u-bmc
cd ~/go/src/github.com/u-root/u-bmc
git submodule init && git submodule update


# SSH ECDSA public keys does not work for now
cp ~/.ssh/id_rsa.pub ssh_keys.pub
fakeroot make

If you have qemu-system-arm installed:

make sim

If you're using a supported platform and want to try it on your hardware you can use socflash_x64 provided by ASPEED like this:

echo This is extremely likely to break things as u-bmc is still experimental
sudo ./socflash_x64 of=bmc-backup.img if=flash.img lpcport=0x2e option=gl

Updating Dependencies

NOTE: Due to a bug in u-root vendoring is temporarily disabled

Latest released version of dep is required:
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure



Since this is an early experiment if this is at all interesting for you or your company, do reach out in our Slack channel: