This is a catalog of applications that are set up, configured, built and run using first principles tools: Make, GCC, Clang, Kconfig, QEMU, Firecracker, Xen.
Each directory belongs to a given application and it typically consists of source code, Makefile
, Makefile.uk
, filesystem and a README.md
file with instructions.
This catalog is targeted towards core developers (i.e. developers of unikraft
core repository or library repositories), maintainers, testers and those who want to learn about the internals of Unikraft.
Application and tooling developers and general users should use the official catalog
repository.
In order to use this catalog, clone this repository and enter the preferred application directory:
git clone https://github.com/unikraft/catalog-core
cd catalog-core/<application-directory>
Inside the directory, follow the instructions in the application README.md
.
Before and while you are using this catalog, read about the internals of Unikraft.
In order to set up, configure, build and run applications on Unikraft using first principles, the following packages are required:
build-essential
/base-devel
/@development-tools
(the meta-package that includesmake
,gcc
and other development-related packages)sudo
flex
bison
git
wget
uuid-runtime
qemu-system-x86
qemu-system-arm
qemu-kvm
sgabios
gcc-aarch64-linux-gnu
GCC >= 8 is required to build Unikraft.
On Ubuntu/Debian or other apt
-based distributions, use the following command to install the requirements:
sudo apt install -y --no-install-recommends \
build-essential \
sudo \
gcc-aarch64-linux-gnu \
libncurses-dev \
libyaml-dev \
flex \
bison \
git \
wget \
uuid-runtime \
qemu-kvm \
qemu-system-x86 \
qemu-system-arm \
sgabios
Unikraft supports Clang.
If you plan to use it, install the clang
package.
On Ubuntu/Debian or other apt
-based distributions, use the following command to install it:
sudo apt install -y clang
Note that Clang >= 14 is required for building Unikraft.
Unikraft support Firecracker. To install Firecracker, use the commands below in a downloads or packages directory that will store the package archive:
release_url="https://github.com/firecracker-microvm/firecracker/releases"
latest=v1.7.0
curl -L ${release_url}/download/${latest}/firecracker-${latest}-$(uname -m).tgz | tar -xz
sudo cp release-${latest}-$(uname -m)/firecracker-${latest}-$(uname -m) /usr/local/bin/firecracker-${latest}-$(uname -m)
sudo ln -sfn /usr/local/bin/firecracker-${latest}-$(uname -m) /usr/local/bin/firecracker-$(uname -m)
Note that Firecracker requires KVM support.
The system must have KVM enabled and the user must be able to use KVM.
Typically, that means the user needs to be part of the kvm
group.
This can be done using:
sudo usermod -a -G kvm $USER
It may be that you are required to log out and log back in, for the change to take effect.
Unikraft supports Xen. If you plan to run the application on Xen, you need a system with Xen installed. Then install the Xen toolstack.
On Ubuntu/Debian or other apt
-based distributions, use the following command to install the Xen toolstack:
sudo apt install -y xen-utils