Fix incorrect detection of MS Surfacebook 2 as a virtual machine.
[virt-what.git] / virt-what.in
index d037a99..a61ce91 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh -
 # @configure_input@
-# Copyright (C) 2008-2017 Red Hat Inc.
+# Copyright (C) 2008-2019 Red Hat Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -42,7 +42,7 @@ use_sysctl() {
     # Lacking /proc, on some systems sysctl can be used instead.
     OS=$(uname) || fail "failed to get operating system name"
 
-    [ "$OS" == "OpenBSD" ]
+    [ "$OS" = "OpenBSD" ]
 }
 
 fail () {
@@ -132,7 +132,8 @@ fi
 # The negative check for cpuid is to distinguish this from Hyper-V
 # which also has the same manufacturer string in the SM-BIOS data.
 if [ "$cpuid" != "Microsoft Hv" ] &&
-    echo "$dmi" | grep -q 'Manufacturer: Microsoft Corporation'; then
+    echo "$dmi" | grep -q 'Manufacturer: Microsoft Corporation' &&
+    echo "$dmi" | grep -q 'Product Name: Virtual Machine'; then
     echo virtualpc
 fi
 
@@ -220,6 +221,14 @@ if echo "$dmi" | grep -q 'Vendor: Parallels'; then
     skip_qemu_kvm=true
 fi
 
+# Check for Nutanix AHV.
+# This is sufficiently different from KVM and has Viridian extensions,
+# so skip the KVM test.
+if echo "$dmi" | grep -q 'Manufacturer: Nutanix'; then
+    echo nutanix_ahv
+    skip_qemu_kvm=true
+fi
+
 # Check for oVirt/RHEV.
 if echo "$dmi" | grep -q 'Manufacturer: oVirt'; then
     echo ovirt
@@ -233,10 +242,6 @@ fi
 if [ "$cpuid" = "XenVMMXenVMM" ] &&
     ! echo "$dmi" | grep -q 'No SMBIOS nor DMI entry point found, sorry'; then
     echo xen; echo xen-hvm
-    # Check for AWS
-    if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
-        echo aws
-    fi
     skip_qemu_kvm=true
 elif [ -d "${root}/proc/xen" ]; then
     echo xen
@@ -392,3 +397,12 @@ if [ "${arch#sparc}" != "$arch" ] && [ -e "${root}/dev/mdesc" ]; then
         fi
     fi
 fi
+
+# Check for AWS.
+# AWS on Xen.
+if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
+    echo aws
+# AWS on baremetal or KVM.
+elif echo "$dmi" | grep -q 'Vendor: Amazon EC2'; then
+    echo aws
+fi