2023-12-27 20:37:40 +00:00
< p align = "center" >
< img src = "docs/src/images/logo_en.svg" alt = "asterinas-logo" width = "620" > < br >
2024-02-15 07:35:17 +00:00
A secure, fast, and general-purpose OS kernel written in Rust and compatible with Linux
2023-12-27 20:37:40 +00:00
< / p >
2022-05-18 06:26:07 +00:00
2024-02-27 03:23:06 +00:00
[](https://github.com/asterinas/asterinas/actions/workflows/license_check.yml)
[](https://github.com/asterinas/asterinas/actions/workflows/framework_test.yml)
[](https://github.com/asterinas/asterinas/actions/workflows/kernel_test.yml)
2024-02-26 03:08:42 +00:00
2024-02-15 08:47:10 +00:00
English | [中文版 ](README_CN.md )
2023-12-27 20:37:40 +00:00
## Introducing Asterinas
2022-05-18 06:26:07 +00:00
2024-02-15 08:47:10 +00:00
Asterinas is a _secure_ , _fast_ , and _general-purpose_ OS kernel
2024-01-26 03:51:40 +00:00
that provides _Linux-compatible_ ABI.
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,
known as [the framekernel architecture ](https://asterinas.github.io/book/kernel/the-framekernel-architecture.html ),
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,
thanks to the flexibility offered by [MPL ](#License ).
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.
However, [our aim for 2024 ](https://asterinas.github.io/book/kernel/roadmap.html ) is
to make Asterinas production-ready on x86-64
for both bare-metal and VM environments.
## Getting Started
Get yourself an x86-64 Linux machine with Docker installed.
Follow the three simple steps below to get Asterinas up and running.
1. Download the latest source code.
2023-12-27 20:37:40 +00:00
2022-08-31 07:10:40 +00:00
```bash
2024-01-26 03:51:40 +00:00
git clone https://github.com/asterinas/asterinas
2022-08-31 07:10:40 +00:00
```
2024-01-26 03:51:40 +00:00
2. Run a Docker container as the development environment.
2022-08-31 07:10:40 +00:00
2022-08-17 03:22:49 +00:00
```bash
2024-02-27 03:23:06 +00:00
docker run -it --privileged --network=host --device=/dev/kvm -v ./asterinas:/root/asterinas asterinas/asterinas:0.4.0
2022-08-17 03:22:49 +00:00
```
2024-02-26 02:44:21 +00:00
3. Install the Asterinas OSDK from source.
2023-07-05 06:08:58 +00:00
2023-04-10 03:12:42 +00:00
```bash
2024-02-26 02:44:21 +00:00
make install_osdk
```
4. Inside the container, go to the project folder to build and run Asterinas.
```bash
cargo osdk build
cargo osdk run
2023-02-07 08:05:21 +00:00
```
2024-01-26 03:51:40 +00:00
If everything goes well, Asterinas is now up and running inside a VM.
2023-05-29 05:29:53 +00:00
2024-01-26 03:51:40 +00:00
## The Book
2023-10-08 09:38:24 +00:00
2024-01-26 03:51:40 +00:00
See [The Asterinas Book ](https://asterinas.github.io/book/ ) to learn more about the project.
2023-09-05 08:32:02 +00:00
## License
2024-01-26 03:51:40 +00:00
Asterinas's source code and documentation primarily use the
[Mozilla Public License (MPL), Version 2.0 ](https://github.com/asterinas/asterinas/blob/main/LICENSE-MPL ).
Select components are under more permissive licenses,
detailed [here ](https://github.com/asterinas/asterinas/blob/main/.licenserc.yaml ). For the rationles behind the choice of MPL, see [here ](https://asterinas.github.io/book/index.html#licensing ).