Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The reliable path is to use a current Ubuntu LTS host (or a Linux virtual machine), install the packages required by OpenBMC and Yocto, clone the OpenBMC source tree, source setup for a supported machine, and build with BitBake. For a first build without a physical BMC, use the Romulus target and its documented QEMU flow. A full image build needs substantial disk and memory, and every build is tied to the hardware target selected during setup.

What an OpenBMC development environment contains

OpenBMC is a Linux distribution for baseboard management controllers (BMCs). You do not compile one universal image: Yocto and BitBake assemble a target-specific firmware image from layers, recipes, configuration, and machine settings. The environment therefore has four parts:

  • A supported Linux host: the official beginner tutorial recommends the latest Ubuntu LTS release for its development virtual machine. A direct Linux installation can also work.
  • Build dependencies: compilers, Git, archive tools, patch utilities, and other packages required by OpenBMC and Yocto.
  • The OpenBMC source tree: this contains the setup script, metadata layers, recipes, and configuration.
  • A selected machine: sourcing setup for a machine configures the environment for that board or emulator before BitBake runs.

If you omit the machine selection, the build is not properly configured. The same host can build different targets, but you must source the setup script for the intended target before each independent build environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a host that matches your goal

The official tutorial is written for programmers who are comfortable with Linux and BMC concepts. Ubuntu is the least-surprising starting point because it is the environment the tutorial recommends and the community uses most often. Other distributions may work, but they are less thoroughly exercised by the core team.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Host option Best fit What to know
Ubuntu LTS directly on hardware Frequent OpenBMC development and maximum build performance Closest to the documented path; no virtual-machine overhead.
Ubuntu LTS in a virtual machine Windows or macOS users, isolated development, or a host that cannot be repartitioned The tutorial names VirtualBox and VMware Workstation Player as possible VM software. Allocate the build resources before starting.
Fedora directly on hardware or in a VM Developers who already standardize on Fedora The repository documents a Fedora package list, but package names and current Yocto requirements can change.
Docker Reproducible or continuous-integration workflows OpenBMC uses Docker in CI, but the beginner development tutorial places Docker outside its scope. Expect to manage mounts, permissions, and persistent build storage yourself.

Windows and macOS are not the native build environments described by the tutorial. Run a supported Linux distribution in a VM instead of trying to make BitBake run directly on the host operating system.

Plan CPU, memory, and storage before installing

For a VM building a complete OpenBMC image, the official development tutorial describes an ideal minimum allocation of eight threads, 16 GB of memory, and a 200 GB virtual hard drive. “Ideal minimum” is planning guidance, not a guarantee for every machine, target, host filesystem, or current source revision. More CPU, memory, and fast storage generally improve responsiveness and reduce contention with the host.

Resource Tutorial guidance Why it matters
CPU 8 threads BitBake runs many tasks concurrently; too few threads lengthen builds and can make a VM feel unresponsive.
Memory 16 GB Parallel compilation and packaging can consume substantial RAM. Leave enough memory for the host OS if using a VM.
Disk 200 GB Source, downloaded archives, shared state, temporary files, and deployed images all accumulate under the build workspace.
Romulus build time 30–120 minutes in the tutorial’s example This is the tutorial’s hardware-dependent estimate, not a universal completion promise or benchmark.

Check available capacity before cloning or building. A nearly full filesystem can fail late, after hours of compilation. In a VM, make the virtual disk large enough from the beginning or confirm that your hypervisor supports safe expansion. Keep the build directory on local, fast storage rather than a slow network share when possible.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install the host prerequisites

The OpenBMC repository README lists the following packages. Yocto’s requirements evolve, so compare the current Yocto requirements with these lists when you create or refresh a host. Distribution package names can differ by release.

Ubuntu

On Ubuntu, refresh package metadata and install the documented prerequisites:

sudo apt update
sudo apt install git gcc g++ make file wget gawk diffstat bzip2 cpio chrpath zstd lz4

The command installs Git, the C and C++ toolchains, build utilities, archive/compression tools, and the text-processing and packaging programs used during a BitBake build. If apt reports that a package name is unavailable, do not substitute a random similarly named package; check the current OpenBMC README and Yocto requirement for your Ubuntu release.

Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Fedora

The README’s Fedora list is:

sudo dnf install git python3 gcc g++ gawk which bzip2 chrpath cpio hostname file diffutils diffstat lz4 wget zstd rpcgen patch

