blob: aa2b2269cbd87c115729c1c7e2c4cda02151ce79 (
plain) (
tree)
|
|
#!/bin/bash
##########################################################
# Installs NVIDIA binary drivers into openslx plugin-repo
##########################################################
PLUGIN_PATH="/opt/openslx/plugin-repo/xserver"
# we could easily pass this information via calling stage1 script and do not
# need to find it our here ...
DISTRO=$1
# for development we take the only kernel version from normal systems
if [ -L /boot/vmlinuz ]; then
KVERS=$(ls -l /boot/vmlinuz | awk -F "->" '{print $2}'| grep -P -o "2.6.*")
else
KVERS=$(ls /boot/vmlinuz-* | head -n1 | awk -F "->" '{print $2}' | grep -P -o "2.6.*" )
fi
#change to plugin path
cd ${PLUGIN_PATH}
case ${DISTRO} in
ubuntu-9.10*)
./ubuntu-ng-gfx-install.sh nvidia ${DISTRO}
;;
ubuntu-9.04*)
./ubuntu-ng-gfx-install.sh nvidia ${DISTRO}
;;
ubuntu-8.10*)
./ubuntu-ng-gfx-install.sh nvidia ${DISTRO}
;;
ubuntu*)
./ubuntu-gfx-install.sh nvidia ${DISTRO}
;;
suse-1*)
./suse-gfx-install.sh nvidia ${DISTRO}
;;
# general purpose nvidia installer script
*)
echo "* Running general NVidia installer (expected in xserver::pkgpath)"
# unpack the nvidia installer; quickhack - expects just one package
echo " * Unpacking installer"
sh packages/NVIDIA-Linux-*.run -a -x >>nvidia-inst.log 2>&1
# prefix and paths should be matched more closely to each distro
# just demo at the moment ... but working at the moment
# without the kernel module
stdprfx=/opt/openslx/plugin-repo/xserver/nvidia
# backing up libglx.so and libGLcore.so
BACKUP_PATH=${stdprfx}/../mesa/usr/lib/xorg/modules/extensions
mkdir -p ${BACKUP_PATH}
if [ -f /usr/lib/xorg/modules/extensions/libglx.so ]; then
cp /usr/lib/xorg/modules/extensions/libGLcore.so ${BACKUP_PATH}
cp /usr/lib/xorg/modules/extensions/libglx.so ${BACKUP_PATH}
elif [ -f /usr/X11R6/lib/xorg/modules/extensions/libglx.so ]; then
cp /usr/X11R6/lib/xorg/modules/extensions/libglx.so ${BACKUP_PATH}
cp /usr/X11R6/lib/xorg/modules/extensions/libGLcore.so ${BACKUP_PATH}
touch ${BACKUP_PATH}/X11R6
fi
if [ -f /usr/lib/libGL.so.1.2 ]; then
cp /usr/lib/libGL.so.1.2 ${BACKUP_PATH}/../../..
elif [ -f /usr/X11R6/lib/libGL.so.1.2 ]; then
cp /usr/X11R6/lib/libGL.so.1.2 ${BACKUP_PATH}/../../..
touch ${BACKUP_PATH}/../../../X11R6
fi
# run the lib installer
echo " * Starting the library installer"
echo "Starting the lib installer" >>nvidia-inst.log
$(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N --no-abi-note \
--x-prefix=${stdprfx}/usr --x-library-path=${stdprfx}/usr/lib \
--x-module-path=${stdprfx}/usr/lib/xorg/modules \
--opengl-prefix=${stdprfx}/usr --utility-prefix=${stdprfx}/usr \
--documentation-prefix=${stdprfx}/usr --no-runlevel-check \
--no-rpms --no-x-check --no-kernel-module \
--log-file-name=nvidia-lib.log >>nvidia-inst.log 2>&1
# how to get an idea of the installed kernel?
# run the kernel module creator (should be done for every kernel!?)
kernel=${KVERS}
echo " * Trying to compile a kernel module for $kernel"
echo "Starting the kernel $kernel installer" >>nvidia-inst.log
# we need the .config file in /usr/src/linux or where ever!
# we need scripts/genksyms/genksyms compiled via make scripts in /usr/src/linux
# option available in newer nvidia packages
cd /usr/src/linux-${kernel%-*}
# in suse we have the config file lying there
cp /boot/config-${kernel} .config
ARCH=$(cat .config| grep -o CONFIG_M.86=y |tail -n1|grep -o "[0-9]86")
SUFFIX=${kernel##*-}
#cp -r /usr/src/linux-${kernel%-*}-obj/i${ARCH}/${SUFFIX}/ \
# /usr/src/linux-${kernel%-*}
make oldconfig >/dev/null 2>&1
make prepare >/dev/null 2>&1
cd - >/dev/null 2>&1
#/usr/src/linux-${kernel%-*}
addopts="--no-cc-version-check"
$(ls -d NVIDIA-Linux-*)/nvidia-installer -s -q -N -K --no-abi-note \
--kernel-source-path=/usr/src/linux-${kernel%-*} \
--kernel-include-path=/usr/src/linux-${kernel%-*}-obj/i${ARCH}/${SUFFIX}/include \
-k ${kernel} \
--kernel-install-path=/opt/openslx/plugin-repo/xserver/nvidia/modules \
--no-runlevel-check --no-abi-note --no-rpms ${addopts} \
--log-file-name=nvidia-kernel.log >>nvidia-inst.log 2>&1
if [ $? -gt 0 ];then
echo "* kernel module built failed!"
fi
echo " * Have a look into the several *.log files in "
echo " stage1/${DISTRO}/plugin-repo/xserver"
# redo some unwanted changes of nvidia-installer
if [ -f ${BACKUP_PATH}/libglx.so ]; then
cp ${BACKUP_PATH}/libGLcore.so /usr/lib/xorg/modules/extensions
cp ${BACKUP_PATH}/libglx.so /usr/lib/xorg/modules/extensions
if [ -f ${BACKUP_PATH}/X11R6 ]; then
cp ${BACKUP_PATH}/libGLcore.so /usr/X11R6/lib/xorg/modules/extensions
cp ${BACKUP_PATH}/libglx.so /usr/X11R6/lib/xorg/modules/extensions
fi
fi
if [ -f ${BACKUP_PATH}/../../../libGL.so.1.2 ]; then
cp ${BACKUP_PATH}/../../../libGL.so.1.2 /usr/lib
ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so
elif [ -f ${BACKUP_PATH}/../../../X11R6 ]; then
cp ${BACKUP_PATH}/../../../libGL.so.1.2 /usr/X11R6/lib/
ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf /usr/lib/libGL.so.1.2 /usr/lib/libGL.so
fi
;;
esac
# set a proper return value to evaluate it in the calling script
exit 0
|