#!/bin/sh # Note the liberal use of the \ character. This is useful for # ignoring aliased versions of particular commands such as ls # and the like, without specifying the path. PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH cat <<.EOF NOTE: This script expects to be run with the same PATH that you use when compiling the kernel or application you are having problems with. If such is not the case, please disregard the following, set your PATH to the one you use, and rerun this script. ==} The following software versions appear to be installed: .EOF if [ -f "/proc/version" ]; then \echo "/proc/version :-" \cat /proc/version | \sed 's/) /)£/g' | \tr '£' '\n' | \sed 's/^/ /' fi \echo "uname -a :-" \uname -a | \sed 's/\(#[0-9]*\) /\1£/' | \tr '£' '\n' | \sed 's/^/ /' \echo \insmod -V 2>&1 | \awk 'NR==1 {print "Kernel modules ",$NF}' \echo "Gnu C " `\gcc --version 2> /dev/null || \echo ''` \ld -v 2>&1 | \awk -F\) '{print $1}' | \awk \ '/BFD/{print "Binutils ",$NF}' \ls -l `\ldd /bin/sh | \awk '/libc/{print $3}'` | \sed -e 's/\.so$//' \ | \awk -F'[.-]' '{print "Linux C Library " $(NF-2)"."$(NF-1)"."$NF}' \echo -n "Dynamic linker " \ldd -v > /dev/null 2>&1 && \ldd -v || \ldd --version | \head -1 \ls -l /usr/lib/lib{g,stdc}++.so 2>/dev/null | \awk -F. \ '{print "Linux C++ Library " $4"."$5"."$6}' \ps --version 2>&1 | \awk 'NR==1{print "Procps ", $NF}' \mount --version | \awk -F\- '{print "Mount ", $NF}' \hostname -V 2>&1 | \awk 'NR==1{print "Net-tools ", $NF}' # Kbd needs 'loadkeys -h', \loadkeys -h 2>&1 | \awk \ '(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}' # while console-tools needs 'loadkeys -V'. \loadkeys -V 2>&1 | \awk \ '(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}' \expr --v 2>&1 | \awk 'NR==1{print "Sh-utils ", $NF}' \echo if [ -f "/proc/modules" ]; then \echo "Modules Loaded :-" \cat /proc/modules | \sed -e "s/ .*$//" | \sort -f | \tr '\n' ' ' \ | \sed 's/^/ /' else if [ -d "/proc" ]; then \echo "No modules loaded" else \echo "Module information could not be found in /proc/modules" fi fi \cat <<.EOF ==} If some fields are empty or look unusual, then it is possible that ==} you have very old versions thereof. .EOF