Skip to content

Commit cf064fa

Browse files
committed
doc: "hypervisor" -> "Virtual Machine Monitor (VMM)"
In literature, especially those with a microkernel background, virtualization stacks are terminologically (and functionally) split into two components: Hypervisor (kernel-space) and Virtual Machine Monitor (VMM) (user-space). This terminological distinction also makes sense in monolithic kernel space (such as Linux/KVM), as the functionality is always distributed between kernel- and user-space. So, this commit introduces "Virtual Machine Monitor (VMM)" in the docs and replaces most occurrences of "Hypervisor". I think this to clarifies things. It is unfortunate that "cloud-hypervisor" uses "hypervisor" in its name, although it is just a VMM for KVM (and other Hypervisor backends). Some in literature also refer to VMMs as device managers. I didn't change the NixOS options. But one could deprecate `microvm.hypervisor` in favor of `microvm.vmm`.
1 parent 1e746a8 commit cf064fa

File tree

9 files changed

+28
-25
lines changed

9 files changed

+28
-25
lines changed

README.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
<img src="doc/src/demo.gif" alt="Demo GIF">
1616
</p>
1717

18-
A Nix Flake to build NixOS and run it on one of several Type-2
19-
Hypervisors on NixOS/Linux. The project is intended to provide a more
20-
isolated alternative to `nixos-container`. You can either build and
21-
run MicroVMs like Nix packages, or alternatively install them as
22-
systemd services declaratively in your host's Nix Flake or
23-
imperatively with the provided `microvm` command.
18+
A Nix Flake to build NixOS and run it virtualized by one of several
19+
Virtual Machine Monitors (VMMs) on NixOS/Linux (kvm). The project is intended
20+
to provide a more isolated alternative to `nixos-container`s. You can either
21+
build and run MicroVMs like Nix packages, or alternatively install them as
22+
systemd services declaratively in your host's Nix Flake or imperatively with
23+
the provided `microvm` command.
2424

