Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.

Commit

Permalink
QEMU不是KVM
Browse files Browse the repository at this point in the history
  • Loading branch information
u8cat committed Apr 1, 2022
1 parent 3d7b1bd commit c6b105a
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ USTC 011705 (OSH) Course Project of Runikraft Group

## Project Summary

Runikraft is a unikernel written in Rust language that runs on RSIC-V + KVM. It is based on Unikraft implemented in C language; while inheriting the efficiency, customizablility, good-compatibility and security of Unikraft, it further simplifies the building process of the OS image, adds support to RISC-V and enhances the kernel security via Rust language.
Runikraft is a unikernel written in Rust language that runs on RSIC-V architecture + QEMU platform. It is based on Unikraft implemented in C language; while inheriting the efficiency, customizablility, good-compatibility and security of Unikraft, it further simplifies the building process of the OS image, adds support to RISC-V and enhances the kernel security via Rust language.

## Directories Description

Expand Down
8 changes: 6 additions & 2 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@
# Noto Serif CJK and Noto Sans CJK (Ubuntu package: fonts-noto-cjk fonts-noto-cjk-extra)
# SimKai, SimFang

export MAKE_ROOT_DIR := $(shell pwd)/build
export REPORT_ROOT_DIR := $(shell pwd)/report
PWD := $(shell pwd)
export MAKE_ROOT_DIR := $(PWD)/build
export REPORT_ROOT_DIR := $(PWD)/report

#currently nothing for all
.PHONY: all
all:

.PHONY: everything
everything: all report

report: $(MAKE_ROOT_DIR)/report/makefile
cd $(MAKE_ROOT_DIR)/report && $(MAKE)

Expand Down
4 changes: 2 additions & 2 deletions report/11_research/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

## 项目简介

Runikraft 是用Rust语言编写的能在RISC-V + KVM上运行unikernel。它基于用C语言实现的Unikraft,在继承Unikraft的高效性、可定制性、良兼容性、安全性的同时,进一步简化了构建系统镜像的流程,加入了RISC-V支持,并且用Rust语言提供了更强的内核安全保证。
Runikraft 是用Rust语言编写的能在RISC-V架构 + QEMU平台上运行unikernel。它基于用C语言实现的Unikraft,在继承Unikraft的高效性、可定制性、良兼容性、安全性的同时,进一步简化了构建系统镜像的流程,加入了RISC-V支持,并且用Rust语言提供了更强的内核安全保证。

## 立项依据

我们小组计划仿照Unikraft的架构,用Rust语言编写能在RISC-V架构+ KVM平台上运行的unikernel——Runikraft。Runikraft的核心代码使用Rust编写,但允许用户代码使用任何语言编写。Runikraft强调构建系统镜像的简洁,用户只需要修改现有的项目的编译参数就可以构建基于Runikraft的系统镜像,而不必使用专用的工具链,更不需要重构代码。Runikraft是POSIX兼容的,所以它将支持内存管理、进程调度,甚至磁盘管理和进程通信。不过,这些功能都是可选的且可拓展的,如果用户不需要某项功能,他可以不将相关模块打包进系统镜像中,如果用户能够提供某些功能的更好实现,他可以用自己的实现替换原有的模块,甚至POSIX兼容层本身也是可选的,如果用户愿意为了效率重构代码,他也可以直接用Runikraft的专用API。Runikraft可以支持多进程,因为我们认为,将若干密切管理的程序打包到一个镜像会提高效率。与Unikraft一样,Runikraft在注重效率的同时兼顾安全性。我们计划实现ASLR、W^X政策、保护页、stack canary四项安全技术。
我们小组计划仿照Unikraft的架构,用Rust语言编写能在RISC-V架构+ QEMU平台上运行的unikernel——Runikraft。Runikraft的核心代码使用Rust编写,但允许用户代码使用任何语言编写。Runikraft强调构建系统镜像的简洁,用户只需要修改现有的项目的编译参数就可以构建基于Runikraft的系统镜像,而不必使用专用的工具链,更不需要重构代码。Runikraft是POSIX兼容的,所以它将支持内存管理、进程调度,甚至磁盘管理和进程通信。不过,这些功能都是可选的且可拓展的,如果用户不需要某项功能,他可以不将相关模块打包进系统镜像中,如果用户能够提供某些功能的更好实现,他可以用自己的实现替换原有的模块,甚至POSIX兼容层本身也是可选的,如果用户愿意为了效率重构代码,他也可以直接用Runikraft的专用API。Runikraft可以支持多进程,因为我们认为,将若干密切管理的程序打包到一个镜像会提高效率。与Unikraft一样,Runikraft在注重效率的同时兼顾安全性。我们计划实现ASLR、W^X政策、保护页、stack canary四项安全技术。

