systemd-detect-virt - Erkennung der Ausführung in einer virtualisierten Umgebung
systemd-detect-virt [OPTIONEN…]
systemd-detect-virt erkennt die Ausführung in einer virtualisierten Umgebung. Es identifiziert die Virtualisierungstechnik und kann zwischen vollständiger Maschinenvirtualisierung und Container-Virtualisierung unterscheiden. Systemd-detect-virt beendet sich mit einem Rückgabewert 0 (Erfolg), falls eine Virtualisierungstechnik erkannt wurde und einem von Null verschiedenen Wert (Fehler) anderenfalls. Standardmäßig wird jeder Virtualisierungstyp erkannt und die Optionen --container und --vm können zur Einschränkungen der erkannten Virtualisierungstypen verwandt werden.
Bei Ausführung ohne --quiet wird eine kurze Kennzeichnung für die erkannte Virtualisierungstechnik ausgegeben. Die nachfolgenden Techniken werden derzeit erkannt:
Tabelle 1. Bekannte Virtualisierungstechniken (sowohl VM, d.h. komplette Hardware-Virtualisierung und Container-, d.h. gemeinsame Kernel-Virtualisierung)
| Typ | ID | Produkt |
| VM | qemu | Qemu-Software-Virtualisierung, ohne KVM |
| kvm | Linux KVM-Kernel virtuelle Maschine in Kombination mit QEMU. Nicht für andere Virtualisierer verwandt, die die KVM-Schnittstelle verwenden, wie Oracle VirtualBox oder Amazon EC2 Nitro, siehe unten. |
| amazon | Amazon EC2 Nitro mittels Linux KVM |
| zvm | S390 z/VM |
| vmware | VMware Workstation oder Server und zugehörige Produkte |
| microsoft | Hyper-V, auch als Viridian oder Windows Server Virtualization bekannt |
| oracle | Oracle VM VirtualBox (historisch von Innotek und Sun Microsystems vermarktet), für alte und KVM-Hypervisoren |
| powervm | IBM PowerVM Hypervisor — kommt als Firmware mit einigen IBM-POWER-Servern |
| xen | Xen Hypervisor (nur domU, nicht dom0) |
| bochs | Bochs Emulator |
| uml | User-mode Linux |
| parallels | Parallels Desktop, Parallels Server |
| bhyve | bhyve, FreeBSD-Hypervisor |
| qnx | QNX-Hypervisor |
| acrn | ACRN-Hypervisor[1] |
| apple | Apple Virtualization.framework[2] |
| sre | LMHS-SRE-Hypervisor[3] |
| Container | openvz | OpenVZ/Virtuozzo |
| lxc | Linux-Container-Implementierung von LXC |
| lxc-libvirt | Linux-Container-Implementierung von Libvirt |
| systemd-nspawn | Systemds minimale Container-Implementierung, siehe systemd-nspawn(1) |
| docker | Docker Container-Verwalter |
| podman | Podman[4] Container-Verwalter |
| rkt | Rkt-App-Container-Laufzeitumgebung |
| wsl | Windows Subsystem für Linux[5] |
| PRoot | proot[6] Chroot/Bind-Einhängungs-Nachbildung im Anwendungsraum |
| pouch | Pouch[7] Container-Antriebssystem |
Falls mehrere Virtualisierungslösungen verwandt werden, wird nur die »innerste« erkannt und identifiziert. Das bedeutet, falls sowohl Maschinen- als auch Container-Virtualisierung zusammen benutzt werden, wird nur Letztere identifiziert (falls nicht --vm übergeben wird).
Windows Subsystem for Linux ist kein Linux-Container, sondern eine Umgebung zur Ausführung von Linux-Anwendungsprogrammen oberhalb des Windows-Kernels mittels einer Linux-kompatiblen Schnittstelle. WSL wird für praktische Zwecke als Container kategorisiert. Mehrere WSL-Umgebungen benutzen den gleichen Kernel und Dienste sollten sich im Allgemeinen so verhalten, wie sie es in einem Container täten.
Die folgenden Optionen werden verstanden:
-c, --container
Erkennt nur Container-Virtualisierung (d.h. gemeinsame Kernel-Virtualisierung).
-v, --vm
Erkennt nur Hardware-Virtualisierungen.
-r, --chroot
Erkennt, ob der Aufruf in einer
chroot(2)-Umgebung erfolgte. In diesem Modus wird keine Ausgabe geschrieben, aber der Rückgabewert zeigt an, ob der Prozess in einer
chroot()-Umgebung aufgerufen wurde oder nicht.
Hinzugefügt in Version 228.
--private-users
Erkennt, ob der Aufruf in einem Benutzer-Namensraum erfolgte. In diesem Modus wird keine Ausgabe geschrieben, aber der Rückgabewert zeigt an, ob der Prozess innerhalb eines Benutzernamensraums aufgerufen wurde oder nicht. Siehe
user_namespaces(7) für weitere Informationen.
Hinzugefügt in Version 232.
--cvm
Erkennt, ob der Aufruf in einer vertraulichen virtuellen Maschine erfolgte. Das Ergebnis dieser Ermittlung kann zur Deaktivierung von Funktionalitäten verwandt werden, die in vertraulichen VMs nicht benutzt werden sollten. Dies darf nicht zur Veröffentlichung sicherheitssensibler Informationen führen. Letztere dürfen nur nach der Bescheinigung der vertraulichen Umgebung veröffentlicht werden.
Hinzugefügt in Version 254.
-q, --quiet
Unterdrückt die Ausgabe der Kennung der Virtualisierungstechnik.
--list
Gibt alle derzeit bekannten und erkennbaren Container- und VM-Umgebungen aus.
Hinzugefügt in Version 239.
--list-cvm
Gibt alle derzeit bekannten und erkennbaren vertraulichen Virtualisierungstechniken aus.
Hinzugefügt in Version 254.
-h, --help
Zeigt einen kurzen Hilfetext an und beendet das Programm.
--version
Zeigt eine kurze Versionszeichenkette an und beendet das Programm.
Falls eine Virtualisierungstechnik erkannt wurde, wird 0 zurückgeliefert, andernfalls ein anderer Code.
- 1.
- ACRN-Hypervisor
https://projectacrn.org
- 2.
- Apple Virtualization.framework
https://developer.apple.com/documentation/virtualization
- 3.
- LMHS-SRE-Hypervisor
https://www.lockheedmartin.com/en-us/products/Hardened-Security-for-Intel-Processors.html
- 4.
- Podman
https://podman.io
- 5.
- Windows Subsystem für Linux
https://docs.microsoft.com/en-us/windows/wsl/about
- 6.
- PRoot
https://proot-me.github.io/
- 7.
- Pouch
https://github.com/alibaba/pouch
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.