blob: aa2b2269cbd87c115729c1c7e2c4cda02151ce79 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/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
|