A userspace virtual machine monitor (VMM) for illumos bhyve, written in Rust. It runs on SmartOS and other illumos distributions, on x86_64.
Experimental. This is not production-supported software, and no release is published. Live migration is not authenticated and does not carry FPU/XSAVE state. Read SECURITY.md before you run an untrusted guest on it.
rshyve takes the command line that the SmartOS bhyve zone brand
builds, so a zone can run it in place of /usr/sbin/bhyve. It boots
UEFI firmware or a Linux kernel directly, and supplies virtio, NVMe,
an AHCI CD-ROM, a VNC framebuffer, a vTPM, PCI passthrough, a control
socket and live migration. It is not all of bhyve: some flags and
device options are refused, and some are accepted and ignored.firehyve is a microVM over the same crates. It boots a Linux
kernel directly and supplies virtio devices and a serial console only:
no firmware, no migration, no control socket. It refuses at startup
most options that it cannot honor. The options that the bhyve zone
brand puts on every zone (a boot ROM, extra serial backends, a frame
buffer and an xHCI tablet) are accepted, logged and ignored.fhrun runs a Linux binary inside a firehyve microVM, like a
child process.docs/features.md lists what each binary supports, with its limits.
rshyve -c 2 -m 2G \
-s 4,virtio-blk,/dev/zvol/rdsk/zones/disk0 \
-s 6,virtio-net-viona,net0 \
-l bootrom,/usr/share/bhyve/uefi-rom.bin \
-l com1,stdio \
myvm
The binaries run only on illumos. Build them on an illumos host:
git clone --recurse-submodules https://github.com/TritonDataCenter/rshyve
cd rust-bhyve
cargo build --workspace --locked --release
cargo test --workspace --locked --no-fail-fast
The unit tests also run on Linux and macOS. docs/testing.md gives the prerequisites, how to boot a test guest, and the test harness scripts.
To use rshyve for the zones on a SmartOS node, install it on the node
and point the zone at it. docs/platform.md tells how.
No prebuilt platform image is published.
Tested on SmartOS with bhyve API v18. docs/features.md lists the configurations that were tested and the known caveats. docs/roadmap.md lists the open work.
This project uses code from Propolis, the bhyve VMM of Oxide Computer Company. The bhyve and viona ioctl bindings, the address-space manager and the PS/2 device models come from Propolis with few changes. Parts of the PCI, UART and VM-exit layers are derived from it. Both projects use MPL-2.0.
Each derived file has a header that names its upstream file.
THIRD_PARTY.md lists the files with their measured
similarity, and tools/propolis-derivation.py measures them again
against a Propolis checkout.
CONTRIBUTING.md covers the build, what CI proves and what it does not, the repository gates, and the commit style. CHANGELOG.md records the changes that an operator would notice.
Report vulnerabilities privately. See SECURITY.md.
MPL-2.0. The full text is in LICENSE.
Parts of this code are copied or derived from Propolis, Copyright Oxide Computer Company, under MPL-2.0. libtpms is vendored under the 3-clause BSD license. NOTICE has the attribution, and THIRD_PARTY.md has the exact provenance.
1 commits
Rust
97.3%
Shell
1.8%
A userspace virtual machine monitor (VMM) for illumos bhyve, written in Rust. It runs on SmartOS and other illumos distributions, on x86_64.
Experimental. This is not production-supported software, and no release is published. Live migration is not authenticated and does not carry FPU/XSAVE state. Read SECURITY.md before you run an untrusted guest on it.
rshyve takes the command line that the SmartOS bhyve zone brand
builds, so a zone can run it in place of /usr/sbin/bhyve. It boots
UEFI firmware or a Linux kernel directly, and supplies virtio, NVMe,
an AHCI CD-ROM, a VNC framebuffer, a vTPM, PCI passthrough, a control
socket and live migration. It is not all of bhyve: some flags and
device options are refused, and some are accepted and ignored.firehyve is a microVM over the same crates. It boots a Linux
kernel directly and supplies virtio devices and a serial console only:
no firmware, no migration, no control socket. It refuses at startup
most options that it cannot honor. The options that the bhyve zone
brand puts on every zone (a boot ROM, extra serial backends, a frame
buffer and an xHCI tablet) are accepted, logged and ignored.fhrun runs a Linux binary inside a firehyve microVM, like a
child process.docs/features.md lists what each binary supports, with its limits.
rshyve -c 2 -m 2G \
-s 4,virtio-blk,/dev/zvol/rdsk/zones/disk0 \
-s 6,virtio-net-viona,net0 \
-l bootrom,/usr/share/bhyve/uefi-rom.bin \
-l com1,stdio \
myvm
The binaries run only on illumos. Build them on an illumos host:
git clone --recurse-submodules https://github.com/TritonDataCenter/rshyve
cd rust-bhyve
cargo build --workspace --locked --release
cargo test --workspace --locked --no-fail-fast
The unit tests also run on Linux and macOS. docs/testing.md gives the prerequisites, how to boot a test guest, and the test harness scripts.
To use rshyve for the zones on a SmartOS node, install it on the node
and point the zone at it. docs/platform.md tells how.
No prebuilt platform image is published.
Tested on SmartOS with bhyve API v18. docs/features.md lists the configurations that were tested and the known caveats. docs/roadmap.md lists the open work.
This project uses code from Propolis, the bhyve VMM of Oxide Computer Company. The bhyve and viona ioctl bindings, the address-space manager and the PS/2 device models come from Propolis with few changes. Parts of the PCI, UART and VM-exit layers are derived from it. Both projects use MPL-2.0.
Each derived file has a header that names its upstream file.
THIRD_PARTY.md lists the files with their measured
similarity, and tools/propolis-derivation.py measures them again
against a Propolis checkout.
CONTRIBUTING.md covers the build, what CI proves and what it does not, the repository gates, and the commit style. CHANGELOG.md records the changes that an operator would notice.
Report vulnerabilities privately. See SECURITY.md.
MPL-2.0. The full text is in LICENSE.
Parts of this code are copied or derived from Propolis, Copyright Oxide Computer Company, under MPL-2.0. libtpms is vendored under the 3-clause BSD license. NOTICE has the attribution, and THIRD_PARTY.md has the exact provenance.
1 commits
Rust
97.3%
Shell
1.8%