From f5558306746c0791dab666e76d51e7ef1ce38362 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Mon, 22 Aug 2022 10:35:21 -0600 Subject: [PATCH] virt: Support detection of Apple Virtualization.framework guests --- man/systemd-detect-virt.xml | 7 ++++++- man/systemd.unit.xml | 1 + src/basic/virt.c | 30 ++++++++++++++++-------------- src/basic/virt.h | 1 + 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/man/systemd-detect-virt.xml b/man/systemd-detect-virt.xml index 8ac4de4047..a8c089d0b5 100644 --- a/man/systemd-detect-virt.xml +++ b/man/systemd-detect-virt.xml @@ -62,7 +62,7 @@ - VM + VM qemu QEMU software virtualization, without KVM @@ -137,6 +137,11 @@ ACRN hypervisor + + apple + Apple Virtualization.framework + + Container openvz diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index ea95ba8869..7e744471c3 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1263,6 +1263,7 @@ uml, bhyve, qnx, + apple, openvz, lxc, lxc-libvirt, diff --git a/src/basic/virt.c b/src/basic/virt.c index e5277b4a4b..fd8954b3be 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -156,21 +156,22 @@ static Virtualization detect_vm_dmi_vendor(void) { const char *vendor; Virtualization id; } dmi_vendor_table[] = { - { "KVM", VIRTUALIZATION_KVM }, - { "OpenStack", VIRTUALIZATION_KVM }, /* Detect OpenStack instance as KVM in non x86 architecture */ - { "KubeVirt", VIRTUALIZATION_KVM }, /* Detect KubeVirt instance as KVM in non x86 architecture */ - { "Amazon EC2", VIRTUALIZATION_AMAZON }, - { "QEMU", VIRTUALIZATION_QEMU }, - { "VMware", VIRTUALIZATION_VMWARE }, /* https://kb.vmware.com/s/article/1009458 */ - { "VMW", VIRTUALIZATION_VMWARE }, - { "innotek GmbH", VIRTUALIZATION_ORACLE }, - { "VirtualBox", VIRTUALIZATION_ORACLE }, - { "Xen", VIRTUALIZATION_XEN }, - { "Bochs", VIRTUALIZATION_BOCHS }, - { "Parallels", VIRTUALIZATION_PARALLELS }, + { "KVM", VIRTUALIZATION_KVM }, + { "OpenStack", VIRTUALIZATION_KVM }, /* Detect OpenStack instance as KVM in non x86 architecture */ + { "KubeVirt", VIRTUALIZATION_KVM }, /* Detect KubeVirt instance as KVM in non x86 architecture */ + { "Amazon EC2", VIRTUALIZATION_AMAZON }, + { "QEMU", VIRTUALIZATION_QEMU }, + { "VMware", VIRTUALIZATION_VMWARE }, /* https://kb.vmware.com/s/article/1009458 */ + { "VMW", VIRTUALIZATION_VMWARE }, + { "innotek GmbH", VIRTUALIZATION_ORACLE }, + { "VirtualBox", VIRTUALIZATION_ORACLE }, + { "Xen", VIRTUALIZATION_XEN }, + { "Bochs", VIRTUALIZATION_BOCHS }, + { "Parallels", VIRTUALIZATION_PARALLELS }, /* https://wiki.freebsd.org/bhyve */ - { "BHYVE", VIRTUALIZATION_BHYVE }, - { "Hyper-V", VIRTUALIZATION_MICROSOFT }, + { "BHYVE", VIRTUALIZATION_BHYVE }, + { "Hyper-V", VIRTUALIZATION_MICROSOFT }, + { "Apple Virtualization", VIRTUALIZATION_APPLE }, }; int r; @@ -1018,6 +1019,7 @@ static const char *const virtualization_table[_VIRTUALIZATION_MAX] = { [VIRTUALIZATION_QNX] = "qnx", [VIRTUALIZATION_ACRN] = "acrn", [VIRTUALIZATION_POWERVM] = "powervm", + [VIRTUALIZATION_APPLE] = "apple", [VIRTUALIZATION_VM_OTHER] = "vm-other", [VIRTUALIZATION_SYSTEMD_NSPAWN] = "systemd-nspawn", diff --git a/src/basic/virt.h b/src/basic/virt.h index 6da08b4af1..e19a238939 100644 --- a/src/basic/virt.h +++ b/src/basic/virt.h @@ -25,6 +25,7 @@ typedef enum Virtualization { VIRTUALIZATION_QNX, VIRTUALIZATION_ACRN, VIRTUALIZATION_POWERVM, + VIRTUALIZATION_APPLE, VIRTUALIZATION_VM_OTHER, VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,