Need help with embox?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

699 Stars 191 Forks BSD 2-Clause "Simplified" License 22.3K Commits 145 Opened issues


Modular and configurable OS for embedded applications

Services available


Need anything else?

Contributors list

Embox Coverity Scan Build Status

Embox is a configurable RTOS designed for resource constrained and embedded systems. Embox main idea is using Linux software without Linux.


Key features

  • POSIX-compliant
  • C++ support
  • File systems: FAT, ext2/3/4, ...
  • TCP/IP: BSD sockets; supported protocols: UDP, HTTP, ARP, NTP, ICMP, ...
  • Cross-platform: ARM, MIPS, x86, Microblaze, SPARC, PowerPC, E2K
  • Popular platforms: STM32, i.MX6, RaPi, ...
  • Provides popular desktop software on MCU (e.g. STM32): Qt, OpenCV, PJSIP, dropbear, ...
  • Unix-like shell utilities: ls, cat, mount, ...
  • Popular programming languages: java, python, lua, tcl, lisp, ruby


Mailing lists: * main (english): [email protected] * russian: [email protected]

Telegram chats: * main (english): * news: * russian:


Getting started

Here's a quick overview on how to build and run Embox.

Required environment: -

- cross compiler for the target platform

Preparing environment

For Debian-based systems (most packages are installed out of box though):

$ sudo apt-get install build-essential gcc-multilib curl libmpc-dev python

For Arch Linux:

$ sudo pacman -S make gcc-multilib cpio qemu

For MAC OS X (requires MacPorts installed):

$ sudo port install i386-elf-gcc i386-elf-binutils cpio gawk qemu

For any system with Docker (more info on wiki Emdocker):

$ ./scripts/docker/
$ . ./scripts/docker/

Building Embox

First of all:

$ git clone embox
$ cd embox
Since Embox is highly configurable project, it is necessary to specify modules to be built and params for them. To build the OS
command is used. All commands described below are called from the
directory, which includes
, ...

Configuring the project

For configuring it is needed to specify params and modules supposed to be included into the system. Embox has several templates prepared, to list them use the following command:

$ make confload

The simplest way to load a template is to specify its name in the command:

$ make confload-

For the quick overview you can use one of

templates that exist for most architectures, that is,
for x86:
$ make confload-x86/qemu

Building the image

After configuring the project just run

to build:
$ make

Running on QEMU

The resulting image can now be run on QEMU. The simplest way is to execute

$ sudo ./scripts/qemu/auto_qemu
is requried to setup a TUN/TAP device necessary to emulate networking.

After the system is loaded, you’ll see the

prompt, now you are able to run commands. For example,
lists all existing commands.

To test the connection:

If everything's fine, you can connect to the Embox terminal via

To exit Qemu type ctrl + A and X after that.


You can use the same script with -s -S -no-kvm flags for debugging:

$ sudo ./scripts/qemu/auto_qemu -s -S -no-kvm
After running that QEMU waits for a connection from a gdb-client. Run gdb in the other terminal:
$ gdb ./build/base/bin/embox
(gdb) target extended-remote :1234
(gdb) continue
The system starts to load.

At any moment in gdb terminal you can type ctrl + C and see the stack of the current thread (

) or set breakpoints (
break :

Other architectures

Embox supports the following CPU architectures: x86, ARM, Microblaze, SPARC, PPC, MIPS.

In order to work with architectures other than x86 you'll need a cross compiler. After installing the cross compiler just repeat the step above, starting with configuring:

make confload-/qemu
sudo ./scripts/qemu/auto_qemu
The output is quite the same as in the case of the x86 architecture.

Networking support

Embox supports networking on qemu x86, ARM, MIPS and Microblaze.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.