Add detection of Red Hat's hypervisor
[virt-what.git] / virt-what.pod
index 2e4a8b3..2bce5c8 100644 (file)
@@ -25,20 +25,72 @@ don't know about or cannot detect.
 
 =over 4
 
+=item B<alibaba_cloud>
+
+=item B<alibaba_cloud-ebm>
+
+This is a cloud computing service based on Alibaba Cloud.
+
+Status: contributed by Weisson.
+
+=item B<aws>
+
+Amazon Web Services.
+
+Note that virt-what will print this fact for baremetal AWS instances,
+which you might not consider to be true virtualization.  In this case
+other facts (eg. C<kvm> or C<xen>) would I<not> be present.
+
+Status: contributed by Qi Guo, Vitaly Kuznetsov, confirmed by RWMJ.
+
+=item B<bhyve>
+
+This is a bhyve (FreeBSD hypervisor) guest.
+
+Status: contributed by Leonardo Brondani Schenkel.
+
+=item B<docker>
+
+This is a Docker container.
+
+Status: confirmed by Charles Nguyen
+
+=item B<google_cloud>
+
+This is running on Google Cloud Platform / Google Compute Engine.
+
+Status: not confirmed
+
 =item B<hyperv>
 
-This is Hyper-V.
+This is Microsoft Hyper-V hypervisor.
+
+Status: confirmed by RWMJ
+
+=item B<ibm_power-kvm>
+
+This is an IBM POWER KVM guest.
+
+Status: contributed by Adrian Likins.
+
+=item B<ibm_power-lpar_shared>
 
-Status: from MSDN description, not tested.
+=item B<ibm_power-lpar_dedicated>
+
+This is an IBM POWER LPAR (hardware partition) in either shared
+or dedicated mode.
+
+Status: contributed by Adrian Likins.
 
 =item B<ibm_systemz>
 
-This is an IBM SystemZ (or other S/390) mainframe.  Additional
-facts listed below may also be printed.
+This is an IBM SystemZ (or other S/390) hardware partitioning system.
+Additional facts listed below may also be printed.
 
 =item B<ibm_systemz-direct>
 
-This is Linux running directly on a IBM SystemZ mainframe.
+This is Linux running directly on a IBM SystemZ hardware partitioning
+system.
 
 This is expected to be a highly unusual configuration - if
 you see this result you should treat it with suspicion.
@@ -47,25 +99,101 @@ Status: not confirmed
 
 =item B<ibm_systemz-lpar>
 
-This is Linux running directly on an LPAR on an IBM SystemZ mainframe.
+This is Linux running directly on an LPAR on an IBM SystemZ
+hardware partitioning system.
 
-Status: not confirmed
+Status: confirmed by Thomas Huth
 
 =item B<ibm_systemz-zvm>
 
-This is a z/VM guest running in an LPAR on an IBM SystemZ mainframe.
+This is a z/VM guest running in an LPAR on an IBM SystemZ
+hardware partitioning system.
 
 Status: confirmed by RWMJ using a Fedora guest running in z/VM
 
+=item B<ibm_systemz-kvm>
+
+This is a KVM guest running on an IBM System Z hardware system.
+
+Status: contributed by Thomas Huth
+
+=item B<ldoms>
+
+The guest appears to be running on an Linux SPARC system with
+Oracle VM Server for SPARC (Logical Domains) support.
+
+Status: contributed by Darren Kenny
+
+=item B<ldoms-control>
+
+The is the Oracle VM Server for SPARC (Logical Domains) control domain.
+
+Status: contributed by Darren Kenny
+
+=item B<ldoms-guest>
+
+The is the Oracle VM Server for SPARC (Logical Domains) guest domain.
+
+Status: contributed by Darren Kenny
+
+=item B<ldoms-io>
+
+The is the Oracle VM Server for SPARC (Logical Domains) I/O domain.
+
+Status: contributed by Darren Kenny
+
+=item B<ldoms-root>
+
+The is the Oracle VM Server for SPARC (Logical Domains) Root domain.
+
+Status: contributed by Darren Kenny
+
 =item B<linux_vserver>
 
+This is printed for backwards compatibility with older virt-what which
+could not distinguish between a Linux VServer container guest and
+host.
+
+=item B<linux_vserver-guest>
+
 This process is running in a Linux VServer container.
 
 Status: contributed by Barış Metin
 
+=item B<linux_vserver-host>
+
+This process is running as the Linux VServer host (VxID 0).
+
+Status: contributed by Barış Metin and Elan Ruusamäe
+
+=item B<lxc>
+
+This process is running in a Linux LXC container.
+
+Status: contributed by Marc Fournier
+
 =item B<kvm>
 
-This is KVM.
+This guest is running on the KVM hypervisor using hardware
+acceleration.
+
+Note that if the hypervisor is using software acceleration
+you should I<not> see this, but should see the C<qemu> fact
+instead.
+
+Status: confirmed by RWMJ.
+
+=item B<lkvm>
+
+This guest is running on the KVM hypervisor using hardware
+acceleration, and the userspace component of the hypervisor
+is lkvm (a.k.a kvmtool).
+
+Status: contributed by Andrew Jones
+
+=item B<nutanix_ahv>
+
+The guest is running inside Nutanix Acropolis Hypervisor (AHV).
 
 Status: confirmed by RWMJ.
 
