hioa-cs / IncludeOS
- понедельник, 3 октября 2016 г. в 03:14:09
C
A minimal, resource efficient unikernel for cloud services
IncludeOS is an includable, minimal unikernel operating system for C++ services running in the cloud. Starting a program with #include <os>
will literally include a tiny operating system into your service during link-time.
The build system will:
IncludeOS is free software, with "no warranties or restrictions of any kind".
Note: IncludeOS is under active development. Anything may change at any time. The public API should not be considered stable.
Build from bundle | Build from source | |
---|---|---|
Master | Coming soon | |
Dev | Coming soon |
A longer list of features and limitations is on the wiki feature list
$ git clone https://github.com/hioa-cs/IncludeOS
$ cd IncludeOS
$ sudo ./install.sh
The script will:
curl make clang-3.8 nasm bridge-utils qemu
.$INCLUDEOS_INSTALL_LOC
(defaults to $HOME
).include0
, for tap-networking.vmbuild
and qemu-ifup
from the repo, over to $INCLUDEOS_HOME
.NOTE: The script will install packages, and thus will require sudo access.
Detailed installation instructions for Vagrant, OS X and Ubuntu are available in the Wiki, as well as instructions for building everything from source.
A successful setup enables you to build and run a virtual machine. Running:
$ ./test.sh
will build and run this example service.
More information is available on the wiki.
~/your_service
. Then, just start implementing the Service::start
function in the Service
class, located in your_service/service.cpp (Very simple example provided). This function will be called once the OS is up and running.Example:
$ cp -r seed ~/my_service
$ cd ~/my_service
$ emacs service.cpp
... add your code
$ make
$ ./run.sh my_service.img
Take a look at the examples and the tests. These all started out as copies of the same seed.
IncludeOS is being developed on GitHub. Create your own fork, send us a pull request, and chat with us on Gitter. Please read the Guidelines for Contributing to IncludeOS.
We want to adhere as much as possible to the ISO C++ Core Guidelines, maintained by the Jedi Council. When (not if) you find code in IncludeOS which doesn't adhere, please let us know in the issue tracker - or even better, fix it in your own fork and send us a pull-request.
We're trying to grow a Wiki, and some questions might already be answered here in the FAQ.
See the Wiki front page for a complete introduction, system overview, and more detailed guides.