]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd-detect-virt.xml
man: use same header for all files
[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>
1fdf07f5 65 <entry valign="top" morerows="11">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>
6c8a2c67 131 <entry valign="top" morerows="6">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
ILG
155
156 <row>
6d0c987d
ZJS
157 <entry><varname>rkt</varname></entry>
158 <entry>rkt app container runtime</entry>
9fb16425 159 </row>
6c8a2c67
BR
160
161 <row>
162 <entry><varname>wsl</varname></entry>
163 <entry><ulink url="https://docs.microsoft.com/en-us/windows/wsl/about">Windows Subsystem for Linux</ulink></entry>
164 </row>
798d3a52
ZJS
165 </tbody>
166 </tgroup>
167 </table>
168
169 <para>If multiple virtualization solutions are used, only the
9c5baa43
JE
170 "innermost" is detected and identified. That means if both
171 machine and container virtualization are used in
798d3a52
ZJS
172 conjunction, only the latter will be identified (unless
173 <option>--vm</option> is passed).</para>
6c8a2c67
BR
174 <para> Windows Subsystem for Linux is not a Linux container,
175 but an environment for running Linux userspace applications on
176 top of the Windows kernel using a Linux-compatible interface.
177 WSL is categorized as a container for practical purposes.
178 Multiple WSL environments share the same kernel and services
179 should generally behave like when being run in a container.</para>
798d3a52
ZJS
180 </refsect1>
181
182 <refsect1>
183 <title>Options</title>
184
185 <para>The following options are understood:</para>
186
187 <variablelist>
188 <varlistentry>
189 <term><option>-c</option></term>
190 <term><option>--container</option></term>
191
192 <listitem><para>Only detects container virtualization (i.e.
193 shared kernel virtualization).</para></listitem>
194 </varlistentry>
195
196 <varlistentry>
197 <term><option>-v</option></term>
198 <term><option>--vm</option></term>
199
4ee17545 200 <listitem><para>Only detects hardware virtualization.</para></listitem>
798d3a52
ZJS
201 </varlistentry>
202
d21be5ff
LP
203 <varlistentry>
204 <term><option>-r</option></term>
205 <term><option>--chroot</option></term>
206
207 <listitem><para>Detect whether invoked in a
208 <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
b938cb90 209 environment. In this mode, no output is written, but the return
d21be5ff
LP
210 value indicates whether the process was invoked in a
211 <function>chroot()</function>
212 environment or not.</para></listitem>
213 </varlistentry>
214
299a34c1
ZJS
215 <varlistentry>
216 <term><option>--private-users</option></term>
217
218 <listitem><para>Detect whether invoked in a user namespace. In this mode, no
219 output is written, but the return value indicates whether the process was invoked
220 inside of a user namespace or not. See
221 <citerefentry project='man-pages'><refentrytitle>user_namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
222 for more information.</para></listitem>
223 </varlistentry>
224
798d3a52
ZJS
225 <varlistentry>
226 <term><option>-q</option></term>
227 <term><option>--quiet</option></term>
228
229 <listitem><para>Suppress output of the virtualization
230 technology identifier.</para></listitem>
231 </varlistentry>
232
39824629
LP
233 <varlistentry>
234 <term><option>--list</option></term>
235
236 <listitem><para>Output all currently known and detectable container and VM environments.</para></listitem>
237 </varlistentry>
238
798d3a52
ZJS
239 <xi:include href="standard-options.xml" xpointer="help" />
240 <xi:include href="standard-options.xml" xpointer="version" />
241 </variablelist>
242
243 </refsect1>
244
245 <refsect1>
246 <title>Exit status</title>
247
248 <para>If a virtualization technology is detected, 0 is returned, a
249 non-zero code otherwise.</para>
250 </refsect1>
251
252 <refsect1>
253 <title>See Also</title>
254 <para>
255 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
d21be5ff 256 <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
299a34c1
ZJS
257 <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
258 <citerefentry project='man-pages'><refentrytitle>namespaces</refentrytitle><manvolnum>7</manvolnum></citerefentry>
798d3a52
ZJS
259 </para>
260 </refsect1>
2c4ff634
LP
261
262</refentry>