1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunPATH="/sbin:$PATH" 4*4882a593SmuzhiyunCONFIG_DIR=/etc/X11 5*4882a593SmuzhiyunSERVER_BINARY=/usr/bin/Xorg 6*4882a593SmuzhiyunSERVER_SYMLINK="$CONFIG_DIR/X" 7*4882a593SmuzhiyunXORGCONFIG="$CONFIG_DIR/xorg.conf" 8*4882a593SmuzhiyunXORGCONFIG_DIR="$CONFIG_DIR/xorg.conf.d" 9*4882a593SmuzhiyunCONFIG_AUX_DIR=/var/lib/x11 10*4882a593SmuzhiyunX11R6_LIBS=/usr/X11R6/lib 11*4882a593SmuzhiyunLOCAL_LIBS=/usr/local/lib 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun# Pretty echo, underline the specified string: 14*4882a593Smuzhiyunpecho() { 15*4882a593Smuzhiyun echo "$@" 16*4882a593Smuzhiyun echo "$@"|sed 's/./-/g' 17*4882a593Smuzhiyun} 18*4882a593Smuzhiyun 19*4882a593Smuzhiyunexec >&3 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunif [ -e "$SERVER_SYMLINK" ]; then 22*4882a593Smuzhiyun pecho "X server symlink status:" 23*4882a593Smuzhiyun ls -dl "$SERVER_SYMLINK" 24*4882a593Smuzhiyun ls -dl "$(readlink "$SERVER_SYMLINK")" 25*4882a593Smuzhiyunelse 26*4882a593Smuzhiyun echo "$SERVER_SYMLINK does not exist." 27*4882a593Smuzhiyunfi 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunif ! [ -L "$SERVER_SYMLINK" ]; then 30*4882a593Smuzhiyun echo "$SERVER_SYMLINK is not a symlink." 31*4882a593Smuzhiyunfi 32*4882a593Smuzhiyun 33*4882a593Smuzhiyunif ! [ -x "$SERVER_SYMLINK" ]; then 34*4882a593Smuzhiyun echo "$SERVER_SYMLINK is not executable." 35*4882a593Smuzhiyunfi 36*4882a593Smuzhiyun 37*4882a593Smuzhiyunecho 38*4882a593Smuzhiyun 39*4882a593Smuzhiyunif ldd "$SERVER_BINARY" | grep -qs "$LOCAL_LIBS"; then 40*4882a593Smuzhiyun pecho "The server is using local libraries!" 41*4882a593Smuzhiyun ldd "$SERVER_BINARY" | grep "$LOCAL_LIBS" 42*4882a593Smuzhiyun echo 43*4882a593Smuzhiyunfi 44*4882a593Smuzhiyun 45*4882a593Smuzhiyunif ldd "$SERVER_BINARY" | grep -qs "$X11R6_LIBS"; then 46*4882a593Smuzhiyun pecho "The server is using obsolete libraries!" 47*4882a593Smuzhiyun ldd "$SERVER_BINARY" | grep "$X11R6_LIBS" 48*4882a593Smuzhiyun echo 49*4882a593Smuzhiyunfi 50*4882a593Smuzhiyun 51*4882a593Smuzhiyunif dpkg-divert --list | grep -qs -i libgl; then 52*4882a593Smuzhiyun pecho "Diversions concerning libGL are in place" 53*4882a593Smuzhiyun dpkg-divert --list | grep -i libgl 54*4882a593Smuzhiyun echo 55*4882a593Smuzhiyunfi 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunif which lspci > /dev/null 2>&1; then 58*4882a593Smuzhiyun pecho "VGA-compatible devices on PCI bus:" 59*4882a593Smuzhiyun LC_ALL=C lspci -nn | grep 'VGA compatible controller' 60*4882a593Smuzhiyunelse 61*4882a593Smuzhiyun echo "The lspci command was not found; not including PCI data." 62*4882a593Smuzhiyunfi 63*4882a593Smuzhiyun 64*4882a593Smuzhiyunecho 65*4882a593Smuzhiyun 66*4882a593Smuzhiyunif [ -e "$XORGCONFIG" ]; then 67*4882a593Smuzhiyun pecho "Xorg X server configuration file status:" 68*4882a593Smuzhiyun ls -dl "$XORGCONFIG" 69*4882a593Smuzhiyun echo 70*4882a593Smuzhiyun pecho "Contents of $XORGCONFIG:" 71*4882a593Smuzhiyun iconv -c -t ascii "$XORGCONFIG" 72*4882a593Smuzhiyunelse 73*4882a593Smuzhiyun echo "$XORGCONFIG does not exist." 74*4882a593Smuzhiyunfi 75*4882a593Smuzhiyun 76*4882a593Smuzhiyunecho 77*4882a593Smuzhiyun 78*4882a593Smuzhiyunif [ -d "$XORGCONFIG_DIR" ]; then 79*4882a593Smuzhiyun pecho "Contents of $XORGCONFIG_DIR:" 80*4882a593Smuzhiyun ls -l "$XORGCONFIG_DIR" 81*4882a593Smuzhiyunelse 82*4882a593Smuzhiyun echo "$XORGCONFIG_DIR does not exist." 83*4882a593Smuzhiyunfi 84*4882a593Smuzhiyun 85*4882a593Smuzhiyunecho 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunKMS_CONFS_DIR=/etc/modprobe.d 88*4882a593SmuzhiyunKMS_CONFS=$(ls $KMS_CONFS_DIR/*-kms.conf 2>/dev/null) 89*4882a593Smuzhiyun 90*4882a593Smuzhiyunif [ -n "$KMS_CONFS" ]; then 91*4882a593Smuzhiyun pecho "KMS configuration files:" 92*4882a593Smuzhiyun for CONF in $KMS_CONFS; do 93*4882a593Smuzhiyun echo "$CONF:" 94*4882a593Smuzhiyun # Indent, and get rid of empty lines: 95*4882a593Smuzhiyun sed 's/^/ /' < "$CONF"|egrep -v '^\s*$' 96*4882a593Smuzhiyun done 97*4882a593Smuzhiyunelse 98*4882a593Smuzhiyun echo "$KMS_CONFS_DIR contains no KMS configuration files." 99*4882a593Smuzhiyunfi 100*4882a593Smuzhiyun 101*4882a593Smuzhiyunecho 102*4882a593Smuzhiyun 103*4882a593SmuzhiyunKERNEL_VERSION=/proc/version 104*4882a593Smuzhiyun 105*4882a593Smuzhiyunif [ -e "$KERNEL_VERSION" ]; then 106*4882a593Smuzhiyun pecho "Kernel version ($KERNEL_VERSION):" 107*4882a593Smuzhiyun cat /proc/version 108*4882a593Smuzhiyunelse 109*4882a593Smuzhiyun echo "No kernel version found (missing $KERNEL_VERSION)." 110*4882a593Smuzhiyunfi 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunecho 113*4882a593Smuzhiyun 114*4882a593SmuzhiyunXORG_LOGS=$(ls -dt /var/log/Xorg.*.log $HOME/.local/share/xorg/Xorg.*.log 2>/dev/null) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyunif [ -n "$XORG_LOGS" ]; then 117*4882a593Smuzhiyun pecho "Xorg X server log files on system:" 118*4882a593Smuzhiyun ls -dlrt /var/log/Xorg.*.log $HOME/.local/share/xorg/Xorg.*.log 2>/dev/null 119*4882a593Smuzhiyun echo 120*4882a593Smuzhiyun for LOG in $XORG_LOGS; do 121*4882a593Smuzhiyun if [ -f "$LOG" ]; then 122*4882a593Smuzhiyun pecho "Contents of most recent Xorg X server log file ($LOG):" 123*4882a593Smuzhiyun cat "$LOG" 124*4882a593Smuzhiyun # the log files are large; only show the most recent 125*4882a593Smuzhiyun break 126*4882a593Smuzhiyun fi 127*4882a593Smuzhiyun done 128*4882a593Smuzhiyunelse 129*4882a593Smuzhiyun echo "No Xorg X server log files found." 130*4882a593Smuzhiyunfi 131*4882a593Smuzhiyun 132*4882a593Smuzhiyunecho 133*4882a593Smuzhiyun 134*4882a593Smuzhiyunif [ -x /bin/udevadm ]; then 135*4882a593Smuzhiyun pecho "udev information:" 136*4882a593Smuzhiyun /bin/udevadm info --export-db | awk -F '\n' -v RS='\n\n' '/E: ID_INPUT/ { print; print "" }' 137*4882a593Smuzhiyun echo 138*4882a593Smuzhiyunfi 139*4882a593Smuzhiyun 140*4882a593Smuzhiyunif [ -x /bin/dmesg ]; then 141*4882a593Smuzhiyun pecho "DRM Information from dmesg:" 142*4882a593Smuzhiyun dmesg | egrep -i 'drm|agp' 143*4882a593Smuzhiyun echo 144*4882a593Smuzhiyunfi 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun# vim:set ai et sts=4 sw=4 tw=0: 147