Fedora’s package set includes Python 3, hostname utilities, RPC tooling, and patch support explicitly. A minimal Fedora installation may need additional runtime libraries or development tools as Yocto changes, so treat the README and current Yocto documentation as the authority for a newly released Fedora version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify the basics

  • Run git --version, gcc --version, and python3 --version (where Python 3 is installed) to confirm that the commands resolve.
  • Run df -h in the filesystem that will hold the source and build directories; confirm that the planned workspace has room for a large build.
  • For a VM, confirm that the guest sees the intended number of CPU threads and memory rather than only the host’s totals.
  • Use a normal, non-root account for the source tree and BitBake. Running the build as root can create ownership problems and is not a substitute for missing dependencies.

Clone OpenBMC and inspect supported machines

Clone the upstream repository and enter its root directory:

git clone https://github.com/openbmc/openbmc
cd openbmc

The OpenBMC repository changes over time, so record the revision you use if you need to reproduce a build. The root directory is important: the setup script and the build configuration it creates are expected to be invoked there.

Run the setup script without a machine argument to display the supported hardware targets:

. setup

The leading dot (equivalent to source) matters. Sourcing changes environment variables in your current shell; executing the script as a separate process would not leave those settings available for the following BitBake command.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a machine from the list. A target name is not interchangeable with a product name: it selects machine configuration, layers, kernel choices, device-tree data, and image settings. If you have a physical board, use the machine documented for that board. If you are learning or do not yet have hardware, use romulus, the target used by the official tutorial’s QEMU path.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Configure a target with setup

From the repository root, source the setup script with the selected machine. For the documented emulator example:

. setup romulus

This creates or selects the target’s build directory and exports the environment BitBake needs. A different target follows the same form, replacing romulus with the supported machine name shown by . setup.

  • Source setup again whenever you open a new shell for this build.
  • Do not assume that a previous target remains active after changing directories or starting a new terminal.
  • Keep separate build directories or cleanly reconfigure when working on multiple machines; mixing configuration from different targets can produce confusing results.

If setup reports an unknown target, return to . setup with no argument and select a name from the current list instead of guessing a spelling.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build the OpenBMC image with BitBake

After sourcing the target, start the standard OpenBMC image build:

bitbake obmc-phosphor-image

BitBake resolves recipes and dependencies, downloads source archives, compiles packages, assembles the root filesystem, and writes deployable artifacts. The first build is the expensive one because downloads and shared state are not yet cached. Later builds can be much shorter when you change only a small component, although the exact work depends on what changed.

For the Romulus example, the tutorial describes output under:

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
build/tmp/deploy/images/romulus/

File names and formats in that directory depend on the target and the current metadata. List the directory after a successful build rather than assuming that an image from one machine can boot another:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
find build/tmp/deploy/images/romulus -maxdepth 1 -type f -print

The tutorial’s 30–120 minute estimate applies to its Romulus example and varies with CPU, storage, memory, network downloads, and cache state. A build that appears idle may be waiting on a download or a single long-running task; inspect the BitBake output before interrupting it.

Run the Romulus image in QEMU

QEMU lets you exercise the built image without a physical BMC. Romulus is the tutorial’s default test system and is described there as the system tested for each CI job, making it the most stable example for learning the workflow. QEMU is a development and smoke-test aid, not proof that the image works on your actual board, sensors, buses, or boot firmware.

  1. Complete bitbake obmc-phosphor-image after sourcing . setup romulus.
  2. Confirm that deployable files exist in build/tmp/deploy/images/romulus/.
  3. Use the current Romulus QEMU invocation from the OpenBMC development tutorial. Its kernel, machine, image, and networking arguments are tied to that documented flow and can change as the project evolves; do not substitute a generic QEMU command copied from another target.
  4. Wait for the emulated BMC to finish booting, then query its state from the shell provided by the tutorial.
  5. Run obmcutil state repeatedly until the BMC reports Ready. If it never reaches that state, preserve the QEMU and service logs before changing configuration.

Networking details are target- and invocation-specific. A QEMU guest that boots successfully may still need the documented port forwarding or interface settings before you can reach its web or management services from the host.

Move from full-image builds to component development

A complete image build is the right first milestone because it proves that the host, layers, machine configuration, and toolchain work together. It is not the most efficient loop for every application change. OpenBMC’s developer documentation points from environment setup to a devtool Hello World tutorial, Web UI development, and Gerrit code review.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use devtool modify for an application change

After sourcing the target with . setup <machine>, the Yocto devtool command can extract a recipe’s source into the local BitBake workspace:

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
devtool modify <recipe-name>

