Codezero is an L4 microkernel that has been written from scratch. It targets embedded systems and its purpose is to act as a secure embedded hypervisor. It aims to become the most modern L4 implementation by evolving the L4 microkernel API into the future. In a nutshell, Codezero provides all the basic mechanism to abstract away the hardware, build OS services, isolate applications and fine-grained security in a single package.
The project philosophy is to create the simplest and leanest microkernel that is generic and applicable to many different applications. Feature creep is what we don't have in Codezero. Simple, elegant design is the project philosophy.
- ARM GNU Toolchain (
arm-none-eabi-gcc,arm-none-eabi-ld, etc.) - Python 3
- SCons build system
- QEMU ARM emulator (for running)
- Set up the toolchain path:
export PATH=/path/to/arm-none-eabi/bin:$PATH- Build with default configuration (
hello_worlddemo):
./build.py- Build with a specific configuration:
./build.py -d <defconfig_name>Available configurations:
pb926- Default PB926 withhello_worldtest_suite- Kernel test suiteipc_demo- IPC demonstrationthreads_demo- Threading demonstrationkmi_service- Keyboard/mouse input serviceposix_test0- POSIX compatibility test
- Build options:
./build.py -C # Interactive configuration (menuconfig)
./build.py -j4 # Parallel build with 4 jobs
./build.py -c # Clean build artifacts
./build.py -h # Show all optionsRun the built image in QEMU:
./tools/run-qemuFor debugging with GDB:
./tools/run-qemu-gdbThis starts QEMU with the ARM926 CPU emulating a VersatilePB board, with GDB server enabled for debugging.
The current release is distributed under GNU General Public License Version 3.
The third party source code under the directories loader/, tools/,
loader/libs/c, and loader/libs/elf have their own copyright and licenses,
separate from this project. All third party source code is open source in the
OSI definition. Please check these directories for their respective licenses.