Last Updated on December 2, 2025

Reliable Embedded Systems – Robert Berger e.U. build framework & qemux86-64-master & bitbake-setup tool

Key Takeaways

  • The article discusses the implications of the poky master branch being no longer updated as of November 7th, 2025.
  • It introduces two options: individual clones of BitBake and layers, or using the new bitbake-setup tool for building ‘images’, but focuses on the bitbake-setup tool.
  • The focus is on building a ‘core-image-minimal’ for the ‘qemux86-64’ emulator using the Reliable Embedded Systems build framework.
  • Users can expect a step-by-step guide on installing Docker, setting up the build environment, and running QEMU.
  • The conclusion highlights the utility of a ‘Build Container’ for creating images suitable for QEMU emulation.

Objectives

Can the Reliable Embedded Systems – Robert Berger e.U. Yocto Project®/OpenEmbedded build environment and QEMU work together? Or do we need real hardware? Let’s have a look! We’ll build an image – a “core-image-minimal” – for the qemux86-64 emulator. We’ll try to execute the image with the emulator. As of November 7th 2025 the poky repository master branch is no longer being updated! Explore the reasons behind why the poky master branch is gone and how to build the default targets now.

The master branch of poky is no longer being updated!

The poky repository master branch is no longer being updated.

Option 1: Individual clones of BitBake and layers

One way to deal with it is via individual clones of bitbake, openembedded-core, meta-yocto and yocto-docs. Take a look here. We’ll not deal with this approach in the article.

Option 2: Use the new bitbake-setup tool

For more detailed information please refer to the official documentation here. Some further information on the background of this change can be found here and here. We’ll take a closer look at this.

Prerequisites to use the RES build framework (RES)

Assuming you already have the Reliable Embedded Systems – Robert Berger e.U. Yocto Project®/OpenEmbedded build framework installed you are in a good position and can skip the chapter “Install a minimal Build framework”. I am describing this, since its the way I work, but that is not necessarily what you would like to do.

Install a minimal Build framework (RES)

Install docker

sudo apt install docker.io
sudo usermod -aG docker ${USER}
sudo reboot

Create a directory where you have plenty of space

mkdir -p ~/projects/resy-playground
cd ~/projects/resy-playground
sudo ln -sf ~/projects/resy-playground /workdir

You might need to fix some permissions.

Download manifests

mkdir -p /workdir/sources
pushd /workdir/sources
git clone https://github.com/RobertBerger/manifests.git
popd
cd /workdir
ln -sf sources/manifests/resy-poky-container.sh resy-poky-container.sh
chmod +x resy-poky-container.sh

On host machine

Download the BitBake repository

In order to use the bitbake-setup tool we need to get it and it’s part of the BitBake repository.

mkdir -p /workdir/sources/bitbake-new
cd /workdir/sources/bitbake-new
git clone https://github.com/openembedded/bitbake.git

Start docker build container and initialize the build environment

cd /workdir
./resy-poky-container.sh

In container

bitbake-setup --help

Let’s check out the bitbake-setup tool.

cd /workdir/sources/bitbake-new/bitbake
./bin/bitbake-setup --help
usage: bitbake-setup [-h] [-d] [-q] [--color COLOR] [--no-network] [--global-settings PATH] [--setting SECTION SETTING VALUE] {list,init,status,update,install-buildtools,settings} ...

BitBake setup utility. Run with 'init' argument to get started.

positional arguments:
  {list,init,status,update,install-buildtools,settings}
    list                List available configurations
    init                Select a configuration and initialize a setup from it
    status              Check if the setup needs to be synchronized with configuration
    update              Update a setup to be in sync with configuration
    install-buildtools  Install buildtools which can help fulfil missing or incorrect dependencies on the host machine
    settings            List current settings, or set or unset a setting in a settings file (e.g. the default prefix and name of the top directory, the location of configuration registry,
                        downloads directory and other settings specific to a top directory)

