uhyve

A specialized hypervisor for Hermit.

https://github.com/hermit-os/uhyve

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 17 committers (17.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary

Keywords

hermit hypervisor kvm unikernel

Keywords from Contributors

mesh interpretability sequences projection interactive hacking network-simulation
Last synced: 6 months ago · JSON representation ·

Repository

A specialized hypervisor for Hermit.

Basic Info
  • Host: GitHub
  • Owner: hermit-os
  • License: apache-2.0
  • Language: Rust
  • Default Branch: main
  • Homepage:
  • Size: 4.06 MB
Statistics
  • Stars: 272
  • Watchers: 9
  • Forks: 30
  • Open Issues: 58
  • Releases: 16
Topics
hermit hypervisor kvm unikernel
Created over 7 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Uhyve

crates.io Zulip Badge DOI

Uhyve is a minimal, special-purpose hypervisor for the Hermit kernel.

Installation

  1. Install the Rust toolchain. The Rust Foundation provides installation instructions.
  2. Install Uhyve:

sh cargo install --locked uhyve

Requirements

Linux

To check if your system supports virtualization, you can use the following command:

sh if egrep -c '(vmx|svm)' /proc/cpuinfo > /dev/null; then echo "Virtualization support found"; fi

Uhyve on Linux depends on the virtualization solution KVM (Kernel-based Virtual Machine). If the following command gives you some output, you are ready to go!

sh lsmod | grep kvm

[!NOTE] If the above steps don't work, make sure that you have enabled virtualization in your UEFI/BIOS settings.

macOS

[!WARNING] Currently, Uhyve is mainly developed for Linux. The macOS version has not been tested extensively and does not support all features of the Linux version.

You can install Apple's Xcode Command Line Tools using the following command:

sh xcode-select --install

Additionally, the included hypervisor bases on the Hypervisor Framework depending on OS X Yosemite (10.10) or newer.

To verify if your processor is able to support this framework, run the following in your Terminal:

sh sysctl kern.hv_support

The output kern.hv_support: 1 indicates virtualization support.

Starting with Big Sur, all processes using the Hypervisor API must have the com.apple.security.hypervisor entitlement and therefore must be signed.

Building from source

To build from source, simply checkout the code and use cargo build:

sh git clone https://github.com/hermit-os/uhyve.git cd uhyve cargo build --release

macOS Big Sur: Signing Uhyve

uhyve can be self-signed using the following command:

sh codesign -s - --entitlements app.entitlements --force path_to_uhyve/uhyve

The file app.entitlements must have following content:

xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.hypervisor</key> <true/> </dict> </plist>

For further information, please consult Apple's Documentation.

Usage

Assuming that you have installed Uhyve, run the hypervisor to start the unikernel:

sh uhyve /path/to/the/unikernel/binary

[!NOTE] This repository ships a few binaries that can be used for testing.

If you want to compile Hermit binaries yourself (or create your own), take a look at the following repositories: - hermit-os/hermit-rs - hermit-os/hermit-rs-template - hermit-os/hermit-c

Configuration

Uhyve can be configured using command line arguments and environment variables. This example launches a virtual machine with 4 GiB of memory and 4 cores:

bash uhyve -m 4GiB -c 4 path/to/unikernel

For more options, the default values, and the corresponding environment variables run:

bash uhyve --help

Contributing

If you are interested in contributing to Uhyve, make sure to check out the Uhyve wiki!

Our wiki contains instructions on working with Uhyve's source code, including setting up a suitable development environment, as well as profiling, testing and debugging Uhyve.

Known issues

  • Uhyve isn't able to pass more than 128 environment variables to the unikernel.

Licensing

Licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Owner

  • Name: The Hermit Operating System
  • Login: hermit-os
  • Kind: organization
  • Location: Germany

A Rust-based, lightweight unikernel.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Lankes"
  given-names: "Stefan"
  orcid: "https://orcid.org/0000-0003-4718-2238"
- family-names: "Klimt"
  given-names: "Jonathan"
  orcid: "https://orcid.org/0000-0002-5980-2214"
- family-names: "Kröning"
  given-names: "Martin"
  orcid: "https://orcid.org/0009-0005-0622-4229"
- family-names: "Vasilopoulos"
  given-names: "Panagiotis"
- family-names: "Breitbart"
  given-names: "Jens"
- family-names: "Schwender"
  given-names: "Jonathan"
- name: "The Hermit Project Contributors"

title: "Uhyve - A specialized hypervisor for Hermit"
version: 0.5.0
doi: 10.5281/zenodo.14639288
date-released: 2025-02-13
url: "https://github.com/hermit-os/uhyve"

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,308
  • Total Committers: 17
  • Avg Commits per committer: 76.941
  • Development Distribution Score (DDS): 0.687
Past Year
  • Commits: 290
  • Committers: 6
  • Avg Commits per committer: 48.333
  • Development Distribution Score (DDS): 0.597
Top Committers
Name Email Commits
dependabot[bot] 4****] 410
Martin Kröning m****g@p****t 333
Stefan Lankes s****s@e****e 293
Jonathan Klimt j****t@e****e 139
Panagiotis "Ivory" Vasilopoulos g****t@n****t 58
Jens Breitbart j****t@g****m 25
Jonathan Schwender s****n@g****m 23
RealRichardParker t****g@g****m 12
thane98 e****n@s****m 5
YASH PATEL 4****0 3
Atul Bhosale a****e@g****m 1
Dirk Stolle s****v@w****e 1
Garrett Gu g****7@g****m 1
Leonard Rapp l****p@r****e 1
Matthew Hinton M****6@g****m 1
Nathan Whyte n****5@g****m 1
Thomas Lambertz m****t@t****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 93
  • Total pull requests: 522
  • Average time to close issues: about 1 year
  • Average time to close pull requests: 8 days
  • Total issue authors: 15
  • Total pull request authors: 15
  • Average comments per issue: 2.85
  • Average comments per pull request: 1.54
  • Merged pull requests: 397
  • Bot issues: 0
  • Bot pull requests: 268