Replace <recipe-name> with the recipe you intend to change; identify the exact recipe name from the layer metadata or the Hello World tutorial rather than guessing. Edit the extracted source in the workspace, then build the component through the devtool workflow. This keeps iterative application work separate from the initial task of proving that a full target image can be produced.

Know when to return to a full image build

  • Build the full obmc-phosphor-image when you need a deployable firmware image or have changed machine, image, kernel, or layer configuration.
  • Use the component workflow for focused source edits where the target configuration is unchanged.
  • Before submitting a change, follow the project’s current developer and review guidance; a component that builds in isolation can still fail when integrated into the complete image.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot the failures most likely to block a first build

BitBake reports PermissionError for /proc/self/uid_map on Ubuntu 24.04

The development tutorial warns that Ubuntu 24.04’s default restriction of unprivileged user namespaces under AppArmor can cause BitBake workers to fail while writing to /proc/self/uid_map. This is a host security-policy issue, not evidence that the recipe itself is broken.

Use the sysctl workaround documented in the current OpenBMC development-environment instructions, then retry the build. Apply it narrowly and understand that it changes a system-level security setting; do not generalize the workaround to every Ubuntu release or distribution, and do not disable unrelated security controls. If your organization manages AppArmor or sysctl policy centrally, ask the administrator for an approved equivalent.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The package manager cannot find a prerequisite

Package names vary between distribution releases. First check that the package index is current, then compare the missing item with the current OpenBMC README and Yocto requirements. Avoid copying a package name from an older tutorial without checking its release context. A successful install of a similarly named package does not prove that it supplies the required command.

The build stops with “no target” or an unknown machine

Run . setup from the repository root and select one of the machines it prints. Source the selected target again in the same terminal, then rerun BitBake. A machine name from another OpenBMC branch or product may not exist in the revision you cloned.

The build runs out of disk space

Check the filesystem containing the source and build directories with df -h. Downloads, temporary task data, shared state, and deploy artifacts can all grow during the first build. Free space or move the workspace to a larger local disk before restarting. The tutorial’s 200 GB VM allocation is a planning reference, not a statement that every target consumes exactly that amount.

QEMU starts but the BMC is not ready

Confirm that the image was built for Romulus, that you used the current Romulus invocation, and that the guest has finished booting. Check the console output and service logs supplied by that flow. Run obmcutil state only after the guest is reachable; a host-side networking problem can look like a boot failure even when the guest is still running.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A physical board does not behave like QEMU

QEMU validates the software image and basic services for the emulated target. It does not model every board-specific sensor, GPIO, power controller, flash layout, network switch, or bootloader detail. For hardware work, source the setup script for the board’s supported machine, build that target, and test on the actual platform using its flashing and recovery procedure.

Pick an environment by development objective

Objective Recommended starting point Next action
Learn OpenBMC without hardware Ubuntu LTS VM with the tutorial’s ideal resource allocation Build Romulus and boot it in QEMU; wait for obmcutil state to report Ready.
Build firmware for a supported board Ubuntu LTS directly or in a VM, with storage reserved for repeated builds Run . setup, select the board’s machine, then build obmc-phosphor-image.
Iterate on one application An already working target environment Source the target and use devtool modify for the component-level loop.
Match an existing Fedora-based team Fedora with the README’s prerequisite set Validate the current Yocto requirements before starting a long build.
Reproduce CI-style builds Containerized workflow only if you already manage Docker build infrastructure Persist downloads and build caches, and handle user IDs and permissions explicitly; this is outside the beginner tutorial.

A repeatable first-day checklist

  1. Choose Ubuntu LTS unless you have a specific reason to use another supported Linux distribution.
  2. Allocate approximately eight threads, 16 GB RAM, and 200 GB disk for a full-image VM, remembering that these are ideal planning figures.
  3. Install the documented packages for your distribution and compare them with current Yocto requirements.
  4. Clone https://github.com/openbmc/openbmc and work from its root directory.
  5. Run . setup to see supported machines.
  6. Source . setup romulus for the tutorial’s emulator path, or source the machine that matches your physical board.
  7. Run bitbake obmc-phosphor-image and monitor disk space while the first build completes.
  8. For Romulus, inspect build/tmp/deploy/images/romulus/ and use the current documented QEMU command.
  9. Run obmcutil state until the emulated BMC reports Ready.
  10. Once the full image works, move focused application changes to the devtool workflow and use the project’s current review guidance for submissions.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.