options:
  -h, --help            show this help message and exit
  -d, --debug           Enable debug output
  -q, --quiet           Print only errors
  --color COLOR         Colorize output (where COLOR is auto, always, never)
  --no-network          Do not check whether configuration repositories and layer repositories have been updated; use only the local cache.
  --global-settings PATH
                        Path to the global settings file.
  --setting SECTION SETTING VALUE
                        Modify a setting (for this bitbake-setup invocation only), for example "--setting default top-dir-prefix /path/to/top/dir".

Use bitbake-setup <subcommand> --help to get help on a specific command

bitbake-setup init

./bin/bitbake-setup --setting default top-dir-prefix /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64 init
Bitbake-setup is using /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds as top directory.

/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds looks like a new top directory. If you would like to use a different directory, answer "n" below and either:
        1) Change the default bitbake-setup settings:
                bitbake-setup settings set default top-level-prefix <PATH>
                bitbake-setup settings set default top-level-name <NAME>
        2) Pass one or more options on the command line to change the top level directory in that invocation only:
                bitbake-setup --setting default top-dir-prefix <PATH> ...
                bitbake-setup --setting default top-dir-name <NAME> ...

A common site.conf file will be created, please check it is correct before running builds
    /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/site.conf

Proceed? (y/N): y
Available configurations:
1. poky-master  Poky - The Yocto Project testing distribution configurations and hardware test platforms
2. oe-nodistro-master   OpenEmbedded - 'nodistro' basic configuration
3. oe-nodistro-whinlatter       OpenEmbedded - 'nodistro' basic configuration, release 5.3 'whinlatter' (supported until 2026-05-31)
4. poky-whinlatter      Poky - The Yocto Project testing distribution configurations and hardware test platforms, release 5.3 'whinlatter' (supported until 2026-05-31)

Please select one of the above configurations by its number:
1
Available bitbake configurations:
1. poky Poky - The Yocto Project testing distribution
2. poky-with-sstate     Poky - The Yocto Project testing distribution with internet sstate acceleration. Use with caution as it requires a completely robust local network with sufficient bandwidth.

Please select one of the above bitbake configurations by its number:
1
Target machines:
1. machine/qemux86-64
2. machine/qemuarm64
3. machine/qemuriscv64
4. machine/genericarm64
5. machine/genericx86-64

Please select one of the above options by its number:
1
Distribution configuration variants:
1. distro/poky
2. distro/poky-altcfg
3. distro/poky-tiny

Please select one of the above options by its number:
1
Run 'bitbake-setup init --non-interactive poky-master poky distro/poky machine/qemux86-64' to select this configuration non-interactively.

Enter setup directory name: [poky-master]
Enter setup directory name: [poky-master] 
Initializing a setup directory in
    /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master
Continue? (y/N): y
Fetching layer/tool repositories into /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/layers
    bitbake
    openembedded-core         
    meta-yocto                
    yocto-docs                
                              
Setting up bitbake configuration in
    /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build

This bitbake configuration provides:
    Poky - The Yocto Project testing distribution

Usage instructions and additional information are in
     /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/README

To run builds, source the environment using
    . /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/init-build-env

Run 'bitbake-config-build enable-fragment <fragment-name>' to enable additional fragments or replace built-in ones (e.g. machine/<name> or distro/<name> to change MACHINE or DISTRO).

The bitbake configuration files (local.conf, bblayers.conf and more) can be found in
    /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/conf

Setup Build environment attempt 1

source /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/init-build-env
Poky - The Yocto Project testing distribution

Check for configuration fragments

bitbake-config-build --help
NOTE: Starting bitbake server...
usage: bitbake-config-build [-d] [-q] [--color COLOR] [-h] <subcommand> ...

BitBake build configuration utility

options:
  -d, --debug           Enable debug output
  -q, --quiet           Print only errors
  --color COLOR         Colorize output (where COLOR is auto, always, never)
  -h, --help            show this help message and exit