2525
[Project Presentation (video)](https://media.ccc.de/v/nixcon-2023-34861-microvm-nix)
2626

2727
## At a glance
2828

2929
- MicroVMs are Virtual Machines but use special device interfaces
3030
(virtio) for high performance.
31-
- This project runs them on NixOS hosts.
32-
- You can choose one of five hypervisors for each MicroVM.
31+
- This project runs them on NixOS (Linux/KVM) hosts.
32+
- You can choose one of five VMMs for each MicroVM.
3333
- MicroVMs have a fixed RAM allocation (default: 512 MB) but can be
3434
shrunk using `microvm-balloon`
3535
- MicroVMs have a read-only root disk with either a prepopulated
@@ -45,9 +45,12 @@ imperatively with the provided `microvm` command.
4545
attached to a MicroVM. `qemu` and `kvmtool` also support *user*
4646
networking which requires no additional setup on the host.
4747

48-
## Hypervisors
48+
## Virtual Machine Monitors (VMM) ("Hypervisors")
4949

50-
| Hypervisor | Language | Restrictions |
50+
_Hypervisor refer to the kernel part of a virtualization stack, such as KVM.
51+
A VMM refers to the user-space part. Some also call them device managers._
52+
53+
| VMM (leveraging KVM) | Language | Restrictions |
5154
|-------------------------------------------------------------------------|----------|------------------------------------------|
5255
| [qemu](https://www.qemu.org/) | C | |
5356
| [cloud-hypervisor](https://www.cloudhypervisor.org/) | Rust | no 9p shares |
@@ -88,7 +91,7 @@ nix run microvm#kvmtool-example
8891
nix run microvm#stratovirt-example
8992
```
9093

91-
### Run a MicroVM example with nested MicroVMs on 5 different Hypervisors
94+
### Run a MicroVM example with nested MicroVMs on 5 different VMMs
9295

9396
```shell
9497
nix run microvm#vm

doc/src/conventions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ MicroVM deployments using the information on this page.
1717
| | `share/microvm/system` | | `config.system.build.toplevel` symlink, used for comparing versions when running `microvm -l` |
1818

1919

20-
## Generating custom operating system hypervisor packages
20+
## Generating custom operating system VMM packages
2121

2222
Because a microvm.nix runner package completely defines how to run the
23-
Hypervisor, it is possible to define independent packages that
23+
VMM, it is possible to define independent packages that
2424
virtualize other operating systems than NixOS.
2525

2626
- Your NixOS configurations should export their runner package as

doc/src/cpu-emulation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# CPU emulation
22

33
It's possible to emulate a CPU if desired. This feature is only
4-
supported by the qemu hypervisor.
4+
supported by the qemu VMM.
55

66
**Note:** this feature has a significant performance impact.
77

@@ -17,7 +17,7 @@ settings:
1717
environment.
1818

1919
- Set `microvm.hypervisor` to `qemu`, given this is the only
20-
hypervisor that supports this feature.
20+
VMM that supports this feature.
2121

2222
- Set `microvm.cpu` to the desired emulated CPU. You can find a [list
2323
of the available systems

doc/src/faq.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Once your MicroVM's journal data is visible in the
4848
`/var/log/journal/$machineId/` directories, `journalctl` can pick it
4949
up using the `-m`/`--merge` switch.
5050

51-
## Can I build with hypervisors from the host's nixpkgs instead of the MicroVM's?
51+
## Can I build with VMMs from the host's nixpkgs instead of the MicroVM's?
5252

5353
Yes. This scenario is enabled through the flake's `lib.buildRunner`
5454
function. See the [`nix run

doc/src/interfaces.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ configuration is necessary inside the MicroVM.
3131
Use a virtual tuntap Ethernet interface. Its name is the value of
3232
`id`.
3333

34-
Some Hypervisors may be able to automatically create these interfaces
34+
Some VMMs may be able to automatically create these interfaces
3535
when running as root, which we advise against. Instead, create the
3636
interfaces before starting a MicroVM:
3737

doc/src/intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ overhead has been reduced a lot by replacing emulated devices with
4545
*virtio* interfaces that have been optimized for this environment.
4646

4747
This Flake offers you to run your MicroVMs not only on QEMU but with
48-
other Hypervisors that have been explicitly authored for
48+
other VMMs that have been explicitly authored for
4949
*virtio*. Some of them are written in Rust, a programming language
5050
that is renowned for being safer than C.

doc/src/options.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ available for customization. These are the most important ones:
55

66
| Option | Purpose |
77
|--------------------------------|-----------------------------------------------------------------------------------------------------|
8-
| `microvm.hypervisor` | Hypervisor to use by default in `microvm.declaredRunner` |
8+
| `microvm.hypervisor` | VMM to use by default in `microvm.declaredRunner` |
99
| `microvm.vcpu` | Number of Virtual CPU cores |
1010
| `microvm.mem` | RAM allocation in MB |
1111
| `microvm.interfaces` | Network interfaces |
1212
| `microvm.volumes` | Block device images |
1313
| `microvm.shares` | Shared filesystem directories |
1414
| `microvm.devices` | PCI/USB devices for host-to-vm passthrough |
15-
| `microvm.socket` | Control socket for the Hypervisor so that a MicroVM can be shutdown cleanly |
15+
| `microvm.socket` | Control socket for the VMM so that a MicroVM can be shutdown cleanly |
1616
| `microvm.user` | (qemu only) User account which Qemu will switch to when started as root |
1717
| `microvm.forwardPorts` | (qemu user-networking only) TCP/UDP port forwarding |
1818
| `microvm.kernelParams` | Like `boot.kernelParams` but will not end up in `system.build.toplevel`, saving you rebuilds |

doc/src/output-options.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
# MicroVM output options
22

3-
Hypervisor runners are provided in the `config` generated by a
3+
VMM runners are provided in the `config` generated by a
44
nixosSystem for you to use inside and outside your configuration.
55

66
| Option | Purpose |
77
|--------------------------|-----------------------------------------------------------|
88
| `microvm.declaredRunner` | Runner package selected according to `microvm.hypervisor` |
99
| `microvm.runners` | Attribute set of runner packages per known Hypervisor. |
1010

11-
The `microvm.declaredRunner` selects the hypervisor according to the
11+
The `microvm.declaredRunner` selects the VMM according to the
1212
configured `microvm.hypervisor`.
1313

1414
```bash
1515
nix run .#nixosConfigurations.my-microvm.config.microvm.declaredRunner
1616
```
1717

1818
The `microvm.runners` option provides a runner for each known
19-
Hypervisor regardless of the `microvm.hypervisor` config setting. To
19+
VMM regardless of the `microvm.hypervisor` config setting. To
2020
build *my-microvm* for Firecracker for example:
2121

2222
```bash
@@ -28,7 +28,7 @@ nix run .#nixosConfigurations.my-microvm.config.microvm.runners.firecracker
2828
One of the `microvm.runners` is picked by `microvm.declaredRunner` by
2929
evaluating `microvm.hypervisor`.
3030

31-
You may switch the Hypervisor quickly, but use `declaredRunner` in
31+
You may switch the VMM quickly, but use `declaredRunner` in
3232
production. Any other NixOS configuration that evaluates the
3333
`microvm.hypervisor` option can be wrong when you pick from
3434
`microvm.runners` directly. One example would be the defaults set by

doc/src/shares.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
In `microvm.shares` elements the `proto` field allows either of two
44
values:
55

6-
- `9p` (default) is built into many hypervisors, allowing you to
6+
- `9p` (default) is built into many VMMs, allowing you to
77
quickly share a directory tree
88

99
- `virtiofs` requires a separate virtiofsd service which is only

0 commit comments

Comments
 (0)