NVMM is a Type-2 hypervisor, and hypervisor platform, that provides support for hardware-accelerated virtualization. A virtualization API is shipped in libnvmm, and allows existing emulators such as Qemu to easily create and manage virtual machines via NVMM.
Article: From Zero to NVMM.
The kernel code: browse.
The libnvmm API: browse.
The man page: open.
The regression tests: browse.
Load the NVMM kernel driver:
# modload nvmmYou may want to run the NVMM tests to confirm that your setup is correct:
# cd /usr/tests/lib/libnvmm/Install the qemu package from pkgsrc. Configure the permissions:
# atf-run | atf-report
# chown root:nvmm /usr/pkg/bin/qemu-system-x86_64Once this is done, you can finally launch Qemu with NVMM acceleration, by adding "-accel nvmm" to your usual Qemu command line. For example:
# chmod g+s /usr/pkg/bin/qemu-system-x86_64
$ qemu-system-x86_64 -smp 4 -m 8G -cdrom Win10_2004_English_x64.iso -accel nvmmTested guest OSes:
|Win95 32bit||Doesn't work|
|Win98 32bit||Doesn't work|
|Fedora 64bit||Works||Pass "no_timer_check" in grub|
|ArchLinux 64bit||Works||Pass "no_timer_check" in grub|
Linux performs timer checks at boot time which fail under hypervisors. To work around this, on certain distributions, you must pass "no_timer_check" in the guest's grub.
NetBSD 8 (top left), Fedora 29 (top right), Windows XP (bottom left), Windows 10 (bottom right),
all running via Qemu+NVMM on NetBSD.
NVMM can support up to 128 virtual machines, each having a maximum of 128 VCPUs and 128GB of RAM. It works with both x86 AMD CPUs and x86 Intel CPUs.
NVMM has unique design properties, not currently found in other hypervisor solutions. A detailed analysis is available in this blog post.