Skip to content

dmbaturin/hvinfo

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
April 1, 2016 17:55
March 5, 2015 12:36
April 1, 2016 17:55
December 15, 2020 20:40
April 1, 2016 17:55
April 1, 2016 17:55

hvinfo

Yet another hypervisor detection tool for UNIX-like systems.

Design goals

  • Single high level language (Ada 2005). Even if certain things require more code.
  • No root privileges required, ever. Even if it means running checks in inconvenient ways.
  • Support for at least the most popular UNIX-like systems, not just Linux.

Building

To build it, you need GNU Make, GNAT 4.x or higher (Ada 2005 support required) and gprbuild.

Build setup is rather simplistic at this time.

cd hvinfo
gmake
gmake install PREFIX=<some dir>

Building a Debian package

Debian packaging is not yet good enough to get it included in Debian, but should be fine for local use.

The procedure is simple:

sudo apt-get install devscripts

cd hvinfo

debuild -us -uc

If you have your Ada toolchain installed in an unusual location, it's better to ensure you have it in your $PATH.

OS and hypervisor support

CPUID-based checks that can detect KVM, Xen HVM, VMware, bhyve, and Hyper-V are supported on any OS.

Xen PV vs. Xen HVM check is supported on Linux and FreeBSD.

The easiest way to detect VirtualBox, Parallels, and some other hypervisors that don't use CPUID identification is to check the SMBIOS vendor name, and this is currently only supported on Linux because it provides DMI information via sysfs to unprivileged users. FreeBSD requires root privileges for DMI reading, so Parallels is undetectable on FreeBSD right now.

Container systems such as LXC and OpenVZ are not supported yet.

Virtualization systems for platforms other than x86 aren't supported either.

Patches are welcome.

TODO

  • Implementation-independent makefile (anyone knows how to make ifdef work in both make flavours?)
  • Container detection.
  • Non-x86 platforms support.