subcommands:
  <subcommand>
    list-fragments      List available configuration fragments
    enable-fragment     Enable a fragment in the local build configuration
    disable-fragment    Disable a fragment in the local build configuration
    show-fragment       Show the content of a fragment
    disable-all-fragments
                        Disable all fragments in the local build configuration

Use bitbake-config-build <subcommand> --help to get help on a specific command

List fragments

bitbake-config-build list-fragments
NOTE: Starting bitbake server...
Available built-in fragments:
machine/...     Sets MACHINE = ...
distro/...      Sets DISTRO = ...

Enabled built-in fragments:
distro/poky     Sets DISTRO = "poky"
machine/qemux86-64      Sets MACHINE = "qemux86-64"

Available fragments in core layer located in /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/layers/openembedded-core/meta:

Unused fragments:
core/yocto/root-login-with-empty-password       Log in as root without password on serial console and over ssh (use with caution).
core/yocto/sstate-mirror-cdn    Use prebuilt sstate artifacts for standard Yocto build configurations.
core/yocto-autobuilder/autobuilder-resource-constraints Resource constraint variables used on the Yocto Projects autobuilder
core/yocto-autobuilder/autobuilder      Default variables used on the Yocto Projects autobuilder builds
core/yocto-autobuilder/multilib-mips64-n32      Enable a MIPS64 triarch multilib
core/yocto-autobuilder/multilib-x86-lib32       Enable an x86 lib32 multilib
core/yocto-autobuilder/multilib-x86-lib64       Enable an x86 lib64 multilib

Enable global sstate

bitbake-config-build show-fragment core/yocto/sstate-mirror-cdn
NOTE: Starting bitbake server...
/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/layers/openembedded-core/meta/conf/fragments/yocto/sstate-mirror-cdn.conf:

BB_CONF_FRAGMENT_SUMMARY = "Use prebuilt sstate artifacts for standard Yocto build configurations."
BB_CONF_FRAGMENT_DESCRIPTION = "The Yocto Project has prebuilt artefacts available for standard build configurations. \
This fragment enables their use. This will mean the build will query the \
the network to check for artefacts at the start of builds, which does slow it down \
initially but it will then speed up the builds by not having to build things if they are \
present in the cache. It assumes you can download something faster than you can build it \
which will depend on your network. \
Note: For this to work you also need hash-equivalence passthrough to the matching server \
"

BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws'
SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
bitbake-config-build enable-fragment core/yocto/sstate-mirror-cdn
NOTE: Starting bitbake server...
Fragment core/yocto/sstate-mirror-cdn added to /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/conf/toolcfg.conf.

Fragment summary: Use prebuilt sstate artifacts for standard Yocto build configurations.

Fragment description:
The Yocto Project has prebuilt artefacts available for standard build configurations. This fragment enables their use. This will mean the build will query the the network to check for artefacts at the start of builds, which does slow it down initially but it will then speed up the builds by not having to build things if they are present in the cache. It assumes you can download something faster than you can build it which will depend on your network. Note: For this to work you also need hash-equivalence passthrough to the matching server 

Allow login of root without password

bitbake-config-build show-fragment core/yocto/root-login-with-empty-password
NOTE: Starting bitbake server...
/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/layers/openembedded-core/meta/conf/fragments/yocto/root-login-with-empty-password.conf:

BB_CONF_FRAGMENT_SUMMARY = "Log in as root without password on serial console and over ssh (use with caution)."
BB_CONF_FRAGMENT_DESCRIPTION = "By default images are built such that root login is disabled \
(which is the preferred, secure default). However, for testing and development purposes it can \
be beneficial to be able to log in as root, both on serial console and over ssh connections, \
which is what this fragment enables. Use with great caution, and ideally only in tightly \
controlled local builds and CI testing environments, and never in artefacts that are deployed \
into products. \
"

