#!/bin/bash # Usage: nvidia-use # Switch between nvidia and nv (Mesa OpenGL) use. # (c) GPL by Jouni . Lohikoski at iki . fi VERSION="2005.12.31" NVIDIA_VERSION=8174 MESA=libGL.so.1.2 NVIDIA_GL=libGL.so.1.0.$NVIDIA_VERSION MESA_OR_NVIDIA_DIR=/usr/local/lib/Mesa_or_nVidia/ if [ "$1" == "-v" ]; then OPT_V="-v" shift else OPT_V="" fi if [ "$1" == "help" ]; then cat <<__HELP__ How to configure for use: 1) Install xorg-x11 libs (i.e. yum install xorg-x11) 2) Run: $0 -v install 3) Install nVidia drivers (i.e. sh /usr/local/src/tars/NVIDIA-Linux-x86-1.0-8174-pkg1.run) 4) Run: $0 -v install 5) Now you can switch between Mesa and nVidia GLX extension with running: $0 -v Note! nvidia installer will overwrite and delete some files from /usr/lib/, /usr/X11R6/lib and /usr/X11R6/lib/modules/extensions/, so you need to install those libraries to $MESA_OR_NVIDIA_DIR with ... $0 install ...before you install nVidia drivers. Or else you may need to re-install xorg-x11 package to get the original Mesa libraries back if nvidia installer removed them. You can verify if the Mesa system is intact with: rpm -V xorg-x11 xorg-x11-Mesa-libGL __HELP__ exit 0 elif [ "$1" == "enable" ]; then if [ -x /usr/lib/$NVIDIA_GL ]; then if [ ! -x "$MESA_OR_NVIDIA_DIR/$NVIDIA_GL" ]; then echo "$0: You do not have correct nVidia LIBS copied to $MESA_OR_NVIDIA_DIR" exit 1 fi echo "Using nvidia OpenGL libs" ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$NVIDIA_GL /usr/X11R6/lib/libGL.so.1 ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$NVIDIA_GL /usr/X11R6/lib/libGL.so ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$NVIDIA_GL /usr/lib/libGL.so.1 ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/libglx.so.1.0.$NVIDIA_VERSION /usr/X11R6/lib/modules/extensions/libglx.so perl -pe 's/^\s+Driver\s+\"nv\"\s*$/\tDriver "nvidia"\n/;' -i /etc/X11/xorg.conf else echo "$0: Wrong nvidia version number. Fix it." exit 1 fi elif [ "$1" == "disable" ]; then if [ ! -x "$MESA_OR_NVIDIA_DIR/$MESA" ]; then echo "$0: You do not have correct Mesa LIBS copied to $MESA_OR_NVIDIA_DIR" exit 1 fi echo "Using Mesa OpenGL libs" ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$MESA /usr/X11R6/lib/libGL.so.1 ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$MESA /usr/X11R6/lib/libGL.so ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/$MESA /usr/lib/libGL.so.1 rm $OPT_V -f /usr/X11R6/lib/modules/extensions/libglx.so ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/libglx.a /usr/X11R6/lib/modules/extensions/libglx.a ln $OPT_V -f -s $MESA_OR_NVIDIA_DIR/libGLcore.a /usr/X11R6/lib/modules/extensions/libGLcore.a perl -pe 's/^\s+Driver\s+\"nvidia\"\s*$/\tDriver "nv"\n/;' -i /etc/X11/xorg.conf elsif elif [ "$1" == "install" ]; then if [ ! -d $MESA_OR_NVIDIA_DIR ]; then install -d $OPT_V $MESA_OR_NVIDIA_DIR fi # Mesa stuff cp $OPT_V -f /usr/X11R6/lib/$MESA $MESA_OR_NVIDIA_DIR cp $OPT_V -f /usr/X11R6/lib/modules/extensions/libglx.a $MESA_OR_NVIDIA_DIR cp $OPT_V -f /usr/X11R6/lib/modules/extensions/libGLcore.a $MESA_OR_NVIDIA_DIR # nVidia stuff cp $OPT_V -f /usr/X11R6/lib/modules/extensions/libglx.so.1.0.$NVIDIA_VERSION $MESA_OR_NVIDIA_DIR cp $OPT_V -f /usr/X11R6/lib/$NVIDIA_GL $MESA_OR_NVIDIA_DIR else echo "Usage: $0 [-v] " exit 1 fi #ldconfig if [ "$OPT_V" != "" ]; then glxinfo|grep -i direct fi echo "You may need to restart X now."