|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Reactos||13,461||6 hours ago||178||gpl-2.0||C|
|A free Windows-compatible Operating System|
|Toaruos||5,743||2 days ago||43||ncsa||C|
|A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.|
|Build||3,371||10 hours ago||53||gpl-2.0||Shell|
|Armbian Linux Build Framework|
|Simplekernel||2,727||3 months ago||7||other||C|
|Simple kernel for learning operating systems. 用于学习操作系统的简单内核|
|Tilck||2,158||23 days ago||bsd-2-clause||C|
|A Tiny Linux-Compatible Kernel|
|Diamorphine||1,411||2 months ago||9||other||C|
|LKM rootkit for Linux Kernels 2.6.x/3.x/4.x/5.x/6.x (x86/x86_64 and ARM64)|
|Stress Ng||1,219||6 hours ago||13||October 29, 2021||4||gpl-2.0||C|
|This is the stress-ng upstream project git repository. stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various physical subsystems of a computer as well as the various operating system kernel interfaces.|
|Awesome Linux Rootkits||1,064||a year ago||1||cc0-1.0|
|Embox||1,028||11 hours ago||208||bsd-2-clause||C|
|Modular and configurable OS for embedded applications|
|Lilith||1,005||4 years ago||8||other||Crystal|
|x86-64 os made in crystal|
Embox is a configurable RTOS designed for resource constrained and embedded systems. Embox's main idea is to use Linux software without Linux.
Here's a quick overview on how to build and run Embox.
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 embox
Since Embox is highly configurable project, it is necessary to specify modules to be built and params for them. To build the OS
make command is used.
All commands described below are called from the
embox directory, which includes
For configuring it is necessary to specify parameters and modules supposed to be included into the system. There are two ways to set up a current config:
make confload-<template> -build artefacts generated in a fixed place
./confset <template> -build artefacts maintained in project dependent working paths
make confload-<template> is used, files from the template's folder are copied into './conf' folder. You can modify them.
confset <template> is used, files from the template's folder are copied into
./work/<template>/conf folder and a link './conf' is created to
./work/<template>/conf. This usage is suited for quick switching between your templates, because full rebuilds are avoided.
Moreover, working conf-settings are retained as well, when you switch build e.g. between real target and qemu and back again. Only downside of using the confset method: more SSD/HDD usage, dependent on number of parallel projects.
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:
$ ./confset <template>
$ make confload-<template>
For the quick overview you can use one of
qemu templates that exist for most architectures, that is,
x86/qemu for x86:
$ ./confset x86/qemu (yet no autocomplete/-suggest when only a part is typed: to Do)
$ make confload-x86/qemu
After configuring the project just run
make to build:
The resulting image can now be run on QEMU. The simplest way is to execute
$ sudo ./scripts/qemu/auto_qemu
sudo is 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.
help 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 -machine accel=tcg flags for debugging:
$ sudo ./scripts/qemu/auto_qemu -s -S -machine accel=tcg
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 (
backtrace) or set breakpoints (
break <function name>,
break <file name>:<line number>).
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-<arch>/qemu make sudo ./scripts/qemu/auto_qemu
The output is quite the same as in the case of the x86 architecture.
Embox supports networking on qemu x86, ARM, MIPS and Microblaze.