All Projects → bobuhiro11 → gokvm

bobuhiro11 / gokvm

Licence: MIT license
KVM based tiny x86 hypervisor written in pure golang, which can boot Linux

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to gokvm

wiser
🐎 Extremely minimal vmm for linux written in C. Hopefully someday will spin linux-vm for you.
Stars: ✭ 249 (+203.66%)
Mutual labels:  kernel, hypervisor, kvm
Learn Kvm
Qemu KVM(Kernel Virtual Machine)学习笔记
Stars: ✭ 305 (+271.95%)
Mutual labels:  kernel, hypervisor, kvm
Minivisorpkg
The research UEFI hypervisor that supports booting an operating system.
Stars: ✭ 294 (+258.54%)
Mutual labels:  kernel, hypervisor
S6 pcie microblaze
PCI Express DIY hacking toolkit for Xilinx SP605
Stars: ✭ 301 (+267.07%)
Mutual labels:  kernel, hypervisor
Ksm
A fast, hackable and simple x64 VT-x hypervisor for Windows and Linux. Builtin userspace sandbox and introspection engine.
Stars: ✭ 673 (+720.73%)
Mutual labels:  kernel, hypervisor
Unidbg
Allows you to emulate an Android ARM32 and/or ARM64 native library, and an experimental iOS emulation
Stars: ✭ 1,168 (+1324.39%)
Mutual labels:  hypervisor, kvm
Kvm Vmi
KVM-based Virtual Machine Introspection
Stars: ✭ 153 (+86.59%)
Mutual labels:  hypervisor, kvm
Frakti
The hypervisor-based container runtime for Kubernetes.
Stars: ✭ 630 (+668.29%)
Mutual labels:  kernel, hypervisor
Diosix
A lightweight, secure, multiprocessor bare-metal hypervisor written in Rust for RISC-V
Stars: ✭ 116 (+41.46%)
Mutual labels:  kernel, hypervisor
Hdk
(unofficial) Hyper-V® Development Kit
Stars: ✭ 166 (+102.44%)
Mutual labels:  kernel, hypervisor
Shadow Box For X86
Shadow-Box: Lightweight and Practical Kernel Protector for x86 (Presented at BlackHat Asia 2017/2018, beVX 2018 and HITBSecConf 2017)
Stars: ✭ 178 (+117.07%)
Mutual labels:  kernel, hypervisor
Solo5
A sandboxed execution environment for unikernels
Stars: ✭ 659 (+703.66%)
Mutual labels:  hypervisor, kvm
Kvm Kernel Example
Examples for: Learning KVM - implement your own kernel
Stars: ✭ 221 (+169.51%)
Mutual labels:  kernel, kvm
Svm kernel
x86_64 AMD kernel optimized for performance & hypervisor usage
Stars: ✭ 32 (-60.98%)
Mutual labels:  kernel, hypervisor
Kafl
A fuzzer for full VM kernel/driver targets
Stars: ✭ 204 (+148.78%)
Mutual labels:  kernel, kvm
vmdashboard
web-based open source virtualization management interface for QEMU and KVM virtual machines
Stars: ✭ 66 (-19.51%)
Mutual labels:  hypervisor, kvm
tn3399 v3
TN3399_V3 开发板折腾记录
Stars: ✭ 66 (-19.51%)
Mutual labels:  kernel
MsFontsFuzz
OpenType font file format fuzzer for Windows
Stars: ✭ 49 (-40.24%)
Mutual labels:  kernel
Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (-58.54%)
Mutual labels:  kernel
opensvc
The OpenSVC node agent
Stars: ✭ 27 (-67.07%)
Mutual labels:  kvm

gokvm Build Status Coverage Status code lines Go Reference Go Report Card Maintainability

gokvm is a hypervisor that uses KVM as an acceleration. It is implemented completely in the Go language and has no dependencies other than the standard library. With only 1.5k lines of code, it can boot Linux 5.10, the latest version at the time, without any modifications (see v0.0.1). It includes naive and simple device emulation for serial console, virtio-net, and virtio-blk. The execution environment is limited to the x86-64 Linux environment. This should be useful for those who are interested in how to use KVM from userland. The latest version supports the following features:

  • kvm acceleration
  • multi processors
  • serial console
  • virtio-net
  • virtio-blk

This is an experimental project, so please do not use it in production.

demo

CLI

Extract the latest release from the Github Release tab and run it. Before running, make sure /dev/kvm exists. You can use existing bzImage and initrd, or you can create them using the Makefile of this project.

tar zxvf gokvm*.tar.gz
./gokvm -k ./bzImage -i ./initrd  # To exit, press Ctrl-a x.

Go package

This project includes a thin wrapper for the KVM API using ioctl. Please refer to the following link to use it.

https://pkg.go.dev/github.com/bobuhiro11/gokvm

Reference

Thanks to the many useful resources on KVM, this project was able to boot Linux on a virtual machine.

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].