summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/xserver/files/ubuntu-8.10-gfx-install.sh
blob: f31f82d930caf55585fcedb71103f274520bb559 (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
139
140
141
142
143
144
145
146
#!/bin/sh

# gets needed packages for ubuntu nvidia/ati drivers
# $1 = nvidia | ati
PLUGIN_FOLDER="/opt/openslx/plugin-repo/xserver"
TMP_FOLDER="/tmp/slx-plugin/xserver"
TARGET="$1"

if [ ! -d "${PLUGIN_FOLDER}" ]; then
  mkdir -p "${PLUGIN_FOLDER}/modules"
fi

# change into temp
cd ${TMP_FOLDER} > /dev/null

if [ -e "/boot/vmlinuz" ]; then
  KVER=$(ls -ahl '/boot/vmlinuz' | sed -e 's,^.*vmlinuz-,,g')
else
  KVER=$(find /lib/modules/2.6* -maxdepth 0|sed 's,/lib/modules/,,g'|sort|tail -n1)
fi


echo "  * downloading restricted modules... this may take a while"
# TODO: remove commented out "> /dev/null ..." later... multiple times
#       in this script! check all comments!
aptitude download linux-restricted-modules-${KVER} > /dev/null 2>&1
if [ $? -eq 1 ]; then
  echo "  * Didn't get restricted modules. Exit now!"
  #TODO: remove sh when development is finished
  sh
  exit
fi
MODULE_DEB=$(ls linux-restricted-modules-*.deb | tail -n1)
dpkg-deb -x ${MODULE_DEB} ${TMP_FOLDER}/modules

case ${TARGET} in
  ati)
    mkdir -p ${PLUGIN_FOLDER}/ati
    mkdir -p ${PLUGIN_FOLDER}/ati/modules

    echo "  * downloading fglrx xorg package...this may take a while"
    aptitude download xorg-driver-fglrx > /dev/null 2>&1
    if [ $? -eq 1 ]; then
      echo "  * Didn't get package xorg-driver-fglrx! Exit now!"
      #TODO: remove sh when development is finished
      sh
      exit
    fi
    FGLRX_DEB=$(ls xorg-driver-fglrx_*.deb | tail -n1)
    # extract $DEB
    dpkg-deb -x ${FGLRX_DEB} ${PLUGIN_FOLDER}/ati

    # assemble module
    cd modules/lib/linux-restricted-modules/${KVER}/
    #bash
#ld_static -d -r -o ${PLUGIN_FOLDER}/ati/modules/fglrx.ko fglrx/*

    if [ -f /usr/lib/dri/fglrx_dri.so ]; then
      mv /usr/lib/dri/fglrx_dri.so /usr/lib/dri/fglrx_dri.so.slx
    else
      # remove link
      rm -rf /usr/lib/dri/fglrx_dri.so
    fi
    ln -s ${PLUGIN_FOLDER}/ati/usr/lib/dri/fglrx_dri.so \
        /usr/lib/dri/fglrx_dri.so

    # cleanup
    cd ${PLUGIN_FOLDER}/ati

  ;;


  nvidia)
    mkdir -p ${PLUGIN_FOLDER}/nvidia/modules
    
    NVIDIA_DRIVER_VERSION=180

    echo -n "  * downloading nvidia xorg package... "
    aptitude download nvidia-glx-${NVIDIA_DRIVER_VERSION} > /dev/null 2>&1
    if [ $? -eq 1 ]; then
      echo "fail"
      echo "  * Didn't get package nvidia-glx-${NVIDIA_DRIVER_VERSION}!"
      exit
    else
      echo "ok"
    fi

    echo -n "  * downloading nvidia kernel package..."
    aptitude download nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source >/dev/null 2>&1
    if [ $? -eq 1 ]; then
      echo "fail"
      echo "  * Didn't get package nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source!"
      exit
    else
      echo "ok"
    fi

    NVIDIA_DEB=$(ls -1 nvidia-glx*.deb | tail -n1)
    NVIDIA_KERNEL_DEB=$(ls -1 nvidia-${NVIDIA_DRIVER_VERSION}-kernel-source*.deb | tail -n1)
    # extract $DEB
    dpkg-deb -x ${NVIDIA_DEB} ${PLUGIN_FOLDER}/nvidia
    # extract the sources deb to root
    dpkg-deb -x ${NVIDIA_KERNEL_DEB} /
    
    NVIDIA_DKMS_DIR=$(find /var/lib/dkms/nvidia/${NVIDIA_DRIVER_VERSION}* \
      -maxdepth 0 -type d)
    NVIDIA_SOURCE_DIR=$(find  /usr/src/nvidia-${NVIDIA_DRIVER_VERSION}* \
      -maxdepth 0 -type d)
    ln -sf ${NVIDIA_SOURCE_DIR} ${NVIDIA_DKMS_DIR}/source
    
    NVIDIA_FULL_VERSION=$(echo ${NVIDIA_DKMS_DIR} | \
      sed -e 's/\/var\/lib\/dkms\/nvidia\///')
    
    ######    build kernel module   ######
    echo -n "  * Building nvidia Kernel Module for Kernel ${KVER} .. "
    dkms -m nvidia -v ${NVIDIA_FULL_VERSION} \
         -k ${KVER} \
         --kernelsourcedir /usr/src/linux-headers-${KVER}/ \
         --no-prepare-kernel \
         build 
#> /dev/null 2>&1
    if [ $? -eq 0 ]; then
      echo "ok"
    else
      echo "fail"
      exit
    fi

    NVIDIA_MODULE_PATH=$(find ${NVIDIA_DKMS_DIR}/${KVER}/ -name nvidia.ko)

    #module is now under /var/lib/dkms/nvidia/${NVIDIA_DRIVER_VERSION}.<subversion>/${KVER}/iX86/module/nvidia.ko
    # TODO: rest & cleanup :)
    ln -sf ${NVIDIA_MODULE_PATH} ${PLUGIN_FOLDER}/nvidia/modules/nvidia.ko

    # assemble module - we just need the new one here
    # TODO: modules for older graphics hardware can be found here
    #cd modules/lib/linux-restricted-modules/${KVER}/
    #ld_static -d -r -o ${PLUGIN_FOLDER}/nvidia/modules/nvidia.ko nvidia_new/*

    # cleanup
    cd ${PLUGIN_FOLDER}/nvidia
    rm -rf ./etc
    #TODO: check for more cleanups when the main part works!
  ;;
esac