mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
Merge branch 'production' into devel
This commit is contained in:
commit
07432e6012
3 changed files with 25 additions and 9 deletions
10
.travis.yml
10
.travis.yml
|
@ -17,10 +17,10 @@ script:
|
|||
- mv HermitCore libhermit-0.1
|
||||
- tar -czf libhermit_0.1.orig.tar.gz libhermit-0.1 --exclude=.git
|
||||
- cd libhermit-0.1
|
||||
- debuild -e PATH -us -uc -j2
|
||||
- debuild -e PATH -e CFLAGS_FOR_TARGET -e GOFLAGS_FOR_TARGET -e FCFLAGS_FOR_TARGET -e FFLAGS_FOR_TARGET -e CXXFLAGS_FOR_TARGET -us -uc -j2
|
||||
- sudo dpkg -i ../libhermit*_amd64.deb
|
||||
- make -j2 examples
|
||||
- if [ "$TRAVIS_BRANCH" != "production" ]; then make test; fi
|
||||
- if [ "$TRAVIS_BRANCH" != "master" ]; then make test; fi
|
||||
|
||||
deploy:
|
||||
on: production
|
||||
|
@ -33,9 +33,13 @@ deploy:
|
|||
env:
|
||||
global:
|
||||
- PATH=$PATH:/opt/hermit/bin/
|
||||
- PROXY_STR=":hermit:M:7:\\x42::`pwd`/RWTH-OS/libhermit-0.1/tools/proxy"
|
||||
- HERMIT_ISLE=qemu
|
||||
- HERMIT_CPUS=1
|
||||
- HERMIT_MEM="512M"
|
||||
- HERMIT_KVM="0"
|
||||
- HERMIT_VERBOSE="1"
|
||||
- CFLAGS_FOR_TARGET="-m64 -mtls-direct-seg-refs -O2 -ftree-vectorize"
|
||||
- GOFLAGS_FOR_TARGET"=-m64 -mtls-direct-seg-refs -O2 -ftree-vectorize"
|
||||
- FCFLAGS_FOR_TARGET"=-m64 -mtls-direct-seg-refs -O2 -ftree-vectorize"
|
||||
- FFLAGS_FOR_TARGET="-m64 -mtls-direct-seg-refs -O2 -ftree-vectorize"
|
||||
- CXXFLAGS_FOR_TARGET="-m64 -mtls-direct-seg-refs -O2 -ftree-vectorize"
|
||||
|
|
22
README.md
22
README.md
|
@ -1,13 +1,14 @@
|
|||
# HermitCore - A lightweight unikernel for a scalable and predictable runtime behavior
|
||||
|
||||
The project [HermitCore](http://www.hermitcore.org) is new [unikernel](http://unikernel.org) targeting at high-performance computing.
|
||||
The project [HermitCore](http://www.hermitcore.org) is new [unikernel](http://unikernel.org) targeting at a scalable and predictable runtime for high-performance and cloud computing.
|
||||
HermitCore extends the multi-kernel approach (like [McKernel](http://www-sys-aics.riken.jp/ResearchTopics/os/mckernel.html)) with unikernel features for a better programmability and scalability for hierarchical systems.
|
||||
On the startup of HermitCore applications, cores are isolated from the Linux system enabling the bare-metal of the applications on these cores.
|
||||
This approach achieves lower OS jitter and a better scalability compared to full-weight kernels.
|
||||
Inter-kernel communication between HermitCore applications and the Linux system is realized by means of an IP interface.
|
||||
|
||||
In addition to the multi-kernel approach described above, HermitCore can be used as classical standalone unikernel as well.
|
||||
This reduces the demand on resources and improves the boot time.
|
||||
In this case HermitCore runs a single-kernel exclusively on the hardware or within a virtual machine.
|
||||
This reduces the resource demand and improves the boot time which is critical for cloud computing applications.
|
||||
It is the result of a research project at RWTH Aachen University and is currently an experimental approach, i.e., not production ready.
|
||||
Please use it with caution.
|
||||
|
||||
|
@ -23,9 +24,22 @@ The build process works currently only on **x86-based Linux** systems. The follo
|
|||
|
||||
On Debian-based systems the packets can be installed by executing:
|
||||
```
|
||||
sudo apt-get install qemu-system-x86 nasm texinfo libmpfr-dev libmpc-dev libgmp-dev libisl-dev flex bison
|
||||
sudo apt-get install qemu-system-x86 nasm texinfo libmpfr-dev libmpc-dev libgmp-dev libisl-dev flex bison
|
||||
```
|
||||
|
||||
## Installing HermitCore with by using debian packets
|
||||
|
||||
We provide binary packets for debian-based systems containing the complete HermitCore toolchain including a cross-compiler.
|
||||
To install the packets you have to execute the following commands:
|
||||
```
|
||||
echo "deb [trusted=yes] https://dl.bintray.com/rwth-os/hermitcore vivid main" | sudo tee -a /etc/apt/sources.list
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install binutils-hermit newlib-hermit pthread-embedded-hermit gcc-hermit libhermit
|
||||
```
|
||||
This toolchain is able to build applications for [classical unikernel](#building-and-testing-hermitcore-as-classical-standalone-unikernel) environments within virtual machines or bare-metal in a multi-kernel environment.
|
||||
For the latter, you have to install the modified Linux kernel.
|
||||
An introduction to this execution mode is provided in section [Building and testing HermitCore as multi-kernel on a real machine](#building-and-testing-hermitcore-as-multi-kernel-on a-real-machine).
|
||||
|
||||
## Building and testing HermitCore as multi-kernel within a virtual machine
|
||||
|
||||
1. Please make sure that you cloned this repository and all its submodules.
|
||||
|
@ -59,7 +73,7 @@ On Debian-based systems the packets can be installed by executing:
|
|||
|
||||
1. In principle you have to follow the tutorial above.
|
||||
After the configuration, building of the cross-compilers and all example application (Step 5 in the [above tutorial](#building-and-testing-hermitcore-within-a-virtual-machine)), a modified Linux kernel has to be installed.
|
||||
Please clone the repository with the [modified Linux kernel](https://github.com/RWTH-OS/linux).
|
||||
Please clone the repository with the [modified Linux kernel](https://github.com/RWTH-OS/linux).
|
||||
Afterwards switch to the branch `hermit` for a relative new vanilla kernel or to `centos`, which is compatible to the current CentOS 7 kernel.
|
||||
Configure the kernel with `make menuconfig` for your system.
|
||||
Be sure, that the option `CONFIG_HERMIT_CORE` in `Processor type and features` is enabled.
|
||||
|
|
|
@ -91,8 +91,6 @@ install:
|
|||
|
||||
$(TMP)/gcc:
|
||||
@echo Build final gcc
|
||||
$Q$(MKDIR) $(TMP)/gcc
|
||||
$Q$(CD) $(TMP)/gcc; $(TOPDIR)/gcc/configure --target=$(TARGET) --prefix=$(PREFIX) --with-newlib --with-isl --disable-multilib --without-libatomic --with-tune=generic --enable-languages=c,c++,lto --disable-nls --disable-shared --disable-libssp --enable-threads=posix --disable-libgomp --enable-tls --enable-lto --disable-symvers && $(MAKE) $(NJOBS) && $(MAKE) install
|
||||
$Q$(RM) $(TMP)/gcc
|
||||
$Q$(MKDIR) $(TMP)/gcc
|
||||
$Q$(CD) $(TMP)/gcc; $(TOPDIR)/gcc/configure --target=$(TARGET) --prefix=$(PREFIX) --with-newlib --with-isl --disable-multilib --without-libatomic --with-tune=generic --enable-languages=c,c++,go,fortran,lto --disable-nls --disable-shared --disable-libssp --enable-threads=posix --disable-libgomp --enable-tls --enable-lto --disable-symvers && $(MAKE) $(NJOBS) && $(MAKE) install
|
||||
|
|
Loading…
Add table
Reference in a new issue