| <?xml version='1.0'?> <!--*-nxml-*--> |
| <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" |
| "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> |
| |
| <!-- |
| SPDX-License-Identifier: LGPL-2.1+ |
| |
| This file is part of systemd. |
| |
| Copyright 2010 Lennart Poettering |
| |
| systemd is free software; you can redistribute it and/or modify it |
| under the terms of the GNU Lesser General Public License as published by |
| the Free Software Foundation; either version 2.1 of the License, or |
| (at your option) any later version. |
| |
| systemd is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public License |
| along with systemd; If not, see <http://www.gnu.org/licenses/>. |
| --> |
| |
| <refentry id="systemd-detect-virt" |
| xmlns:xi="http://www.w3.org/2001/XInclude"> |
| |
| <refentryinfo> |
| <title>systemd-detect-virt</title> |
| <productname>systemd</productname> |
| |
| <authorgroup> |
| <author> |
| <contrib>Developer</contrib> |
| <firstname>Lennart</firstname> |
| <surname>Poettering</surname> |
| <email>lennart@poettering.net</email> |
| </author> |
| </authorgroup> |
| </refentryinfo> |
| |
| <refmeta> |
| <refentrytitle>systemd-detect-virt</refentrytitle> |
| <manvolnum>1</manvolnum> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>systemd-detect-virt</refname> |
| <refpurpose>Detect execution in a virtualized environment</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <cmdsynopsis> |
| <command>systemd-detect-virt</command> |
| <arg choice="opt" rep="repeat">OPTIONS</arg> |
| </cmdsynopsis> |
| </refsynopsisdiv> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para><command>systemd-detect-virt</command> detects execution in |
| a virtualized environment. It identifies the virtualization |
| technology and can distinguish full machine virtualization from |
| container virtualization. <filename>systemd-detect-virt</filename> |
| exits with a return value of 0 (success) if a virtualization |
| technology is detected, and non-zero (error) otherwise. By default, |
| any type of virtualization is detected, and the options |
| <option>--container</option> and <option>--vm</option> can be used |
| to limit what types of virtualization are detected.</para> |
| |
| <para>When executed without <option>--quiet</option> will print a |
| short identifier for the detected virtualization technology. The |
| following technologies are currently identified:</para> |
| |
| <table> |
| <title>Known virtualization technologies (both |
| VM, i.e. full hardware virtualization, |
| and container, i.e. shared kernel virtualization)</title> |
| <tgroup cols='3' align='left' colsep='1' rowsep='1'> |
| <colspec colname="type" /> |
| <colspec colname="id" /> |
| <colspec colname="product" /> |
| <thead> |
| <row> |
| <entry>Type</entry> |
| <entry>ID</entry> |
| <entry>Product</entry> |
| </row> |
| </thead> |
| <tbody> |
| <row> |
| <entry valign="top" morerows="11">VM</entry> |
| <entry><varname>qemu</varname></entry> |
| <entry>QEMU software virtualization, without KVM</entry> |
| </row> |
| |
| <row> |
| <entry><varname>kvm</varname></entry> |
| <entry>Linux KVM kernel virtual machine, with whatever software, except |
| Oracle Virtualbox</entry> |
| </row> |
| |
| <row> |
| <entry><varname>zvm</varname></entry> |
| <entry>s390 z/VM</entry> |
| </row> |
| |
| <row> |
| <entry><varname>vmware</varname></entry> |
| <entry>VMware Workstation or Server, and related products</entry> |
| </row> |
| |
| <row> |
| <entry><varname>microsoft</varname></entry> |
| <entry>Hyper-V, also known as Viridian or Windows Server Virtualization</entry> |
| </row> |
| |
| <row> |
| <entry><varname>oracle</varname></entry> |
| <entry>Oracle VM VirtualBox (historically marketed by innotek and Sun Microsystems), |
| for legacy and KVM hypervisor</entry> |
| </row> |
| |
| <row> |
| <entry><varname>xen</varname></entry> |
| <entry>Xen hypervisor (only domU, not dom0)</entry> |
| </row> |
| |
| <row> |
| <entry><varname>bochs</varname></entry> |
| <entry>Bochs Emulator</entry> |
| </row> |
| |
| <row> |
| <entry><varname>uml</varname></entry> |
| <entry>User-mode Linux</entry> |
| </row> |
| |
| <row> |
| <entry><varname>parallels</varname></entry> |
| <entry>Parallels Desktop, Parallels Server</entry> |
| </row> |
| |
| <row> |
| <entry><varname>bhyve</varname></entry> |
| <entry>bhyve, FreeBSD hypervisor</entry> |
| </row> |
| |
| <row> |
| <entry><varname>qnx</varname></entry> |
| <entry>QNX hypervisor</entry> |
| </row> |
| |
| <row> |
| <entry valign="top" morerows="5">Container</entry> |
| <entry><varname>openvz</varname></entry> |
| <entry>OpenVZ/Virtuozzo</entry> |
| </row> |
| |
| <row> |
| <entry><varname>lxc</varname></entry> |
| <entry>Linux container implementation by LXC</entry> |
| </row> |
| |
| <row> |
| <entry><varname>lxc-libvirt</varname></entry> |
| <entry>Linux container implementation by libvirt</entry> |
| </row> |
| |
| <row> |
| <entry><varname>systemd-nspawn</varname></entry> |
| <entry>systemd's minimal container implementation, see <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry></entry> |
| </row> |
| |
| <row> |
| <entry><varname>docker</varname></entry> |
| <entry>Docker container manager</entry> |
| </row> |
| |
| <row> |
| <entry><varname>rkt</varname></entry> |
| <entry>rkt app container runtime</entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| |
| <para>If multiple virtualization solutions are used, only the |
| "innermost" is detected and identified. That means if both |
| machine and container virtualization are used in |
| conjunction, only the latter will be identified (unless |
| <option>--vm</option> is passed).</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Options</title> |
| |
| <para>The following options are understood:</para> |
| |
| <variablelist> |
| <varlistentry> |
| <term><option>-c</option></term> |
| <term><option>--container</option></term> |
| |
| <listitem><para>Only detects container virtualization (i.e. |
| shared kernel virtualization).</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><option>-v</option></term> |
| <term><option>--vm</option></term> |
| |
| <listitem><para>Only detects hardware virtualization).</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><option>-r</option></term> |
| <term><option>--chroot</option></term> |
| |
| <listitem><para>Detect whether invoked in a |
| <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry> |
| environment. In this mode, no output is written, but the return |
| value indicates whether the process was invoked in a |
| <function>chroot()</function> |
| environment or not.</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><option>--private-users</option></term> |
| |
| <listitem><para>Detect whether invoked in a user namespace. In this mode, no |
| output is written, but the return value indicates whether the process was invoked |
| inside of a user namespace or not. See |
| <citerefentry project='man-pages'><refentrytitle>user_namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| for more information.</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><option>-q</option></term> |
| <term><option>--quiet</option></term> |
| |
| <listitem><para>Suppress output of the virtualization |
| technology identifier.</para></listitem> |
| </varlistentry> |
| |
| <xi:include href="standard-options.xml" xpointer="help" /> |
| <xi:include href="standard-options.xml" xpointer="version" /> |
| </variablelist> |
| |
| </refsect1> |
| |
| <refsect1> |
| <title>Exit status</title> |
| |
| <para>If a virtualization technology is detected, 0 is returned, a |
| non-zero code otherwise.</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| <para> |
| <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>, |
| <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| </para> |
| </refsect1> |
| |
| </refentry> |