All Projects → ssrg-vt → Hermitux

ssrg-vt / Hermitux

A binary-compatible unikernel

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Hermitux

hermitux-kernel
github.com/ssrg-vt/hermitux
Stars: ✭ 32 (-90.96%)
Mutual labels:  unikernel
ocaml-dns
OCaml implementation of the DNS protocol
Stars: ✭ 93 (-73.73%)
Mutual labels:  unikernel
docteur
An opiniated file-system for MirageOS
Stars: ✭ 16 (-95.48%)
Mutual labels:  unikernel
capstan
Capstan, a tool for packaging and running your application on OSv.
Stars: ✭ 19 (-94.63%)
Mutual labels:  unikernel
rekernel
A minimal setup for writing Unikernels in ReasonML
Stars: ✭ 28 (-92.09%)
Mutual labels:  unikernel
nautilus
Nautilus Aerokernel
Stars: ✭ 30 (-91.53%)
Mutual labels:  unikernel
Unikraft
Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels. (Core repository)
Stars: ✭ 183 (-48.31%)
Mutual labels:  unikernel
Rusty Hermit
RustyHermit - A Rust-based, lightweight unikernel
Stars: ✭ 268 (-24.29%)
Mutual labels:  unikernel
uniprof
A stack tracer/profiler for Xen domains
Stars: ✭ 29 (-91.81%)
Mutual labels:  unikernel
clickos
The Click modular router: fast modular packet processing and analysis
Stars: ✭ 127 (-64.12%)
Mutual labels:  unikernel
mirage-xmpp
Implementation of XMPP for MirageOS
Stars: ✭ 12 (-96.61%)
Mutual labels:  unikernel
awesome-unikernels
A list about Unikernels
Stars: ✭ 86 (-75.71%)
Mutual labels:  unikernel
keyfender
Secure HSM implementation based on MirageOS
Stars: ✭ 33 (-90.68%)
Mutual labels:  unikernel
contruno
A TLS termination proxy as a MirageOS
Stars: ✭ 13 (-96.33%)
Mutual labels:  unikernel
awesome-microvm
🎉 A curated list of awesome things related to Micro-VMs
Stars: ✭ 22 (-93.79%)
Mutual labels:  unikernel
Libhermit
HermitCore: A C-based, lightweight unikernel
Stars: ✭ 190 (-46.33%)
Mutual labels:  unikernel
ops-examples
A repository of basic and advanced examples using Ops
Stars: ✭ 68 (-80.79%)
Mutual labels:  unikernel
Mirage Tcpip
TCP/IP networking stack in pure OCaml, using the Mirage platform libraries. Includes IPv4/6, ICMP, and UDP/TCP support.
Stars: ✭ 277 (-21.75%)
Mutual labels:  unikernel
torokernel
This repository contains the source code of the unikernel toro
Stars: ✭ 107 (-69.77%)
Mutual labels:  unikernel
arp
Address resolution protocol (ARP) implementation in OCaml targeting MirageOS
Stars: ✭ 20 (-94.35%)
Mutual labels:  unikernel

HermiTux: a unikernel binary-compatible with Linux applications

For general information about HermiTux's design principles and implementation, please read the paper and Daniel Chiba's MS thesis.

The instruction that follows are for x86-64. We have basic support for an ARM64 embedded board, more information in the Wiki.

We also have a Slack channel for HermiTux.

Quick start

The easiest way to try HermiTux is with Docker:

docker pull olivierpierre/hermitux
docker run --privileged -it olivierpierre/hermitux

Then you can directly try to run an application.

Prerequisites

  • Recommended system: Ubuntu 20.04/Debian 10 (GlibC support is not assured on other distributions)
    • See here for additional instructions regarding older distributions Ubuntu 18.04/16.04 or Debian 10/9
  • Debian/Ubuntu packages:
sudo apt update
sudo apt install git build-essential cmake nasm apt-transport-https wget \
	libgmp-dev bsdmainutils libseccomp-dev python libelf-dev
echo "deb [trusted=yes] https://dl.bintray.com/hermitcore/ubuntu bionic main" \
	| sudo tee -a /etc/apt/sources.list
sudo apt update
sudo apt install binutils-hermit newlib-hermit pte-hermit gcc-hermit \
	libomp-hermit libhermit

Build

  1. Clone the repository and retrieve the submodules
git clone https://github.com/ssrg-vt/hermitux
cd hermitux
git submodule init && git submodule update
  1. Compile everything as follows:
make

Run an application

Test an example application, for example NPB IS:

cd apps/npb/is
# let's compile it as a static binary:
gcc *.c -o is -static
# let's launch it with HermiTux:
sudo HERMIT_ISLE=uhyve HERMIT_TUX=1 ../../../hermitux-kernel/prefix/bin/proxy \
	../../../hermitux-kernel/prefix/x86_64-hermit/extra/tests/hermitux is

# Now let's try with a dynamically linked program:
gcc *.c -o is-dyn
# We can run it by having hermitux execute the dynamic linux loader:
sudo HERMIT_ISLE=uhyve HERMIT_TUX=1 \
	../../../hermitux-kernel/prefix/bin/proxy \
	../../../hermitux-kernel/prefix/x86_64-hermit/extra/tests/hermitux \
	/lib64/ld-linux-x86-64.so.2 ./is-dyn

For more documentation about multiple topics, please see the wiki: https://github.com/ssrg-vt/hermitux/wiki

HermiTux logo made by Mr Zozu.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].