|0.0.29||Sep 22, 2021|
|0.0.28||May 10, 2021|
|0.0.27||Jan 24, 2021|
|0.0.24||Dec 9, 2020|
|0.0.5||Oct 30, 2019|
#62 in Operating systems
172 downloads per month
uhyve is small hypervisor to boot the library operating systems RustyHermit, which is a unikernel operating system targeting a scalable and predictable runtime behavior for HPC and cloud environments.
An installation of the Rust toolchain is required. Please visit the Rust website and follow the installation instructions. The project can then be installed with the following command:
cargo install uhyve # Install latest published version from crates.io
To check if your system supports virtualization, you can use the following command:
if egrep -c '(vmx|svm)' /proc/cpuinfo > /dev/null; then echo "Virualization support found"; fi
On Linux, uhyve depends on the virtualization solution KVM (Kernel-based Virtual Machine). If the following command gives you some output, you are ready to go!
lsmod | grep kvm
NOTE: If in case the above steps don't work, make sure to check in your BIOS settings that virtualization is enabled there.
Disclaimer: 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.
Apple's Command Line Tools must be installed. The following terminal command installs these tools without Apple's IDE Xcode:
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:
kern.hv_support: 1 indicates virtualization support.
Startinhg with Big Sur, all processes using the Hypervisor API must have the com.apple.security.hypervisor entitlement and therefor must be signed.
To build from souce, simply checkout the code and use
git clone https://github.com/hermitcore/uhyve.git cd uhyve cargo build --release
uhyve can be self-signed with the following command.
codesign -s - --entitlements app.entitlements --force path_to_uhyve/uhyve
app.entitlements must have following content:
<?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 details have a look at Apple's documentation.
Use the hypervisor to start the unikernel.
uhyve can be configured via environment variables. The following variables are supported.
HERMIT_CPUS: specifies the number of cores the virtual machine may use.
HERMIT_MEM: defines the memory size of the virtual machine. The suffixes M and G can be used to specify a value in megabytes or gigabytes, respectively.
1makes the hypervisor print kernel log messages to the terminal.
HERMIT_GDB_PORT=portactivate a gdb server for the application running inside uhyve. See below
By default, the loader initializes a system with one core and 512 MiB RAM.
Example: the following command starts the demo application in a virtual machine, which has 4 cores and 8GiB memory:
HERMIT_CPUS=4 HERMIT_MEM=8G uhyve /path/to/the/unikernel/binary
Basic support of (single-core) applications is already integrated into uhyve.
By specifying variable
HERMIT_GDB_PORT=port, uhyve is working as gdbserver and is waiting on port
port for a connection to a gdb.
For instance, with the following command uhyve is waiting on port
6677 for a connection.
HERMIT_GDB_PORT=6677 uhyve /path_to_the_unikernel/hello_world
In principle, every gdb-capable IDE should be able to debug RustyHermit applications. (Eclipse, VSCode, ...)
- Uhyve isn't able to pass more than 128 environment variables to the unikernel
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.