@@ -76,30 +204,73 @@ container.
 
 Status: contributed by Evgeniy Sokolov
 
+=item B<ovirt>
+
+The guest is running on an oVirt node.
+(See also C<rhev> below).
+
+Status: contributed by RWMJ, not confirmed
+
+=item B<parallels>
+
+The guest is running inside Parallels Virtual Platform
+(Parallels Desktop, Parallels Server).
+
+Status: contributed by Justin Clift
+
+=item B<podman>
+
+This is a Podman container.
+
+Status: contributed by Jordan Webb
+
 =item B<powervm_lx86>
 
 The guest is running inside IBM PowerVM Lx86 Linux/x86 emulator.
 
-Status: data supplied by Jeffrey Scheel, not confirmed
+Status: data originally supplied by Jeffrey Scheel, confirmed by
+Yufang Zhang and RWMJ
 
 =item B<qemu>
 
-This is QEMU using software emulation.
+This is QEMU hypervisor using software emulation.
 
 Note that for KVM (hardware accelerated) guests you should I<not> see
 this.
 
 Status: confirmed by RWMJ.
 
+=item B<rhev>
+
+The guest is running on a Red Hat Enterprise Virtualization (RHEV) node.
+
+Status: confirmed by RWMJ
+
+=item B<redhat>
+
+The guest is running on the Red Hat hypervisor.
+
+Status: confirmed by RWMJ
+
 =item B<uml>
 
 This is a User-Mode Linux (UML) guest.
 
 Status: contributed by Laurent Léonard
 
+=item B<virt>
+
+Some sort of virtualization appears to be present, but we are not sure
+what it is.  In some very rare corner cases where we know that
+virtualization is hard to detect, we will try a timing attack to see
+if certain machine instructions are running much more slowly than they
+should be, which would indicate virtualization.  In this case, the
+generic fact C<virt> is printed.
+
 =item B<virtage>
 
-This is Hitachi Virtualization Manager (HVM) Virtage logical partitioning.
+This is Hitachi Virtualization Manager (HVM) Virtage
+hardware partitioning system.
 
 Status: data supplied by Bhavna Sarathy, not confirmed
 
@@ -115,15 +286,21 @@ The guest appears to be running on Microsoft VirtualPC.
 
 Status: not confirmed
 
+=item B<vmm>
+
+This is a vmm (OpenBSD hypervisor) guest.
+
+Status: contributed by Jasper Lievisse Adriaanse.
+
 =item B<vmware>
 
-The guest appears to be running on VMware.
+The guest appears to be running on VMware hypervisor.
 
 Status: confirmed by RWMJ
 
 =item B<xen>
 
-The guest appears to be running on Xen.
+The guest appears to be running on Xen hypervisor.
 
 Status: confirmed by RWMJ
 
@@ -147,6 +324,40 @@ Status: confirmed by RWMJ
 
 =back
 
+=head1 EXIT STATUS
+
+Programs that use or wrap C<virt-what> should check that the exit
+status is 0 before they attempt to parse the output of the command.
+
+A non-zero exit status indicates some error, for example, an
+unrecognized command line argument.  If the exit status is non-zero
+then the output "facts" (if any were printed) cannot be guaranteed and
+should be ignored.
+
+The exit status does I<not> have anything to do with whether the
+program is running on baremetal or under virtualization, nor with
+whether C<virt-what> managed detection "correctly" (which is basically
+unknowable given the large variety of virtualization systems out there
+and that some systems deliberately emulate others).
+
+=head1 RUNNING VIRT-WHAT FROM OTHER PROGRAMS
+
+C<virt-what> is designed so that you can easily run it from
+other programs or wrap it up in a library.
+
+Your program should check the exit status (see the section above).
+
+Some programming languages (notably Python: issue 1652) erroneously
+mask the C<SIGPIPE> signal and do not restore it when executing
+subprocesses.  C<virt-what> is a shell script and some shell commands
+do not work correctly when you do this.  You may see warnings from
+C<virt-what> similar to this:
+
+ echo: write error: Broken pipe
+
+The solution is to set the C<SIGPIPE> signal handler back to C<SIG_DFL>
+before running C<virt-what>.
+
 =head1 IMPORTANT NOTE
 
 Most of the time, using this program is the I<wrong> thing to do.
@@ -169,6 +380,13 @@ tool.
 
 You might include this information in status and monitoring programs.
 
+=item System tuning (sometimes)
+
+You might use this program to tune an operating system so it runs
+better as a virtual machine of a particular hypervisor.  However if
+installing paravirtualized drivers, it's better to check for the
+specific features your drivers need (eg. for the presence of PCI devices).
+
 =back
 
 =head1 SEE ALSO
@@ -187,7 +405,7 @@ Richard W.M. Jones <rjones @ redhat . com>
 
 =head1 COPYRIGHT
 
-(C) Copyright 2008-2011 Red Hat Inc.,
+(C) Copyright 2008-2015 Red Hat Inc.,
 L<http://people.redhat.com/~rjones/virt-what/>
 
 This program is free software; you can redistribute it and/or modify