Modular and configurable OS for embedded applications
Embox is a configurable RTOS designed for resource constrained and embedded systems. Embox main idea is using Linux software without Linux.
Telegram chats: * https://t.me/emboxchaten -- main telegram chat * https://t.me/embox_chat -- telegram chat in Russian
Here's a quick overview on how to build and run Embox.
Required environment: -
make- cross compiler for the target platform
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/docker_start.sh $ . ./scripts/docker/docker_rc.sh
First of all:
$ git clone https://github.com/embox/embox.git embox $ cd emboxSince Embox is highly configurable project, it is necessary to specify modules to be built and params for them. To build the OS
makecommand is used. All commands described below are called from the
emboxdirectory, which includes
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
qemutemplates that exist for most architectures, that is,
$ make confload-x86/qemu
After configuring the project just run
The resulting image can now be run on QEMU. The simplest way is to execute
$ sudo ./scripts/qemu/auto_qemu
sudois requried to setup a TUN/TAP device necessary to emulate networking.
After the system is loaded, you’ll see the
embox>prompt, now you are able to run commands. For example,
helplists all existing commands.
To test the connection:
ping 10.0.2.16If 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-kvmAfter 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) continueThe system starts to load.
At any moment in gdb terminal you can type ctrl + C and see the stack of the current thread (
backtrace) or set breakpoints (
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 make sudo ./scripts/qemu/auto_qemuThe output is quite the same as in the case of the x86 architecture.
Embox supports networking on qemu x86, ARM, MIPS and Microblaze.