EXTRA_IMAGE_FEATURES += "allow-empty-password empty-root-password allow-root-login"
bitbake-config-build enable-fragment core/yocto/root-login-with-empty-password
NOTE: Starting bitbake server...
Fragment core/yocto/root-login-with-empty-password added to /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/conf/toolcfg.conf.

Fragment summary: Log in as root without password on serial console and over ssh (use with caution).

Fragment description:
By default images are built such that root login is disabled (which is the preferred, secure default). However, for testing and development purposes it can be beneficial to be able to log in as root, both on serial console and over ssh connections, which is what this fragment enables. Use with great caution, and ideally only in tightly controlled local builds and CI testing environments, and never in artefacts that are deployed into products. 

List fragments

bitbake-config-build list-fragments
NOTE: Starting bitbake server...
Available built-in fragments:
machine/...     Sets MACHINE = ...
distro/...      Sets DISTRO = ...

Enabled built-in fragments:
distro/poky     Sets DISTRO = "poky"
machine/qemux86-64      Sets MACHINE = "qemux86-64"

Available fragments in core layer located in /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/layers/openembedded-core/meta:

Enabled fragments:
core/yocto/root-login-with-empty-password       Log in as root without password on serial console and over ssh (use with caution).
core/yocto/sstate-mirror-cdn    Use prebuilt sstate artifacts for standard Yocto build configurations.

Unused fragments:
core/yocto-autobuilder/autobuilder-resource-constraints Resource constraint variables used on the Yocto Projects autobuilder
core/yocto-autobuilder/autobuilder      Default variables used on the Yocto Projects autobuilder builds
core/yocto-autobuilder/multilib-mips64-n32      Enable a MIPS64 triarch multilib
core/yocto-autobuilder/multilib-x86-lib32       Enable an x86 lib32 multilib
core/yocto-autobuilder/multilib-x86-lib64       Enable an x86 lib64 multilib

Build core-image-minimal attempt 1

bitbake core-image-minimal
ERROR: "Unable to use hash equivalence server at 'wss://hashserv.yoctoproject.org/ws' due to missing or incorrect python module:
ModuleNotFoundError("No module named 'websockets'")
Please install the needed module on the build host, or use an environment containing it:
 - if you are using bitbake-setup, run 'bitbake-setup install-buildtools'
 - openembedded-core layer contains 'scripts/install-buildtools' that can also be used
 - or set up pip venv
You can also remove the BB_HASHSERVE_UPSTREAM setting, but this may result in significantly longer build times as bitbake will be unable to reuse prebuilt sstate artefacts.

As the error log suggests, we should do the following: ‘bitbake-setup install-buildtools‘.

bitbake-setup install-buildtools

bitbake-setup install-buildtools
Bitbake-setup is using /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds as top directory.

Buildtools archive is downloaded into /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools-downloads/20251201183440 and its content installed into /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools
INFO: Fetching buildtools installer
INFO: Fetching buildtools installer checksum
INFO: Checksum success
INFO: Making installer executable
Extended Build tools installer version 5.2.3
============================================
You are about to install the SDK to "/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools". Proceed [Y/n]? Y
Extracting SDK......................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools/environment-setup-x86_64-pokysdk-linux
INFO: Setting up the environment
INFO: Testing installation
INFO: Installation successful. Remember to source the environment setup script now and in any new session.

Setup environment for buildtools

Let’s also setup the environment for the buildtools.

source /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools/environment-setup-x86_64-pokysdk-linux

Build core-image-minimal attempt 2

bitbake core-image-minimal

It will get stuck a bit at about 44% where it checks the shared state.

