All Projects → Luis-Hebendanz → Svm_kernel

Luis-Hebendanz / Svm_kernel

Licence: gpl-3.0
x86_64 AMD kernel optimized for performance & hypervisor usage

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Svm kernel

Ksm
A fast, hackable and simple x64 VT-x hypervisor for Windows and Linux. Builtin userspace sandbox and introspection engine.
Stars: ✭ 673 (+2003.13%)
Mutual labels:  x86-64, kernel, hypervisor
novusk
A kernel written in Rust
Stars: ✭ 61 (+90.63%)
Mutual labels:  kernel, x86-64
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-50%)
Mutual labels:  kernel, x86-64
S6 pcie microblaze
PCI Express DIY hacking toolkit for Xilinx SP605
Stars: ✭ 301 (+840.63%)
Mutual labels:  kernel, hypervisor
Blog os
Writing an OS in Rust
Stars: ✭ 8,120 (+25275%)
Mutual labels:  x86-64, kernel
ktf
Kernel Test Framework
Stars: ✭ 125 (+290.63%)
Mutual labels:  kernel, x86-64
Minivisorpkg
The research UEFI hypervisor that supports booting an operating system.
Stars: ✭ 294 (+818.75%)
Mutual labels:  kernel, hypervisor
misaka
Experimental x86_64 kernel project. Planned eventual successor to the kernel in ToaruOS. WIP
Stars: ✭ 82 (+156.25%)
Mutual labels:  kernel, x86-64
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+14546.88%)
Mutual labels:  kernel, x86-64
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+1028.13%)
Mutual labels:  x86-64, kernel
The holy book of x86
A simple guide to x86 architecture, assembly, memory management, paging, segmentation, SMM, BIOS....
Stars: ✭ 577 (+1703.13%)
Mutual labels:  x86-64, kernel
nautilus
Nautilus Aerokernel
Stars: ✭ 30 (-6.25%)
Mutual labels:  kernel, hpc
rust-kernel-barebones
A minimal 64-bit rust kernel and a bunch of configuration scripts that can be used to bootstrap Operating system development using Nightly-Rust compiler.
Stars: ✭ 42 (+31.25%)
Mutual labels:  kernel, x86-64
yask
YASK--Yet Another Stencil Kit: a domain-specific language and framework to create high-performance stencil code for implementing finite-difference methods and similar applications.
Stars: ✭ 81 (+153.13%)
Mutual labels:  kernel, hpc
SynnixOS
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Stars: ✭ 40 (+25%)
Mutual labels:  kernel, x86-64
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (+46.88%)
Mutual labels:  kernel, x86-64
uvmm
Virtual machine monitor for L4Re
Stars: ✭ 22 (-31.25%)
Mutual labels:  x86-64, hypervisor
wiser
🐎 Extremely minimal vmm for linux written in C. Hopefully someday will spin linux-vm for you.
Stars: ✭ 249 (+678.13%)
Mutual labels:  kernel, hypervisor
Learn Kvm
Qemu KVM(Kernel Virtual Machine)学习笔记
Stars: ✭ 305 (+853.13%)
Mutual labels:  kernel, hypervisor
Frakti
The hypervisor-based container runtime for Kubernetes.
Stars: ✭ 630 (+1868.75%)
Mutual labels:  kernel, hypervisor

==== WORK IN PROGRESS ====

Working grub bootloader, currently implementing mode switch to long mode

Description

x86_64 HPC AMD kernel written in Rust. Optimized for hypervisor usage.

Setup & Debug Build

Clone the repo with submodules:

$ git clone --recursive <url>

Pinned rustc version is found in rust-toolchain

Install the dependencies listed in shell.nix or execute nix-shell shell.nix if on NixOS.

Install cargo dependencies:

$ cargo install -p svm_kernel/bootimage
$ rustup component add llvm-tools-preview

Run in qemu with:

$ cargo run

Close the instance with CTRL+A,X or CTRL+C

Build on filechange:

$ cd svm_kernel
$ cargo watch

Release build:

Execute:

$ cargo run --release

The resulting file lies in: target/x86_64-os/release/bootimage-svm_kernel.bin Flash it with:

$ dd bs=5M if=target/x86_64-os/release/bootimage-svm_kernel.iso of=/dev/MYDEVICE

OR Edit the file Cargo.toml and change build-command to ["build", "--release"] Then execute cargo bootimage --grub

Generate & view assembly

$ cargo asm

You can find the asm file in target/x86_64-os/release/deps/svm_kernel-*.s

Debug with gdb

$ qemu-kvm -cpu qemu64,+svm,vendor=AuthenticAMD -drive format=raw,file=target/x86_64-os/debug/bootimage-svm_kernel.bin -nographic -s -S

In another shell execute:

$ gdb target/x86_64-os/debug/svm_kernel.d -ex "target remote:1234"

You have to use hb instead of b in gdb when using qemu-kvm. If not the breakpoints get ignored. Note: svm_kernel.d are the extracted symbols from the svm_kernel binary.

If you want to debug other cores you have to use qemu in emulation mode and not in kvm mode! If qemu is in emulation mode gdb sees other cores as threads thus settings breakpoints has to be done as follows: List all cores and its IDs:

(gdb) thread

Set breakpoint

(gdb) break <location> thread <thread-id>

Debug with radare2

$ r2 -B [TODO] target/x86_64-os/debug/svm_kernel

Look into svm_kernel/external/bootloader/linker.ld to find the offset where the kernel gets mapped to.

Run tests

To execute tests run:

$ cargo test

Run specific test:

$ cargo test --test heap_allocator

Resources

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