No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ali Raza f366dc373c added initializations for mmap 1 month ago
.gitignore adding glibc 1 month ago
CONTRIBUTORS adding contributor names 1 month ago
COPYING server working, need to fix panic 9 months ago
Makefile adding glibc 1 month ago
README.md Git repos use HTTP now instead of SSH 1 month ago
interface.c added initializations for mmap 1 month ago
libc.a adding glibc 1 month ago
libcMakefile no changes 2 months ago
newserver.c updates 1 month ago
ukl.c general changes, TCP server working 1 month ago

README.md

A unikernel based on Linux

HotOS paper
Blog post

An example of Linux unikernel: TCP echo server

Assuming you are running Fedora, you need the following packages. Run the following command to install them.

    sudo dnf install qemu supermin git elfutils-devel kernel-devel
    sudo dnf groupinstall "C Development Tools and Libraries"

UKL requires other Git repos as well. Follow the directions below to download and build them.

  1. This Makefile assumes that you have a main directory in which you have three further sub directories. Follow the commands below to get the correct directory layout. (This will not be necessary as we update the Makefile)
    mkdir unikernel cd unikernel git clone https://github.com/razaaliraza/linux.git git clone https://github.com/razaaliraza/ukl.git git clone https://github.com/razaaliraza/min-initrd.git
  2. Build Linux
    Note: This will fail at the very end (linking step). Thats ok. cd linux make olddefconfig make -j
  3. Build usercode

    cd ../ukl
    make tcptest
    

    This step will build tcp code and link everything together in a single bzImage

  4. Run UKL. This step might take a while because supermin has to create an initrd.

    make run
    

    If this step fails because you dont have KVM enabled on your machine, go to min-initrd directory and open Makefile. Delete enable-kvm flag from run command.

If you get messages about module version mismatch when the kernel boots up, you might want to look at this Supermin page.

  1. From a separate terminal, run telnet telnet 127.0.0.1 5555