All Projects → iankronquist → Rustyvisor

iankronquist / Rustyvisor

Licence: mit
A hypervisor written in Rust. A work in progress.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rustyvisor

Tempesta
The Linux Application Delivery Controller
Stars: ✭ 429 (+1000%)
Mutual labels:  linux-kernel
Awesome Linux Rootkits
awesome-linux-rootkits
Stars: ✭ 583 (+1394.87%)
Mutual labels:  linux-kernel
Linux Lab
Docker/Qemu Based Linux Kernel Learning, Development and Testing Environment; New Linux ELF Video Course from this project author: https://www.cctalk.com/m/group/88089283
Stars: ✭ 771 (+1876.92%)
Mutual labels:  linux-kernel
Linux0.11
Linux内核0.11完全注释V3.0配套源代码
Stars: ✭ 497 (+1174.36%)
Mutual labels:  linux-kernel
Linuxboot
The LinuxBoot project is working to enable Linux to replace your firmware on all platforms.
Stars: ✭ 554 (+1320.51%)
Mutual labels:  linux-kernel
Broadcom Bt Firmware
Repository for various Broadcom Bluetooth firmware
Stars: ✭ 677 (+1635.9%)
Mutual labels:  linux-kernel
Kernel Exploits
Various kernel exploits
Stars: ✭ 397 (+917.95%)
Mutual labels:  linux-kernel
Lowlevelprogramming University
How to be low-level programmer
Stars: ✭ 7,224 (+18423.08%)
Mutual labels:  linux-kernel
Linux 0.11 Lab
Docker/Qemu/Bochs Based Linux 0.11 Kernel Development Environment; New Linux ELF Video Course from this project author: https://www.cctalk.com/m/group/88089283
Stars: ✭ 554 (+1320.51%)
Mutual labels:  linux-kernel
Diamorphine
LKM rootkit for Linux Kernels 2.6.x/3.x/4.x/5.x (x86/x86_64 and ARM64)
Stars: ✭ 725 (+1758.97%)
Mutual labels:  linux-kernel
Rdma Core
RDMA core userspace libraries and daemons
Stars: ✭ 536 (+1274.36%)
Mutual labels:  linux-kernel
Linux Insides
A little bit about a linux kernel
Stars: ✭ 23,971 (+61364.1%)
Mutual labels:  linux-kernel
Paper collection
Academic papers related to fuzzing, binary analysis, and exploit dev, which I want to read or have already read
Stars: ✭ 710 (+1720.51%)
Mutual labels:  linux-kernel
Awesome Android Performance
🏆Explore Android performance optimization in depth(continuous updating ...)
Stars: ✭ 433 (+1010.26%)
Mutual labels:  linux-kernel
Ebpf exporter
Prometheus exporter for custom eBPF metrics
Stars: ✭ 829 (+2025.64%)
Mutual labels:  linux-kernel
Dattobd
kernel module for taking block-level snapshots and incremental backups of Linux block devices
Stars: ✭ 400 (+925.64%)
Mutual labels:  linux-kernel
Ubuntu64 Rpi
适用于树莓派3b/3b+的64位系统.
Stars: ✭ 652 (+1571.79%)
Mutual labels:  linux-kernel
Exein Openwrt Public
Openwrt 18.06.5 featured with the Exein's security framework
Stars: ✭ 36 (-7.69%)
Mutual labels:  linux-kernel
Flagchecker
For effective cheating detection in competitions. Utilizes Linux Kernel Module (LKM) for generating flags.
Stars: ✭ 24 (-38.46%)
Mutual labels:  linux-kernel
Pi64
A 64-bit OS for the Raspberry Pi 3
Stars: ✭ 720 (+1746.15%)
Mutual labels:  linux-kernel

RustyVisor build_status

A hypervisor written in Rust.

The goal of this project is to learn more Rust and determine whether Rust is a significant improvement over C for systems programming tasks like implementing hypervisors.

This project takes the form of an Linux Kernel module which loads an x86_64 type II hypervisor which virtualizes the original host operating system. After inserting the module, Linux will be running inside a VM as a guest, and the host operating system will be RustyVisor!

Getting Started

Launching Vagrant

A Vagrantfile is included to aid development and testing. It requires libvirt, QEMU, and the vagrant-libvirt plugin. Additionally, your system must support NFS and nested KVM.

To launch the Vagrant box, simply run vagrant up in the repo root and cross your fingers. Once launched, access the VM with vagrant ssh, and cd to /vagrant. You can then build and launch Rustyvisor as described below.

Installing dependencies manually

RustyVisor depends on nightly Rust, Xargo, GCC, and the Linux kernel module development headers.

To install the Linux kernel headers and GCC on Ubuntu:

$ sudo apt-get install linux-headers-$(uname -r) gcc

On Fedora you can use:

$ sudo dnf install kernel-devel-$(uname -r) gcc

And for Arch Linux:

$ sudo pacman -S linux-headers gcc

Next install the nightly rust toolchain:

$ # Bootstrap rustup to get a nightly build of Rust.
$ curl https://sh.rustup.rs -sSf | sh
$ source ~/.cargo/env
$ rustup install nightly
$ rustup default nightly

To build Rust code for kernel context we use the cross compilation tool Xargo:

$ rustup component add rust-src
$ cargo install xargo

Building the hypervisor

$ make

Running the hypervisor

Your Linux kernel may already have KVM installed. If so, we have to remove it first.

$ ./scripts/remove-kvm.sh
$ sudo insmod rustyvisor.ko
$ sudo rmmod rustyvisor.ko

Contributions & Bugs

Pull requests welcome! This is a project in part to learn about Rust, so if there is code which isn't idiomatic, please feel free to show me a better way.

Please file bugs and find bugs to work on at GitHub.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].