Skip to content
/ vroom Public
forked from bootreer/vroom

NVMe driver written in Rust, adapted for the Hermit Operating System

License

Notifications You must be signed in to change notification settings

valopok/vroom

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vroom

This is a rewrite of the vroom userspace NVMe driver with the following changes:

  • compilable with no-std
  • usable with a custom allocator

The goal of the rewrite is to allow the driver to be used within the Hermit Unikernel.

The thesis of the original vroom project by Tuomas Pirhonen contains some details about the original implementation.

Disclaimer

This is by no means production-ready.
Do not use it in critical environments.
DMA may corrupt memory.

Build instructions for Linux systems

You will need Rust, as well as its package manager cargo.
The installation instructions can be found at rustup.rs.

Huge pages need to be enabled:

cd vroom
sudo ./setup-hugetlbfs.sh

Build the driver, as well as any examples:

cargo build --release --all-targets

Get the PCI address of an NVMe drive with lspci.
The address should be formatted as 0000:00:xx.x for the program.

Run the std_pci_huge example (root privileges are needed for DMA):

sudo ./target/release/examples/std_pci_huge 0000:00:08.0

Related projects

About

NVMe driver written in Rust, adapted for the Hermit Operating System

Resources

License

Stars

Watchers

Forks

Languages

  • Rust 99.6%
  • Shell 0.4%