2024-01-23 07:56:00 +00:00
|
|
|
# Asterinas Kernel
|
|
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
2024-02-15 07:35:17 +00:00
|
|
|
Asterinas is a _secure_, _fast_, and _general-purpose_ OS kernel
|
2024-09-30 22:07:13 +00:00
|
|
|
that provides an _Linux-compatible_ ABI.
|
2024-01-26 01:44:06 +00:00
|
|
|
It can serve as a seamless replacement for Linux
|
|
|
|
|
while enhancing _memory safety_ and _developer friendliness_.
|
|
|
|
|
|
|
|
|
|
* Asterinas prioritizes memory safety
|
|
|
|
|
by employing Rust as its sole programming language
|
|
|
|
|
and limiting the use of _unsafe Rust_
|
|
|
|
|
to a clearly defined and minimal Trusted Computing Base (TCB).
|
|
|
|
|
This innovative approach,
|
2024-01-26 02:19:11 +00:00
|
|
|
known as [the framekernel architecture](the-framekernel-architecture.md),
|
2024-01-26 01:44:06 +00:00
|
|
|
establishes Asterinas as a more secure and dependable kernel option.
|
|
|
|
|
|
|
|
|
|
* Asterinas surpasses Linux in terms of developer friendliness.
|
|
|
|
|
It empowers kernel developers to
|
|
|
|
|
(1) utilize the more productive Rust programming language,
|
|
|
|
|
(2) leverage a purpose-built toolkit called [OSDK]() to streamline their workflows,
|
|
|
|
|
and (3) choose between releasing their kernel modules as open source
|
|
|
|
|
or keeping them proprietary,
|
2024-01-26 02:19:11 +00:00
|
|
|
thanks to the flexibility offered by [MPL](../).
|
2024-01-26 01:44:06 +00:00
|
|
|
|
|
|
|
|
While the journey towards a production-grade OS kernel can be challenging,
|
|
|
|
|
we are steadfastly progressing towards our goal.
|
|
|
|
|
Currently, Asterinas only supports x86-64 VMs.
|
2024-01-26 02:19:11 +00:00
|
|
|
However, [our aim for 2024](roadmap.md) is
|
2024-01-26 01:44:06 +00:00
|
|
|
to make Asterinas production-ready on x86-64
|
|
|
|
|
for both bare-metal and VM environments.
|
2024-01-23 07:56:00 +00:00
|
|
|
|
|
|
|
|
## Getting Started
|
|
|
|
|
|
2024-01-26 01:44:06 +00:00
|
|
|
Get yourself an x86-64 Linux machine with Docker installed.
|
|
|
|
|
Follow the three simple steps below to get Asterinas up and running.
|
2024-01-23 07:56:00 +00:00
|
|
|
|
|
|
|
|
1. Download the latest source code.
|
|
|
|
|
|
2025-12-13 09:11:40 +00:00
|
|
|
```bash
|
|
|
|
|
git clone https://github.com/asterinas/asterinas
|
|
|
|
|
```
|
2024-01-23 07:56:00 +00:00
|
|
|
|
|
|
|
|
2. Run a Docker container as the development environment.
|
|
|
|
|
|
2025-12-13 09:11:40 +00:00
|
|
|
```bash
|
|
|
|
|
docker run -it --privileged \
|
|
|
|
|
--network=host \
|
|
|
|
|
--device=/dev/kvm \
|
|
|
|
|
-v $(pwd)/asterinas:/root/asterinas \
|
2026-01-15 03:55:23 +00:00
|
|
|
asterinas/asterinas:0.17.0-20260114
|
2025-12-13 09:11:40 +00:00
|
|
|
```
|
2024-01-23 07:56:00 +00:00
|
|
|
|
|
|
|
|
3. Inside the container, go to the project folder to build and run Asterinas.
|
|
|
|
|
|
2025-12-13 09:11:40 +00:00
|
|
|
```bash
|
|
|
|
|
make kernel
|
|
|
|
|
make run_kernel
|
|
|
|
|
```
|
2024-01-23 07:56:00 +00:00
|
|
|
|
|
|
|
|
If everything goes well, Asterinas is now up and running inside a VM.
|