Don't grep linux-specific files (e.g. /proc/cpuinfo) unless they exist.
This avoids extraneous errors on BSD/Hurd systems which don't have these
files.
+have_cpuinfo() {
+ test -e "${root}/proc/cpuinfo"
+}
+
fail() {
echo "virt-what: $1" >&2
exit 1
fail() {
echo "virt-what: $1" >&2
exit 1
fi
# Check for Linux-VServer
fi
# Check for Linux-VServer
-if cat "${root}/proc/self/status" | grep -q "VxID: [0-9]*"; then
+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
echo linux_vserver
if grep -q "VxID: 0$" "${root}/proc/self/status"; then
echo linux_vserver-host
# Check for UML.
# Added by Laurent Léonard.
# Check for UML.
# Added by Laurent Léonard.
-if grep -q 'UML' "${root}/proc/cpuinfo"; then
+if have_cpuinfo && grep -q 'UML' "${root}/proc/cpuinfo"; then
echo uml
fi
# Check for IBM PowerVM Lx86 Linux/x86 emulator.
echo uml
fi
# Check for IBM PowerVM Lx86 Linux/x86 emulator.
-if grep -q '^vendor_id.*PowerVM Lx86' "${root}/proc/cpuinfo"; then
+if have_cpuinfo && grep -q '^vendor_id.*PowerVM Lx86' "${root}/proc/cpuinfo"
+then
fi
# Check for IBM SystemZ.
fi
# Check for IBM SystemZ.
-if grep -q '^vendor_id.*IBM/S390' "${root}/proc/cpuinfo"; then
+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
if [ -f "${root}/proc/sysinfo" ]; then
if grep -q 'VM.*Control Program.*z/VM' "${root}/proc/sysinfo"; then