Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"MD029": { "style": "one" },
"MD014": false,
"MD033": false,
"MD034": false,
"MD041": false,
"line-length": false
}
4 changes: 2 additions & 2 deletions content/blog/2017-12-05-unleashing-unikernels.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ from the community. To get you started, here are a number of available
resources:

* **Developer's guide**: available in the docs directory of the Unikraft sources or [here](http://docs.unikraft.org/)
* **Website**: The main Unikraft website: http://unikraft.org
* **Website**: The main Unikraft website: <http://unikraft.org>
* **Mailing list**: we share the mailing list with MiniOS, please subscribe [here](https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel)

Please don't be shy about getting in touch with us, we would be more
than happy to answer any questions you may have. You can reach the
core Unikraft development team at sysml@listserv.neclab.eu .
core Unikraft development team at <sysml@listserv.neclab.eu> .
6 changes: 3 additions & 3 deletions content/blog/2021-04-26-unikraft-at-eurosys.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ In addition, the paper has received the conference's 3 reproducibility badges,
meaning that the results in the paper have been reproduced by independent
reviewers; you can even try the experiments out yourself here:

> https://github.com/unikraft/eurosys21-artifacts.
> <https://github.com/unikraft/eurosys21-artifacts>.

Unikraft's main goal is to bring unikernels, specialized virtual machines able
to provide excellent performance, into the mainstream. Unikraft is a novel
Expand All @@ -34,7 +34,7 @@ Unikraft images for these apps are around 1MB, require less than 10MB of RAM to
run, and boot in around 1ms on top of the VMM time (total boot time 3ms-40ms).
The full paper can be found here:

> https://dl.acm.org/doi/proceedings/10.1145/3447786
> <https://dl.acm.org/doi/proceedings/10.1145/3447786>

