+# 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 test -e "${root}/proc/self/status" \
+ && cat "${root}/proc/self/status" | grep -q "VxID: [0-9]*"; then
+ echo linux_vserver
+ if grep -q "VxID: 0$" "${root}/proc/self/status"; then
+ echo linux_vserver-host
+ else
+ echo linux_vserver-guest
+ fi
+fi
+
+# Check for UML.
+# Added by Laurent Léonard.
+if have_cpuinfo && grep -q 'UML' "${root}/proc/cpuinfo"; then
+ echo uml
+fi
+
+# Check for IBM PowerVM Lx86 Linux/x86 emulator.
+if have_cpuinfo && grep -q '^vendor_id.*PowerVM Lx86' "${root}/proc/cpuinfo"
+then
+ echo powervm_lx86
+fi
+
+# Check for Hitachi Virtualization Manager (HVM) Virtage logical partitioning.
+if echo "$dmi" | grep -q 'Manufacturer.*HITACHI' &&
+ echo "$dmi" | grep -q 'Product.* LPAR'; then
+ echo virtage
+fi
+
+# Check for IBM SystemZ.
+if have_cpuinfo && grep -q '^vendor_id.*IBM/S390' "${root}/proc/cpuinfo"; then
+ echo ibm_systemz
+ if [ -f "${root}/proc/sysinfo" ]; then
+ if grep -q 'VM.*Control Program.*z/VM' "${root}/proc/sysinfo"; then
+ echo ibm_systemz-zvm
+ elif grep -q '^LPAR' "${root}/proc/sysinfo"; then
+ echo ibm_systemz-lpar
+ else
+ # This is unlikely to be correct.
+ echo ibm_systemz-direct
+ fi
+ fi
+fi