---
# System prepended metadata

title: Unikraft VM for Testing and Development
tags: [virtualbox, virtual-machine, kraftkit, vmware, kraft, unikraft]

---

In case you don't have a Linux native environment available, we provide a [virtual machine](https://drive.google.com/file/d/16oBxfjFvu5mpf6DMb4-bsnyd5n2FqReo/view) that you can use.
You can directly import the VM using [VirtualBox](https://www.virtualbox.org/) or [VMware](https://www.vmware.com/).

## Import the Virtual Machine in VirtualBox

In order to import the Virtual Machine in VirualBox, go to `File -> Import Appliance...` (or press `Ctrl + I`), then set the path to the `unikraft.ova` file that you downloaded.

![](https://hackmd.io/_uploads/BkXeMawc2.png)

After that, press `Next` and go with the default settings.
After the VM is imported, you will be able to see it in the VBox list.

## Import the Virtual Machine in VMware

In order to import the Virtual Machine in VMware, go to `File -> Open`, then set the path to the `unikraft.ova` file that you downloaded.
After that, go with the default settings, and you should see the `unikraft` VM in the list.

## Connecting to the Virtual Machine

After the virtual machine is imported, you can start it, and it will require a username and a password.

Username: `unikraft`
Password: `unikraft`

After you log in, you should have full access to the virtual machine.

## Connecting to the Virtual Machine Using SSH

You can connect to the virtual machine from your host system, using SSH.
To do that, after you import the VM, you need to login as described in the [previous section](#Connecting-To-The-Virtual-Machine), in order to find the IP address.
Use the `ip` command in order to find and set up the network interfaces:

```console
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:99:0b:13 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86114sec preferred_lft 86114sec
    inet6 fe80::a00:27ff:fe99:b13/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 08:00:27:64:7d:66 brd ff:ff:ff:ff:ff:ff
```

You can see that the last interface, `enp0s8` has no IP address attached.
You can use `dhclient` to assign it an IP address.

```console
$ sudo dhclient enp0s8
$ ip a s enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:64:7d:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.163/24 brd 192.168.56.255 scope global dynamic enp0s8
       valid_lft 489sec preferred_lft 489sec
    inet6 fe80::a00:27ff:fe64:7d66/64 scope link 
       valid_lft forever preferred_lft forever
```

After that, you can connect to the virtual machine from your host system, using SSH:

```console
$ ssh unikraft@192.168.56.163
unikraft@192.168.56.163's password: 
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-76-generic x86_64)
[...]
```

## Next Steps - Start Working on Unikraft

After you successfully logged in the virtual machine, you can start using Unikraft, all the required packages are already installed.
You can start by running `kraft` and following the instructions at TODO-link-to-kraft-instructions

```console
$ kraft
    .
   /^\     Build and use highly customized and ultra-lightweight unikernels.
  :[ ]:
  | = |    Version:          0.6.2
 /|/=\|\   Documentation:    https://kraftkit.sh/
(_:| |:_)  Issues & support: https://github.com/unikraft/kraftkit/issues
   v v
   ' '

[...]
```