Beyond the paper, we have put a lot of work into developing
[kraft](https://github.com/unikraft/kraft), a tool that makes it easy to build
Expand All @@ -43,6 +43,6 @@ process of integrating Unikraft with major monitoring and orchestration tools
such as Kubernetes and Prometheus, so stay tuned for much more!

Unikraft is part of the Xen Project, a hosted project at the Linux Foundation
and can be found at www.unikraft.org. We'd be more than grateful if you took
and can be found at <www.unikraft.org>. We'd be more than grateful if you took
Unikraft out for a spin and gave us feedback on what you think. Contributions
are, of course, more than welcome!
4 changes: 2 additions & 2 deletions content/blog/2022-02-05-new-site-and-unikraft-at-fosdem22.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Kicking off 2022 with a new site and release at FOSDEM!"
description: |
As the new year begins, we're excited to show off many of the things the
community has been working over the last two months.
community has been working over the last two months.
publishedDate: 2022-02-04
authors:
- Alexander Jung
Expand Down Expand Up @@ -56,7 +56,7 @@ applications and libraries (both external and internal). A big thank you to
project.

To get started using it, please visit the related repository at
https://github.com/unikraft/ide-vscode
<https://github.com/unikraft/ide-vscode>


### Unikraft at FOSDEM'22
Expand Down
6 changes: 3 additions & 3 deletions content/blog/2022-02-17-unikraft-at-asplos22.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ We also show that, under equivalent configurations, FlexOS performs similarly or
**Update**: Following the presentation at the conference, **FlexOS was awarded "Distinguised Artifacts" at [ASPLOS'22](https://asplos-conference.org/2022/).** 🏆
</Info>

More details about FlexOS can be found at https://project-flexos.github.io
More details about FlexOS can be found at <https://project-flexos.github.io>

### Unikraft Tutorial

With the advance of virtualization technology and the constant demand for specialization, security and performance, unikernels are no longer a fringe idea.
In this tutorial we present Unikraft, a unikernel SDK aiming for extreme specialization.

The event will be held in hybrid format, both in person and virtually.
For more information about the event and how to register, please visit https://asplos-conference.org.
For more information about the event and how to register, please visit <https://asplos-conference.org>.
All virtual attendees will be able to watch all talks, participate in all Q&As, as well as have online help via dedicated members from the open-source community.

For full details of the event and to follow along, please visit the dedicated tutorial website at: https://asplos22.unikraft.org
For full details of the event and to follow along, please visit the dedicated tutorial website at: <https://asplos22.unikraft.org>
12 changes: 6 additions & 6 deletions content/blog/2022-08-20-unikraft-releases-phoebe.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Providing `posix-socket` opens up new possibilities for "mixing and matching" AF
Now the developer has the power to easily choose which implementation underlies a particular AF.


#### Usage
#### Usage

This library allows for the registration of socket interfaces, listed within [`struct posix_socket_ops`](#), and exposes unikernel-wide POSIX prototypes for `socket()`, `accept()`, `bind()`, `listen()`, `connect()`, `send()`, `recv()` and friends in order to access them via a corresponding AF number.

Expand Down Expand Up @@ -163,10 +163,10 @@ _This feature was championed by [Simon Kuenzer](https://github.com/skuenzer) and

In v0.10.0 we mark the start of a transition for better support of [musl](https://www.musl-libc.org/) via [`lib-musl`](https://github.com/unikraft/lib-musl) to Unikraft.
Musl is a feature-rich and performant standard C library (_libc_) alternative to [newlib](https://github.com/unikraft/lib-newlib).
With this initial introduction of musl into Unikraft s a major milestone for the project as many important OS primitives, including scheduling were refactored to become more generic and general-purpose for the
With this initial introduction of musl into Unikraft s a major milestone for the project as many important OS primitives, including scheduling were refactored to become more generic and general-purpose for the

The introduction of musl will facilitate the running of applications under binary-compatibility mode (i.e. running unmodified Linux ELFs with Unikraft) where future versions of Unikraft will need only to be statically linked against existing applications.
With Musl, external application and library porting will be easier too.
With Musl, external application and library porting will be easier too.

<Info>
**The road to full musl**
Expand All @@ -181,7 +181,7 @@ Changes to the Unikraft core include a rewrite of the internal threading impleme
### SMP implementation for x86_64

_This feature was championed by [Marc Rittinghaus](https://github.com/marcrittinghaus) and [Cristian Vijelie](https://github.com/cristian-vijelie) with extensive input from [Sairaj Kodilkar](https://github.com/Sairajkodilkar), [Răzvan Deaconescu](https://github.com/razvand) and [Răzvan Vîrtan](https://github.com/razvanvirtan)._

In v0.10.0, we also add the x86_64 implementation on top of [Unikraft's abstract the SMP API introduced in v0.9.0](https://unikraft.org/blog/2022-06-13-unikraft-releases-hyperion/#a-new-common-smp-api), which provides the means to initialize and execute code on secondary CPU cores.

#### Implementation
Expand Down Expand Up @@ -369,7 +369,7 @@ This is due to the fact that these two functions are more complex to implement a
#### Future Work

There are the `capget` and `capset` system calls which are currently implemented in `posix-user` although they are probably better moved to [`posix-process`](https://github.com/unikraft/unikraft/tree/staging/lib/posix-process) as they are related to the capabilities of threads.
For now, we keep them here so that we do not collide with changes to `posix-process` that are about to be published by [Simon Kuenzer](https://github.com/skuenzer] for musl compatibility.
For now, we keep them here so that we do not collide with changes to `posix-process` that are about to be published by [Simon Kuenzer](https://github.com/skuenzer) for musl compatibility.


### Community Activities
Expand All @@ -380,7 +380,7 @@ Our 3 students are currently working on their GSoC projects:
- [Maria Sfîrăială](https://github.com/mariasfiraiala): Shadow Stack Support in Unikraft
- [Xiangyi Meng](https://github.com/xymeng16): Isolating Unikraft with Intel SGX

See their latest blog posts with updates: https://unikraft.org/blog/
See their latest blog posts with updates: <https://unikraft.org/blog/>

Also, we continued our hackathons series with the [Unikraft Aachen Hackathon](https://unikraft.org/community/hackathons/2022-06-aachen/) during June 25-26, 2022, and presented to participants the exciting world of unikernels and Unikraft.
Participants were able to solve technical challenges and make their first PRs to the Unikraft GitHub repositories.
Expand Down
6 changes: 3 additions & 3 deletions content/blog/2022-10-14-unikraft-reaches-1k-github-stars.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "Unikraft Reaches 1K+ GitHub Stars! (and 500 Discord Users)"
description: |
We're ecstatic to announce that a week ago Unikraft reached 1K stars
We're ecstatic to announce that a week ago Unikraft reached 1K stars
on Github on its main repository!
publishedDate: 2022-10-14
authors:
Expand Down Expand Up @@ -37,7 +37,7 @@ It was becoming clear to us that a different approach was needed. Back then, the

From the beginning we wanted to make sure that Unikraft would allow for full specialization, that is, that the entire software stack running underneath an application, from the low level operating system code all the way up to the code that provides application compatibility, could be fully (and easily) tailored to that application's needs. To achieve this, one of the main architectural principles of Unikraft is that it be fully modular: everything in Unikraft is a library that can be included or removed from each build.

While several other unikernel projects had a small kernel (e.g., [OSv](https://osv.io/), [MirageOS](https://mirage.io/)), none of them were modular, so not very easy to customize and fully specialize. Beyond the architectural principle of being modular, there were three targets we wanted to achieve:
While several other unikernel projects had a small kernel (e.g., [OSv](https://osv.io/), [MirageOS](https://mirage.io/)), none of them were modular, so not very easy to customize and fully specialize. Beyond the architectural principle of being modular, there were three targets we wanted to achieve:

* **Performance**: those familiar with unikernels know about their high performance potential; in practice, many projects failed to deliver high performance (e.g., Rump).
* **Application compatibility**: for Unikraft to be successful, we made it an explicit target to (1) be able to run unmodified applications and languages and (2) to run as wide a range of them as possible (more on this below). Many past unikernel projects (including some of ours) required application modifications, or could only run a single language, or sometimes only a single application.
Expand All @@ -56,4 +56,4 @@ Kubernetes integration, so you can seamlessly deploy Unikraft images.

This is of course not all: we are busy working on security features, additional VMM and hypervisor support, and many other exciting areas; check out our [roadmap](https://github.com/orgs/unikraft/projects/24/views/31) for more details.

Thank you for reading this far and please make sure to join our friendly community on Discord , or any of our upcoming [events](https://unikraft.org/community/events/) or [hackathons](https://unikraft.org/community/hackathons/). Comments, questions and any sort of feedback is greatly appreciated and can be sent directly to me at felipe@unikraft.io .
Thank you for reading this far and please make sure to join our friendly community on Discord , or any of our upcoming [events](https://unikraft.org/community/events/) or [hackathons](https://unikraft.org/community/hackathons/). Comments, questions and any sort of feedback is greatly appreciated and can be sent directly to me at <felipe@unikraft.io> .
14 changes: 8 additions & 6 deletions content/blog/2022-10-19-ukl-vs-unikraft.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: "Unikraft vs. UKL: What's the Difference?"
description: |
You may have seen recent news about a set of patches] hitting the
Linux kernel mailing list for Unikernel Linux (UKL), "... a research
project aimed at integrating application-specific optimizations to the
You may have seen recent news about a set of patches] hitting the
Linux kernel mailing list for Unikernel Linux (UKL), "... a research
project aimed at integrating application-specific optimizations to the
Linux kernel.
publishedDate: 2022-10-19
authors:
Expand All @@ -18,16 +18,16 @@ In fact, [the original UKL paper was published back in 2019](https://dl.acm.org/
But what exactly is a unikernel?
Perhaps the easiest definition is that it is a virtual machine specialized to the needs of a particular target application, the key word being specialized.
And because of specialization the resulting unikernel can provide efficiency much higher than a general-purpose operating system such as Linux or FreeBSD could.
Here I am using efficiency as an umbrella term to mean higher I/O throughput, smaller images, lower memory consumption, lower latency and quick boot times, among others. And, because the entire software stack is specialized, that typically results in a much smaller Trusted Computing Base (TCB) and potentially fewer vulnerabilities.
Here I am using efficiency as an umbrella term to mean higher I/O throughput, smaller images, lower memory consumption, lower latency and quick boot times, among others. And, because the entire software stack is specialized, that typically results in a much smaller Trusted Computing Base (TCB) and potentially fewer vulnerabilities.

In addition to specialization, many unikernels have a single-memory address space: since many of them target cloud or virtual deployments where a hypervisor is running underneath and providing isolation already, they get rid of the user-space/kernel divide since it's a source of overhead.

Having a single memory address space is what projects like Unikernel Linux do; unfortunately, they obviate one of the main features of "true" unikernels: specialization.
In UKL, the Linux kernel is still there as it would be with a standard Ubuntu or Debian virtual machine, just running in the same address space as the application.
In UKL, the Linux kernel is still there as it would be with a standard Ubuntu or Debian virtual machine, just running in the same address space as the application.

Why would one bother turning a general-purpose OS like Linux into a unikernel in the first place, given that it was clearly not intended for unikernels/specialization?
The answer is great application compatibility: ultimately it's still Linux underneath, so all your favorite apps still run unmodified – or at least that's the theory.
In practice, UKL requires recompiling all applications/runtimes against a custom glibc and the kernel.
In practice, UKL requires recompiling all applications/runtimes against a custom glibc and the kernel.

In short, there are two ways to go about application compatibility:

Expand All @@ -43,13 +43,15 @@ This type of libc-level compatibility, also offered by UKL, is less than ideal:
This is problematic for certain languages (e.g. Go), for which most such invocations are made directly by the runtime and not through the libc.
In contrast, Unikraft offers system-call level compatibility, seamlessly boosting the performance of all kernel invocations.

<!-- markdownlint-disable MD034 -->
<Image
border
maxW={'2xl'}
ratio={5/3}
src="https://raw.githubusercontent.com/unikraft/eurosys21-artifacts/master/plots/fig_13_nginx-perf.svg"
description="Performance of NGINX on Unikraft vs. other runtime implementations."
/>
<!-- markdownlint-enable MD034 -->

We designed and built Unikraft with specialization in mind from the beginning, around a highly modular architecture where every component is a library that can be added, removed or configured, from low-level architecture-specific code, to schedulers, memory allocators and network stacks.
The result is Unikraft images that contain only the code that an application needs to run, nothing more, nothing less, always with optimization and performance in mind.
Expand Down
2 changes: 1 addition & 1 deletion content/blog/2023-02-07-unikraft-releases-epimetheus.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ area that uses 2MB pages. The size must be a multiple of 2MB.
uk_vma_advise(uk_vas_get_active(), vaddr, 0x100000, UK_VMA_ADV_DONTNEED, 0);
```

7. Create a linear ring buffer that mirrors the buffer at the end to avoid copying (see https://en.wikipedia.org/wiki/Circular_buffer#Optimization). Note: Precede an address reservation for the whole 2 * PAGE_SIZE * PAGES range to ensure race free allocation of the virtual addresses. Note: Physical memory mapped with `uk_vma_map_dma()` will not be freed automatically when the VMA is unmapped.
7. Create a linear ring buffer that mirrors the buffer at the end to avoid copying (see <https://en.wikipedia.org/wiki/Circular_buffer#Optimization>). Note: Precede an address reservation for the whole 2 * PAGE_SIZE * PAGES range to ensure race free allocation of the virtual addresses. Note: Physical memory mapped with `uk_vma_map_dma()` will not be freed automatically when the VMA is unmapped.

```clike
struct uk_vas *vas = uk_vas_get_active();
Expand Down
4 changes: 2 additions & 2 deletions content/blog/2023-05-15-unikraft-releases-atlas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ Employing reader-writer locks is thus more efficient for sychronizing data struc

More information on the changes related to synchronization in Unikraft can be found here:

- https://unikraft.org/blog/2022-06-27-unikraft-synchronization/
- https://unikraft.org/blog/2022-07-19-unikraft-synchronization/
- <https://unikraft.org/blog/2022-06-27-unikraft-synchronization/>
- <https://unikraft.org/blog/2022-07-19-unikraft-synchronization/>


## Native Firecracker VMM Support ([#760](https://github.com/unikraft/unikraft/pull/760))
Expand Down
2 changes: 1 addition & 1 deletion content/blog/2024-06-07-unikraft-releases-v0.17.0.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ Participants were able to deploy existing application and also try their own, us

#### Xen Summit 2024

Unikraft took part in [Xen Summit 2024](https://events.linuxfoundation.org/xen-project-summit/), the yearly gathering of the Xen community, in Lisbon, Portugal, on June 4-6, 2024. We gave the Keynote, titled [Unikraft Has Arrived: The Lightweight, Fast, Usable Solution for Cloud Deployments] (https://docs.google.com/presentation/d/1bOskgOIW5P0yQjybuiEqWolXwuCoTzwBy5e_OqGoRi8/edit?usp=sharing).
Unikraft took part in [Xen Summit 2024](https://events.linuxfoundation.org/xen-project-summit/), the yearly gathering of the Xen community, in Lisbon, Portugal, on June 4-6, 2024. We gave the Keynote, titled [Unikraft Has Arrived: The Lightweight, Fast, Usable Solution for Cloud Deployments](https://docs.google.com/presentation/d/1bOskgOIW5P0yQjybuiEqWolXwuCoTzwBy5e_OqGoRi8/edit?usp=sharing).

We also headed the "Xen and Unikraft (and unikernels)" design session, where we captured insights in improving Unikraft's Xen support and where we clarified use cases for Unikraft for Xen (such as stub domains and Qubes OS).

Expand Down
2 changes: 1 addition & 1 deletion content/blog/2024-12-21-unikraft-releases-v0.18.0.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ For For a general descriptions on how to access the exported stats, see the docu
* [lib/ukallocbuddy: Boot error message for Nginx (QEMU, KVM, x86_64)](https://github.com/unikraft/unikraft/issues/1505)
* [plat/kvm does not boot on Firecracker `0.10.0-dev` on arm64](https://github.com/unikraft/unikraft/issues/1488)

For a full list of issues see: https://github.com/unikraft/unikraft/issues
For a full list of issues see: <https://github.com/unikraft/unikraft/issues>

### Catalog Update

Expand Down
2 changes: 1 addition & 1 deletion content/community/events.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: |
Weekly technical meetings occur Wednesday at 13:00 CET on the [Unikraft Discord
Server](https://bit.ly/UnikraftDiscord) on the `#monkey-business` voice channel.
All meetings are minuted, you can access past and future meeting notes at
https://github.com/unikraft/meeting-notes. The general topics of weekly
<https://github.com/unikraft/meeting-notes>. The general topics of weekly
technical meetings vary and largely plays as a round-table for discussion of
on-going projects, software releases and more.

Expand Down
Loading