Add detection of Red Hat Enterprise Virtualization hypervisor (RHBZ#1249438).
[virt-what.git] / virt-what.pod
index 0a724d4..c7a211b 100644 (file)
@@ -25,12 +25,33 @@ don't know about or cannot detect.
 
 =over 4
 
+=item B<docker>
+
+This is a Docker container.
+
+Status: confirmed by Charles Nguyen
+
 =item B<hyperv>
 
 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>
+
+=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) hardware partitioning system.
@@ -62,10 +83,28 @@ Status: confirmed by RWMJ using a Fedora guest running in z/VM
 
 =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 guest is running on the KVM hypervisor using hardware
@@ -77,6 +116,14 @@ 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<openvz>
 
 The guest appears to be running inside an OpenVZ or Virtuozzo
@@ -84,6 +131,13 @@ 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
@@ -95,7 +149,8 @@ Status: contributed by Justin Clift
 
 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>
 
@@ -106,12 +161,27 @@ 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<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
@@ -163,6 +233,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.
@@ -185,6 +289,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
@@ -203,7 +314,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