In Codezero, containers provide the architectural infrastructure for isolation of execution environments. Each container is allocated a set of address spaces, threads, and any other resource that would otherwise be globally available on the platform, such as virtual and physical memory.
Using the simple notion of containers, it is possible to build any type of software design hierarchy. A hierarchical client/server design, or multi-threaded standalone applications are both possible scenarios.
Capabilities protect all resources maintained by the kernel. Currently, all system calls are protected by capabilities, except a few trivial ones that have been left out. Physical and virtual memory, typed memory pools, and inter-process communication are among other resources that are protected by capability checking.
Capabilities build upon the foundation of containers, providing a fine-grained security architecture, inside and among container boundaries.
They also introduced a capability control system call, by which the capabilities may be shared, granted and modified in different ways, enabling a highly flexible and configurable security architecture.
The team attempted to present the above two notions in an easily manageable kernel configuration system. Containers, their parameters and capabilities may be adjusted easily at configuration time, using the CML2-based kernel configuration system.
The Codezero Project is released open source under the GPLv3 license. If you are interested in learning more, you can read this quick start guide. You can download the latest master branch using the following command:
% git clone git://git.l4dev.org/codezero.git
The master branch is always stable, and updated very regularly. However, if you want to go for the cutting edge, use this command:
% git checkout -b devel --track origin/devel
Alternatively, you can download the source from the download page.