Past Year
  • Issues: 54
  • Pull requests: 384
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 5 days
  • Issue authors: 7
  • Pull request authors: 6
  • Average comments per issue: 2.09
  • Average comments per pull request: 1.12
  • Merged pull requests: 290
  • Bot issues: 0
  • Bot pull requests: 201
Top Authors
Issue Authors
  • n0toose (38)
  • jounathaen (25)
  • mkroening (11)
  • stlankes (6)
  • jbreitbart (5)
  • jschwe (3)
  • fogti (2)
  • Harry-R (2)
  • m-mueller678 (2)
  • lwz23 (2)
  • alessio-proietti (1)
  • ColinFinck (1)
  • shinmao (1)
  • dependabot[bot] (1)
  • lrapp-x41-pub (1)
Pull Request Authors
  • dependabot[bot] (383)
  • n0toose (123)
  • jounathaen (81)
  • mkroening (58)
  • stlankes (29)
  • jschwe (12)
  • fogti (12)
  • jbreitbart (11)
  • charlottestinson (4)
  • RealRichardParker (2)
  • yash982000 (1)
  • simonschoening (1)
  • tlambertz (1)
  • Atul9 (1)
  • BaderSZ (1)
Top Labels
Issue Labels
enhancement (11) good first issue (10) bug (4) File System (4) dependencies (2) help wanted (2) MacOS (2) docs (1) rust (1) low priority (1)
Pull Request Labels
dependencies (383) rust (378) github_actions (5) File System (1) refactor (1) feature/file system (1) feature/security (1)

Packages

  • Total packages: 2
  • Total downloads:
    • cargo 57,539 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 79
  • Total maintainers: 3
proxy.golang.org: github.com/hermit-os/uhyve
  • Versions: 39
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.7%
Average: 5.9%
Dependent repos count: 6.0%
Last synced: 6 months ago
crates.io: uhyve

A specialized hypervisor for Hermit

  • Documentation: https://docs.rs/uhyve/
  • License: MIT OR Apache-2.0
  • Latest release: 0.5.0
    published about 1 year ago
  • Versions: 40
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 57,539 Total
Rankings
Stargazers count: 10.6%
Forks count: 10.9%
Downloads: 13.7%
Dependent repos count: 16.6%
Average: 17.6%
Dependent packages count: 36.2%
Maintainers (3)
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • ./.github/actions/setup-target * composite
  • actions/checkout v3 composite
  • codecov/codecov-action v3 composite
  • dtolnay/rust-toolchain nightly composite
Cargo.lock cargo
  • 148 dependencies
Cargo.toml cargo
  • assert_fs 1 development
  • criterion 0.4 development
  • byte-unit 4.0
  • clap 4.0
  • core_affinity 0.7
  • either 1.8
  • env_logger 0.10
  • gdbstub 0.6
  • gdbstub_arch 0.2
  • hermit-entry 0.9
  • lazy_static 1.4
  • libc 0.2
  • log 0.4
  • rftrace 0.1
  • rftrace-frontend 0.1
  • thiserror 1.0
  • time 0.3
tests/test-kernels/Cargo.lock cargo
  • adler 1.0.2
  • base64 0.13.1
  • bitflags 1.3.2
  • bumpalo 3.11.1
  • cc 1.0.73
  • cfg-if 1.0.0
  • chunked_transfer 1.4.0
  • crc32fast 1.3.2
  • filetime 0.2.18
  • flate2 1.0.24
  • form_urlencoded 1.1.0
  • hermit-sys 0.4.0
  • idna 0.3.0
  • js-sys 0.3.60
  • libc 0.2.136
  • libm 0.2.5
  • log 0.4.17
  • miniz_oxide 0.5.4
  • once_cell 1.15.0
  • percent-encoding 2.2.0
  • proc-macro2 1.0.47
  • quote 1.0.21
  • redox_syscall 0.2.16
  • ring 0.16.20
  • rustls 0.20.7
  • sct 0.7.0
  • spin 0.5.2
  • syn 1.0.103
  • tar 0.4.38
  • tinyvec 1.6.0
  • tinyvec_macros 0.1.0
  • unicode-bidi 0.3.8
  • unicode-ident 1.0.5
  • unicode-normalization 0.1.22
  • untrusted 0.7.1
  • ureq 2.5.0
  • url 2.3.1
  • wasm-bindgen 0.2.83
  • wasm-bindgen-backend 0.2.83
  • wasm-bindgen-macro 0.2.83
  • wasm-bindgen-macro-support 0.2.83
  • wasm-bindgen-shared 0.2.83
  • web-sys 0.3.60
  • webpki 0.22.0
  • webpki-roots 0.22.5
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-x86_64-pc-windows-gnu 0.4.0
  • windows-sys 0.42.0
  • windows_aarch64_gnullvm 0.42.0
  • windows_aarch64_msvc 0.42.0
  • windows_i686_gnu 0.42.0
  • windows_i686_msvc 0.42.0
  • windows_x86_64_gnu 0.42.0
  • windows_x86_64_gnullvm 0.42.0
  • windows_x86_64_msvc 0.42.0
  • xattr 0.2.3
tests/test-kernels/Cargo.toml cargo
uhyve-interface/Cargo.toml cargo