Skip to content

Commit

Permalink
Merge branch 'dev' of github.com:hioa-cs/IncludeOS
Browse files Browse the repository at this point in the history
  • Loading branch information
alfreb committed May 22, 2016
2 parents b90689c + 6f8b484 commit a98e063
Showing 1 changed file with 12 additions and 13 deletions.
25 changes: 12 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,20 @@ We're working towards automating everything with our Jenkins CI server. The test
* **Extreme memory footprint**: A minimal bootable image, including bootloader, operating system components and a complete C++ standard library is currently 693K when optimized for size.
* **KVM and VirtualBox support** with full virtualization, using [x86 hardware virtualization](https://en.wikipedia.org/wiki/X86_virtualization) whenever available (it is on most modern x86 CPU's). In principle IncludeOS should run on any x86 hardware platform, even on a physical x86 computer, given appropriate drivers. Officially, we develop for- and test on [Linux KVM](http://www.linux-kvm.org/page/Main_Page), which power the [OpenStack IaaS cloud](https://www.openstack.org/), and [VirtualBox](https://www.virtualbox.org), which means that you can run your IncludeOS service on both Linux, Microsoft Windows and Apple OS X.
* **C++11/14 support**
* Full C++11/14 language support with [clang](http://clang.llvm.org) v3.6 and later.
* Standard C++ library** (STL) [libc++](http://libcxx.llvm.org) from [LLVM](http://llvm.org/)
* Full C++11/14 language support with [clang](http://clang.llvm.org) v3.8 and later.
* Standard C++ library (STL) [libc++](http://libcxx.llvm.org) from [LLVM](http://llvm.org/)
* Exceptions and stack unwinding (currently using [libgcc](https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html))
* *Note:* Certain language features, such as threads and filestreams are currently missing backend support.
* **Standard C library** using [newlib](https://sourceware.org/newlib/) from [Red Hat](http://www.redhat.com/)
* **Virtio Network driver** with DMA. [Virtio](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=virtio) provides a highly efficient and widely supported I/O virtualization. Like most implementations IncludeOS currently uses "legacy mode", but we're working towards the new [Virtio 1.0 OASIS standard](http://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v1.0.html)
* **A highly modular TCP/IP-stack** written from scratch, still under heavy development.
* TCP: Just enough to serve HTTP
* UDP: Enough to support a high performance DNS service
* DHCP: Basic support, tested on VirtualBox and KVM
* ICMP: Enough to answer ping, no control messages yet
* TCP: Not all the RFC's are impelemented yet, but it's stable and usable, including congestion control and common opitons.
* UDP: More or less complete, enough to support a high performance DNS service
* DHCP: Basic support, tested on VirtualBox, KVM and OpenStack
* ICMP: Enough to answer ping, no integration with the rest of the stack yet.
* ARP
* Ethernet
* IPv6 support under active development
* IPv6 support under development

A longer list of features and limitations is on the [wiki feature list](https://github.com/hioa-cs/IncludeOS/wiki/Features)

Expand Down Expand Up @@ -70,14 +70,13 @@ You can now log in to the vagrant build environment and build and run a test ser
$ ./test.sh
```


## Prerequisites for building IncludeOS VM's
* **Ubuntu 14.04 LTS x86_64**, Vanilla, either on a physical or virtual machine (A virtualbox VM works fine)
* **Ubuntu 16.04 or 14.04 LTS, x86_64**, either on a physical or virtual machine (A virtualbox VM works fine)
* For the full source build, you'll need at least 1024 MB memory
* In order to support VGA graphics inside a VM, we recommend a lightweight GUI, such as [lubuntu](http://lubuntu.net/blog/lubuntu-1404-trusty-tahr-released) which runs great inside a virtual machine.
* In order to support VGA graphics inside a VM, we recommend a lightweight GUI, such as [lubuntu](https://help.ubuntu.com/community/Lubuntu/GetLubuntu) which runs great inside a virtual machine.
* *NOTE:* Graphics is by no means necessary, as all IncludeOS output by default will be routed to the serial port, and in Qemu,
* The install scripts may very well work on other flavours on Linux, but we haven't tried. Please let us know if you do.
* **Building on a Mac:** we have done a successful build from bundle, directly on a Mac. It's a work in progress, but see [./etc/install_osx.sh](./etc/install_osx.sh) for details.
* **Building on a Mac:** you can build IncludeOS (from bundle only) directly on a Mac by running [./etc/install_osx.sh](./etc/install_osx.sh).
* You'll need `git` to clone from github.

Once you have a system with the prereqs (virtual or not), you can choose a full build from source, or a fast build from binaries:
Expand All @@ -89,7 +88,7 @@ Once you have a system with the prereqs (virtual or not), you can choose a full
$ ./etc/install_from_bundle.sh

**The script will:**
* Install the required dependencies: `curl make clang-3.6 nasm bridge-utils qemu`
* Install the required dependencies: `curl make clang-3.8 nasm bridge-utils qemu`
* Download the latest binary release bundle from github, using the github API.
* Unzip the bundle to `$INCLUDEOS_INSTALL_LOC` - which you can set in advance, or which defaults to `$HOME`
* Create a network bridge called `include0`, for tap-networking
Expand All @@ -107,7 +106,7 @@ About a minute or two (On a 4-core virtualbox Ubuntu VM, runing on a 2015 MacBoo

**The script will:**
* Install all the tools required for building IncludeOS, and all libraries it depends on:
* `build-essential make nasm texinfo clang-3.6 cmake ninja-build subversion zlib1g-dev libtinfo-dev`
* `build-essential make nasm texinfo clang-3.8 cmake ninja-build subversion zlib1g-dev libtinfo-dev`
* Build a GCC cross compiler along the lines of the [osdev howto](http://wiki.osdev.org/GCC_Cross-Compiler) which we really only need to build `libgcc` and `newlib`.
* Build [Redhat's newlib](https://sourceware.org/newlib/) using the cross compiler, and install it according to `./etc/build_newlib.sh`. The script will also install it to the mentioned location.
* Build a 32-bit version of [LLVM's libc++](http://libcxx.llvm.org/) tailored for IncludeOS.
Expand Down

0 comments on commit a98e063

Please sign in to comment.