以往的unikernel项目的不足之处可以概况为(并不每个unikernel都有所有缺点):

Expand Down
7 changes: 4 additions & 3 deletions report/11_research/research-report.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
\setCJKmainfont[ItalicFont={KaiTi},BoldItalicFont={KaiTi},
BoldItalicFeatures={FakeBold=3}]{Noto Serif CJK SC}
\setCJKsansfont[BoldFont={Noto Sans CJK SC Bold},
BoldItalicFont={Noto Sans CJK SC Bold},
AutoFakeSlant]{Noto Sans CJK SC DemiLight}
\setCJKmonofont[AutoFakeBold=3,AutoFakeSlant]{FangSong}
\setmainfont{cmun}[Extension=.otf,UprightFont=*rm,
Expand Down Expand Up @@ -95,7 +96,7 @@
\vspace*{-5ex}
\noindent\textrm{\hfill\textit{by #1}}
\vspace*{2ex}\par}
\renewcommand{\today}{2022年3月30日}
\renewcommand{\today}{2022年4月1日}

\begin{document}
\sffamily %为方便屏幕阅读,文档主要使用无衬线字体
Expand All @@ -107,7 +108,7 @@
\tableofcontents

\section{项目简介}
Runikraft 是用Rust语言编写的能在RISC-V + KVM上运行unikernel
Runikraft 是用Rust语言编写的能在RISC-V架构 + QEMU平台上运行unikernel
它基于用C语言实现的Unikraft,在继承Unikraft的高效性、可定制性、良兼容性、
安全性的同时,进一步简化了构建系统镜像的流程,加入了RISC-V支持,并且
用Rust语言提供了更强的内核安全保证。
Expand Down Expand Up @@ -413,7 +414,7 @@ \subsection{Unikernel}
和Unikraft等六个目前仍然在维护的unikernel项目。

\section{立项依据}\sectionauthor{张子辰}
我们小组计划仿照Unikraft的架构,用Rust语言编写能在RISC-V架构+ KVM平台上
我们小组计划仿照Unikraft的架构,用Rust语言编写能在RISC-V架构+ QEMU平台上
运行的unikernel——Runikraft。Runikraft的核心代码使用Rust编写,但
允许用户代码使用任何语言编写
%——只要它能够被编译成入口为\texttt{\_start}的目标代码
Expand Down
1 change: 1 addition & 0 deletions report/20_feasibility/feasibility-report.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
\setCJKmainfont[ItalicFont={KaiTi},BoldItalicFont={KaiTi},
BoldItalicFeatures={FakeBold=3}]{Noto Serif CJK SC}
\setCJKsansfont[BoldFont={Noto Sans CJK SC Bold},
BoldItalicFont={Noto Sans CJK SC Bold},
AutoFakeSlant]{Noto Sans CJK SC DemiLight}
\setCJKmonofont[AutoFakeBold=3,AutoFakeSlant]{FangSong}
\setmainfont{cmun}[Extension=.otf,UprightFont=*rm,
Expand Down

0 comments on commit c6b105a

Please sign in to comment.