X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=virt-what.in;h=7cc4853dbebf736fd60722bebc9c3d21dd95d46e;hb=268ed1ddfb77e206b3fb6591ab71d115e71eb0d6;hp=74ffab2cb57ccfafcfbb3629f4226832b9ec94d8;hpb=3ea952163f0c28cd88f8473bb015df892c4247bf;p=virt-what.git diff --git a/virt-what.in b/virt-what.in index 74ffab2..7cc4853 100644 --- a/virt-what.in +++ b/virt-what.in @@ -26,10 +26,15 @@ # The following resources were useful in writing this script: # . http://www.dmo.ca/blog/20080530151107 +# Do not allow unset variables, and set defaults. +set -u +root='' +skip_qemu_kvm=false + VERSION="@VERSION@" function fail { - echo "virt-what: $1" + echo "virt-what: $1" >&2 exit 1 } @@ -43,7 +48,7 @@ function usage { # Handle the command line arguments, if any. -TEMP=`getopt -o v --long help --long version --long test-root: -n 'virt-what' -- "$@"` +TEMP=$(getopt -o v --long help --long version --long test-root: -n 'virt-what' -- "$@") if [ $? != 0 ]; then exit 1; fi eval set -- "$TEMP" @@ -70,27 +75,26 @@ PATH=$root@libexecdir@:$root/sbin:$root/usr/sbin:$PATH # Check we're running as root. -uid=`id -u` -if [ "$uid" != 0 ]; then +if [ "x$root" = "x" ] && [ "$EUID" -ne 0 ]; then fail "this script must be run as root" fi # Many fullvirt hypervisors give an indication through CPUID. Use the # helper program to get this information. -cpuid=`virt-what-cpuid-helper` +cpuid=$(virt-what-cpuid-helper) # Check for various products in the BIOS information. # Note that dmidecode doesn't exist on non-PC architectures. On these, # this will return an error which is ignored (error message redirected # into $dmi variable). -dmi=`LANG=C dmidecode 2>&1` +dmi=$(LANG=C dmidecode 2>&1) # Architecture. # Note for the purpose of testing, we only call uname with -p option. -arch=`uname -p` +arch=$(uname -p) # Check for VMware. # cpuid check added by Chetan Loke. @@ -131,6 +135,15 @@ if [ -d $root/proc/vz -a ! -d $root/proc/bc ]; then echo openvz fi +# Check for LXC containers +# http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface +# Added by Marc Fournier + +if [ -e $root/proc/1/environ ] && + cat $root/proc/1/environ | tr '\000' '\n' | grep -Eiq '^container='; then + echo lxc +fi + # Check for Linux-VServer if cat $root/proc/self/status | grep -q "VxID: [0-9]*"; then echo linux_vserver @@ -149,7 +162,7 @@ fi # Check for Hitachi Virtualization Manager (HVM) Virtage logical partitioning. if echo "$dmi" | grep -q 'Manufacturer.*HITACHI' && - echo "$dmi" | grep -q 'Product.*HVM LPAR'; then + echo "$dmi" | grep -q 'Product.* LPAR'; then echo virtage fi @@ -171,14 +184,14 @@ fi # Check for Parallels. if echo "$dmi" | grep -q 'Vendor: Parallels'; then echo parallels - skip_qemu_kvm=1 + skip_qemu_kvm=true fi # Check for Xen. if [ "$cpuid" = "XenVMMXenVMM" ]; then echo xen; echo xen-hvm - skip_qemu_kvm=1 + skip_qemu_kvm=true elif [ -f $root/proc/xen/capabilities ]; then echo xen if grep -q "control_d" $root/proc/xen/capabilities; then @@ -186,7 +199,7 @@ elif [ -f $root/proc/xen/capabilities ]; then else echo xen-domU fi - skip_qemu_kvm=1 + skip_qemu_kvm=true elif [ -f $root/sys/hypervisor/type ] && grep -q "xen" $root/sys/hypervisor/type; then # Ordinary kernel with pv_ops. There does not seem to be @@ -197,7 +210,7 @@ elif [ "$arch" = "ia64" ]; then if [ -d $root/sys/bus/xen -a ! -d $root/sys/bus/xen-backend ]; then # PV-on-HVM drivers installed in a Xen guest. echo xen - echo xen-domU + echo xen-hvm else # There is no virt leaf on IA64 HVM. This is a last-ditch # attempt to detect something is virtualized by using a @@ -217,7 +230,7 @@ fi # seen that it's Parallels. Xen uses QEMU as the device model, so # skip this test if we know it is Xen. -if [ ! "$skip_qemu_kvm" ]; then +if ! $skip_qemu_kvm; then if [ "$cpuid" = "KVMKVMKVM" ]; then echo kvm else