Loading cache: 100% |##########################################################################################################################################################| Time: 0:00:00
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |########################################################################################################################################################| Time: 0:00:19
Parsing of 947 .bb files complete (0 cached, 947 parsed). 1944 targets, 56 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "2.16.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-22.04"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "5.2.99+snapshot-ac7327583aef83fd400190506f3147623de38b68"
TUNE_FEATURES        = "m64 x86-64-v3"
TARGET_FPU           = ""
meta                 = "master:ac7327583aef83fd400190506f3147623de38b68"
meta-yocto-bsp
meta-poky            = "master:b3b659263566c4d2f2813190e72d93f8598a4c47"

NOTE: Fetching uninative binary shim http://downloads.yoctoproject.org/releases/uninative/5.0/x86_64-nativesdk-libc-5.0.tar.xz;sha256sum=96045e8b1e242c8a849426a8506c7043f354b39f2bc0035192780e8205e23e9d (will check PREMIRRORS first)
Initialising tasks: 100% |#####################################################################################################################################################| Time: 0:02:24
Checking sstate mirror object availability: 100% |#############################################################################################################################| Time: 0:00:25
Sstate summary: Wanted 1970 Local 0 Mirrors 1965 Missed 5 Current 0 (99% match, 0% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 4218 tasks of which 4203 didn't need to be rerun and all succeeded.

Now we should have a “core-image-minimal”. We will try to run it from within the QEMU emulator.

On host machine (RES)

Adjust resy-poky-container.sh

You’ll need to exit and enter the container if you didn’t already modify the file below.

This is a special setting to start the container in privileged mode, which is necessary only with my build framework to run QEMU.

cd /workdir
vim ./resy-poky-container.sh

Replace USE_QEMU="no" with USE_QEMU="yes".

diff --git a/resy-poky-container.sh b/resy-poky-container.sh
index 5153afa..f5f7408 100755
--- a/resy-poky-container.sh
+++ b/resy-poky-container.sh
@@ -8,7 +8,7 @@ USE_GUI="no"
 USE_MIRROR="yes"
 DOCKER_PULL="yes"
 USE_ICECC="yes"
-USE_QEMU="no"
+USE_QEMU="yes"
 #PRIVILEGED="--privileged"
 PRIVILEGED=""
 #EXTRA_MOUNTS="yes"

Open a privileged session suitable to run QEMU

Open a new shell on the host.

cd /workdir/sources/manifests
./root-in-poky-container.sh

In the container (as root) (RES)

Setup the right environment

source /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/init-build-env
source /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/buildtools/environment-setup-x86_64-pokysdk-linux

Start QEMU in non graphical mode

In the docker container (as root)

runqemu nographic snapshot
runqemu - INFO - Running bitbake -e  ...
runqemu - INFO - Decompressing /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.ext4.zst to /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.ext4
/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.ext4.zst: 42641408 bytes
runqemu - INFO - Continuing with the following parameters:
KERNEL: [/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/bzImage]
MACHINE: [qemux86-64]
FSTYPE: [ext4]
ROOTFS: [/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.ext4]
SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.]
CONFFILE: [/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.qemuboot.conf]

runqemu - INFO - Setting up tap interface under sudo
runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0
runqemu - INFO - Running /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive file=/workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20251201183621.ext4,if=virtio,format=raw -usb -device usb-tablet -usb -device usb-kbd   -cpu Skylake-Client -machine q35,i8042=off -smp 4 -m 256 -snapshot -serial mon:stdio -serial null -nographic  -kernel /workdir/build/poky-master-poky-distro_poky-machine_qemux86-64/bitbake-builds/poky-master/build/tmp/deploy/images/qemux86-64/bzImage -append 'root=/dev/vda rw  ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 console=ttyS0 console=ttyS1 oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1 swiotlb=0 '

runqemu - INFO - Host uptime: 770778.17
SeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org)


iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC69C0+0EF269C0 CA00



