]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd-detect-virt.xml
travis: add more ASan options
[thirdparty/systemd.git] / man / systemd-detect-virt.xml
CommitLineData
2c4ff634 1<?xml version='1.0'?> <!--*-nxml-*-->
3a54a157 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
12b42c76 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
0307f791 4<!-- SPDX-License-Identifier: LGPL-2.1+ -->
2c4ff634 5
dfdebb1b 6<refentry id="systemd-detect-virt"
6d0c987d 7 xmlns:xi="http://www.w3.org/2001/XInclude">
798d3a52
ZJS
8
9 <refentryinfo>
10 <title>systemd-detect-virt</title>
11 <productname>systemd</productname>
798d3a52
ZJS
12 </refentryinfo>
13
14 <refmeta>
15 <refentrytitle>systemd-detect-virt</refentrytitle>
16 <manvolnum>1</manvolnum>
17 </refmeta>
18
19 <refnamediv>
20 <refname>systemd-detect-virt</refname>
21 <refpurpose>Detect execution in a virtualized environment</refpurpose>
22 </refnamediv>
23
24 <refsynopsisdiv>
25 <cmdsynopsis>
299a34c1
ZJS
26 <command>systemd-detect-virt</command>
27 <arg choice="opt" rep="repeat">OPTIONS</arg>
798d3a52
ZJS
28 </cmdsynopsis>
29 </refsynopsisdiv>
30
31 <refsect1>
32 <title>Description</title>
33
34 <para><command>systemd-detect-virt</command> detects execution in
35 a virtualized environment. It identifies the virtualization
9c5baa43 36 technology and can distinguish full machine virtualization from
798d3a52
ZJS
37 container virtualization. <filename>systemd-detect-virt</filename>
38 exits with a return value of 0 (success) if a virtualization
b938cb90 39 technology is detected, and non-zero (error) otherwise. By default,
798d3a52
ZJS
40 any type of virtualization is detected, and the options
41 <option>--container</option> and <option>--vm</option> can be used
42 to limit what types of virtualization are detected.</para>
43
44 <para>When executed without <option>--quiet</option> will print a
45 short identifier for the detected virtualization technology. The
46 following technologies are currently identified:</para>
47
48 <table>
49 <title>Known virtualization technologies (both
50 VM, i.e. full hardware virtualization,
51 and container, i.e. shared kernel virtualization)</title>
52 <tgroup cols='3' align='left' colsep='1' rowsep='1'>
53 <colspec colname="type" />
54 <colspec colname="id" />
55 <colspec colname="product" />
56 <thead>
57 <row>
6d0c987d
ZJS
58 <entry>Type</entry>
59 <entry>ID</entry>
60 <entry>Product</entry>
798d3a52
ZJS
61 </row>
62 </thead>
63 <tbody>
64 <row>
90fb1f09 65 <entry valign="top" morerows="12">VM</entry>
6d0c987d 66 <entry><varname>qemu</varname></entry>
5f1c788c 67 <entry>QEMU software virtualization, without KVM</entry>
798d3a52
ZJS
68 </row>
69
70 <row>
6d0c987d 71 <entry><varname>kvm</varname></entry>
d225fedb 72 <entry>Linux KVM kernel virtual machine, with whatever software, except Oracle Virtualbox</entry>
798d3a52
ZJS
73 </row>
74
75 <row>
6d0c987d
ZJS
76 <entry><varname>zvm</varname></entry>
77 <entry>s390 z/VM</entry>
798d3a52
ZJS
78 </row>
79
80 <row>
6d0c987d
ZJS
81 <entry><varname>vmware</varname></entry>
82 <entry>VMware Workstation or Server, and related products</entry>
798d3a52
ZJS
83 </row>
84
85 <row>
6d0c987d
ZJS
86 <entry><varname>microsoft</varname></entry>
87 <entry>Hyper-V, also known as Viridian or Windows Server Virtualization</entry>
798d3a52
ZJS
88 </row>
89
90 <row>
6d0c987d 91 <entry><varname>oracle</varname></entry>
d225fedb 92 <entry>Oracle VM VirtualBox (historically marketed by innotek and Sun Microsystems), for legacy and KVM hypervisor</entry>
798d3a52
ZJS
93 </row>
94
95 <row>
6d0c987d
ZJS
96 <entry><varname>xen</varname></entry>
97 <entry>Xen hypervisor (only domU, not dom0)</entry>
798d3a52
ZJS
98 </row>
99
100 <row>
6d0c987d
ZJS
101 <entry><varname>bochs</varname></entry>
102 <entry>Bochs Emulator</entry>
798d3a52
ZJS
103 </row>
104
105 <row>
6d0c987d
ZJS
106 <entry><varname>uml</varname></entry>
107 <entry>User-mode Linux</entry>
798d3a52
ZJS
108 </row>
109
d84248eb 110 <row>
6d0c987d
ZJS
111 <entry><varname>parallels</varname></entry>
112 <entry>Parallels Desktop, Parallels Server</entry>
d84248eb
EV
113 </row>
114
1fdf07f5 115 <row>
aa0c3427
LBS
116 <entry><varname>bhyve</varname></entry>
117 <entry>bhyve, FreeBSD hypervisor</entry>
1fdf07f5
SL
118 </row>
119
120 <row>
121 <entry><varname>qnx</varname></entry>
122 <entry>QNX hypervisor</entry>
aa0c3427
LBS
123 </row>
124
0f0e30ad
RB
125 <row>
126 <entry><varname>acrn</varname></entry>
127 <entry><ulink url="https://projectacrn.org">ACRN hypervisor</ulink></entry>
128 </row>
129
798d3a52 130 <row>
90fb1f09 131 <entry valign="top" morerows="7">Container</entry>
6d0c987d
ZJS
132 <entry><varname>openvz</varname></entry>
133 <entry>OpenVZ/Virtuozzo</entry>
798d3a52
ZJS
134 </row>
135
136 <row>
6d0c987d
ZJS
137 <entry><varname>lxc</varname></entry>
138 <entry>Linux container implementation by LXC</entry>
798d3a52
ZJS
139 </row>
140
141 <row>
6d0c987d
ZJS
142 <entry><varname>lxc-libvirt</varname></entry>
143 <entry>Linux container implementation by libvirt</entry>
798d3a52
ZJS
144 </row>
145
146 <row>
6d0c987d
ZJS
147 <entry><varname>systemd-nspawn</varname></entry>
148 <entry>systemd's minimal container implementation, see <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry></entry>
798d3a52
ZJS
149 </row>
150
151 <row>
6d0c987d
ZJS
152 <entry><varname>docker</varname></entry>
153 <entry>Docker container manager</entry>
798d3a52 154 </row>
9fb16425 155
90fb1f09
ZJS
156 <row>
157 <entry><varname>podman</varname></entry>
158 <entry><ulink url="https://podman.io">Podman</ulink> container manager</entry>
159 </row>
160
9fb16425 161 <row>
6d0c987d
ZJS
162 <entry><varname>rkt</varname></entry>
163 <entry>rkt app container runtime</entry>
9fb16425 164 </row>
6c8a2c67
BR
165
166 <row>
167 <entry><varname>wsl</varname></entry>
168 <entry><ulink url="https://docs.microsoft.com/en-us/windows/wsl/about">Windows Subsystem for Linux</ulink></entry>
169 </row>
798d3a52
ZJS
170 </tbody>
171 </tgroup>
172 </table>
173
174 <para>If multiple virtualization solutions are used, only the
9c5baa43
JE
175 "innermost" is detected and identified. That means if both
176 machine and container virtualization are used in
798d3a52
ZJS
177 conjunction, only the latter will be identified (unless
178 <option>--vm</option> is passed).</para>
6c8a2c67
BR
179 <para> Windows Subsystem for Linux is not a Linux container,
180 but an environment for running Linux userspace applications on
181 top of the Windows kernel using a Linux-compatible interface.
182 WSL is categorized as a container for practical purposes.
183 Multiple WSL environments share the same kernel and services
184 should generally behave like when being run in a container.</para>
798d3a52
ZJS
185 </refsect1>
186
187 <refsect1>
188 <title>Options</title>
189
190 <para>The following options are understood:</para>
191
192 <variablelist>
193 <varlistentry>
194 <term><option>-c</option></term>
195 <term><option>--container</option></term>
196
197 <listitem><para>Only detects container virtualization (i.e.
198 shared kernel virtualization).</para></listitem>
199 </varlistentry>
200
201 <varlistentry>
202 <term><option>-v</option></term>
203 <term><option>--vm</option></term>
204
4ee17545 205 <listitem><para>Only detects hardware virtualization.</para></listitem>
798d3a52
ZJS
206 </varlistentry>
207
d21be5ff
LP
208 <varlistentry>
209 <term><option>-r</option></term>
210 <term><option>--chroot</option></term>
211
212 <listitem><para>Detect whether invoked in a
213 <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
b938cb90 214 environment. In this mode, no output is written, but the return
d21be5ff
LP
215 value indicates whether the process was invoked in a
216 <function>chroot()</function>
217 environment or not.</para></listitem>
218 </varlistentry>
219
299a34c1
ZJS
220 <varlistentry>
221 <term><option>--private-users</option></term>
222
223 <listitem><para>Detect whether invoked in a user namespace. In this mode, no
224 output is written, but the return value indicates whether the process was invoked
225 inside of a user namespace or not. See
226 <citerefentry project='man-pages'><refentrytitle>user_namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
227 for more information.</para></listitem>
228 </varlistentry>
229
798d3a52
ZJS
230 <varlistentry>
231 <term><option>-q</option></term>
232 <term><option>--quiet</option></term>
233
234 <listitem><para>Suppress output of the virtualization
235 technology identifier.</para></listitem>
236 </varlistentry>
237
39824629
LP
238 <varlistentry>
239 <term><option>--list</option></term>
240
241 <listitem><para>Output all currently known and detectable container and VM environments.</para></listitem>
242 </varlistentry>
243
798d3a52
ZJS
244 <xi:include href="standard-options.xml" xpointer="help" />
245 <xi:include href="standard-options.xml" xpointer="version" />
246 </variablelist>
247
248 </refsect1>
249
250 <refsect1>
251 <title>Exit status</title>
252
253 <para>If a virtualization technology is detected, 0 is returned, a
254 non-zero code otherwise.</para>
255 </refsect1>
256
257 <refsect1>
258 <title>See Also</title>
259 <para>
260 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
d21be5ff 261 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
299a34c1
ZJS
262 <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
263 <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
798d3a52
ZJS
264 </para>
265 </refsect1>
2c4ff634
LP
266
267</refentry>