Booting from ROM..
[    0.000000] Linux version 6.16.11-yocto-standard (oe-user@oe-host) (x86_64-poky-linux-gcc (GCC) 15.2.0, GNU ld (GNU Binutils) 2.45.0.20250908) #1 SMP PREEMPT_DYNAMIC Mon Oct  6 13:50:41 5
[    0.000000] Command line: root=/dev/vda rw  ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 console=ttyS0 console=ttyS1 oprofile.timer=1 tsc=reliable no_timer_c
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
...
[    2.541196] md: ... autorun DONE.
[    2.586200] EXT4-fs (vda): mounted filesystem cd88b20c-3447-4d46-aa20-085686c4bfbb r/w with ordered data mode. Quota mode: disabled.
[    2.587073] VFS: Mounted root (ext4 filesystem) on device 253:0.
[    2.589326] devtmpfs: mounted
[    2.617062] usb 2-2: new high-speed USB device number 3 using ehci-pci
[    2.747690] Freeing unused kernel image (initmem) memory: 3596K
[    2.748581] Write protecting the kernel read-only data: 26624k
[    2.750796] Freeing unused kernel image (text/rodata gap) memory: 668K
[    2.751459] Freeing unused kernel image (rodata/data gap) memory: 56K
[    2.752694] Run /sbin/init as init process
[    2.760269] input: QEMU QEMU USB Keyboard as /devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/0003:0627:0001.0002/input/input2
[    2.818045] hid-generic 0003:0627:0001.0002: input: USB HID v1.11 Keyboard [QEMU QEMU USB Keyboard] on usb-0000:00:1d.7-2/input0
INIT: version 3.14 booting
Starting udev
[    3.568490] udevd[140]: starting version 3.2.14
[    3.653429] udevd[141]: starting eudev-3.2.14
[    4.360739] EXT4-fs (vda): re-mounted cd88b20c-3447-4d46-aa20-085686c4bfbb.
INIT: Entering runlevel: 5
Configuring network interfaces... ip: RTNETLINK answers: File exists
Starting syslogd/klogd: done

Poky (Yocto Project Reference Distro) 5.2.99+snapshot-ac7327583aef83fd400190506f3147623de38b68 qemux86-64 /dev/ttyS0

Type 'root' to login with superuser privileges (no password will be asked).qemux86-64
qemux86-64 login: 

You can log in as root with no password.

qemux86-64 login: root
WARNING: Poky is a reference Yocto Project distribution that should be used for
testing and development purposes only. It is recommended that you create your
own distribution for production use.
root@qemux86-64:~# cat /proc/version
Linux version 6.16.11-yocto-standard (oe-user@oe-host) (x86_64-poky-linux-gcc (GCC) 15.2.0, GNU ld (GNU Binutils) 2.45.0.20250908) #1 SMP PREEMPT_DYNAMIC Mon Oct  6 13:50:41 UTC 2025
root@qemux86-64:~# cat /etc/issue
Poky (Yocto Project Reference Distro) 5.2.99+snapshot-ac7327583aef83fd400190506f3147623de38b68 \n \l

Type 'root' to login with superuser privileges (no password will be asked).\n
root@qemux86-64:~# cat /proc/cmdline
root=/dev/vda rw  ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 console=ttyS0 console=ttyS1 oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1 
root@qemux86-64:~# lsmod
Module                  Size  Used by

If you wonder why there are no kernel modules showing up, take a look here.

You can shut down the system as usual

root@qemux86-64:~# shutdown -h now

Conclusion

That’s just a small demo of how a “Build Container” can be used to build an “image” suitable for the QEMU emulator. On top of that there is a little trick how to run the emulator inside a container.

Poky is the reference implementation of the Yocto Project®.

Related Links

Appendix

For a blog post that describes how to build the upstream kernel without the Yocto Project® have a look here. If you want to learn how Embedded Linux works have a look here. To learn more about the Yocto Project® have a look here.

 

Upcoming Events

Our 3 points

of differentiation

We provide host and target hardware during all our teaching.

Three or more people from the same company? We provide private customized training – consulting included.

Subject matter experts develop high-quality, job-related, up-to-date, authentic courseware.

Reliable Embedded Systems
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.