Magellan Linux

Diff of /trunk/virtualbox/virtualbox-config.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 127 by niro, Fri Apr 13 22:51:43 2007 UTC revision 1406 by niro, Mon Jul 4 16:53:05 2011 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.2 2007-04-13 22:51:43 niro Exp $  # $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.13 2010-06-09 22:29:52 niro Exp $
3  # Configures virtualbox for Magellan-Linux  # Configures virtualbox for Magellan-Linux
4    
5  LIBDIR=/usr/lib  LIBDIR=/usr/lib
6  INSTDIR=${LIBDIR}/virtualbox  INSTDIR=${LIBDIR}/virtualbox
7  VBOXMODULE=vboxdrv.ko  VBOXVERSION="$(< ${INSTDIR}/version)"
8    VBOXMODEXT=ko
9    VBOXMODULE=vboxdrv
10    VBOXNETMODULE=vboxnetflt
11    VBOXNETADPMODULE=vboxnetadp
12    
13    COLRED="\033[1;6m\033[31m"
14    COLGREEN="\033[1;6m\033[32m"
15    COLDEFAULT="\033[0m"
16    
17  if [[ $(id -u) != 0 ]]  if [[ ${NOCOLORS} = true ]]
18  then  then
19   echo "You must be r00t!"   COLRED=""
20   exit 1   COLGREEN=""
21     COLDEFAULT=""
22  fi  fi
23    
24  echo "Running $(basename $0) for kernelversion $(uname -r) ..."  die() { echo -e "${COLRED}$@${COLDEFAULT}"; exit 1; }
25    mecho() { echo -e "${COLGREEN}$@${COLDEFAULT}"; }
26    
27  if [ ! -f /lib/modules/$(uname -r)/source/include/linux/version.h ]  # must be root
28  then  [[ $(id -u) != 0 ]] && die "You must be r00t!"
  echo "No includes for $(uname -r) found! Aborting."  
  exit 1  
 fi  
29    
30  if [[ -f /lib/modules/$(uname -r)/misc/${VBOXMODULE} ]]  # check for given argvs
31    for i in $*
32    do
33     case $1 in
34     --kernel-version) shift; KERNEL_VERSION="$1" ;;
35     --kernel-sources) shift; KERNEL_SOURCES="$1" ;;
36     esac
37     shift
38    done
39    
40    # some sane defaults
41    [[ -z ${KERNEL_VERSION} ]] && KERNEL_VERSION="$(uname -r)"
42    [[ -z ${KERNEL_SOURCES} ]] && KERNEL_SOURCES="/lib/modules/${KERNEL_VERSION}/source"
43    
44    mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."
45    
46    # check module version an recompile if it doesen't fit else break here
47    compile="no"
48    for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
49    do
50     myver=$(modinfo -k ${KERNEL_VERSION} -F version ${module} | sed "s:\(.*\)_.*:\1:")
51     if [[ ${VBOXVERSION} != ${myver} ]]
52     then
53     compile="yes"
54     fi
55    done
56    
57    for module in ${VBOXNETADPMODULE} ${VBOXNETMODULE} ${VBOXMODULE}
58    do
59     if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT} ]]
60     then
61     # try to unload the modules
62     if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]]
63     then
64     mecho "Unloading ${module} module ..."
65     modprobe -r ${module}
66     fi
67     fi
68    done
69    
70    if [[ ${compile} = yes ]]
71  then  then
72   echo "Removing old module ..."   if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]
73   rm -f /lib/modules/$(uname -r)/misc/${VBOXMODULE}   then
74     die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."
75     fi
76    
77     for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
78     do
79     if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT} ]]
80     then
81     mecho "Removing old ${module} module ..."
82     rm -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT}
83     fi
84     done
85    
86     for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
87     do
88     # compile the module
89     cd ${INSTDIR}/src/${module}
90    
91     make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean || die "mod-compile ${module}"
92    
93     # need some symver from vboxmodule (must be run after clean!)
94     if [[ ${module} = ${VBOXNETMODULE} ]] || [[ ${module} = ${VBOXNETADPMODULE} ]]
95     then
96     [[ -f ../${VBOXMODULE}/Module.symvers ]] && cp ../${VBOXMODULE}/Module.symvers .
97     fi
98    
99     make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) modules || die "mod-compile ${module}"
100    
101     # install the modules
102     install -d /lib/modules/${KERNEL_VERSION}/misc
103     install -m0644 ${module}.${VBOXMODEXT} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install ${module}"
104     done
105    
106     # calc module dependencies
107     mecho "Calculating module dependencies ..."
108     depmod -a ${KERNEL_VERSION}
109    
110     # re-read udev rules to grant the right permissions
111     if [[ -x $(which udevadm) ]]
112     then
113     mecho "Reloading udev configuration ..."
114     $(which udevadm) control --reload-rules
115     fi
116  fi  fi
117    
 # compile the module  
 cd ${INSTDIR}/src  
 make -C /lib/modules/$(uname -r)/source SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules  
   
 # install the module  
 install -d /lib/modules/$(uname -r)/misc  
 install -m0644 ${VBOXMODULE} /lib/modules/$(uname -r)/misc  
   
 # calc module dependencies  
 depmod -ae  
   
118  # load the module  # load the module
119  echo "Loading module ${VBOXMODULE} ..."  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
120  modprobe $(basename ${VBOXMODULE} .ko)  then
121     for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
122     do
123     mecho "Loading kernel-module ${module} ..."
124     modprobe ${module}
125     done
126    
127     if [ $(echo ${KERNEL_VERSION%%-*} | sed 's:\.::g') -ge 2639 ]
128     then
129     # fixes NMI warnings with kernels >=2.6.31:
130     # vboxdrv: Warning: 2.6.31+ kernel detected. Most likely the hardware performance
131     # vboxdrv: counter framework which can generate NMIs is active.
132     mecho "Disabled hardware performance counter NMIs ..."
133     echo 2 > /proc/sys/kernel/perf_event_paranoid
134    
135     elif [ $(echo ${KERNEL_VERSION%%-*} | sed 's:\.::g') -ge 2631 ]
136     then
137     # fixes NMI warnings with kernels >=2.6.31:
138     # vboxdrv: Warning: 2.6.31+ kernel detected. Most likely the hardware performance
139     # vboxdrv: counter framework which can generate NMIs is active.
140     mecho "Disabled hardware performance counter NMIs ..."
141     echo 2 > /proc/sys/kernel/perf_counter_paranoid
142     fi
143    else
144     echo -e ${COLRED}
145     echo "Your current running kernel does not match the the module target."
146     echo "You must boot into your target kernel and load the modules manually,"
147     echo "before you can use virtualbox."
148     echo -en ${COLDEFAULT}
149    fi
150    
151  echo  echo
152  echo "Virtualbox is now configured for your system."  mecho "Virtualbox is now configured for your system."
153  echo "Do not forget to add you users to the 'virtualbox' group."  mecho "Do not forget to add your users to the 'vboxusers' group."
154  echo  echo
155    
156  exit 0  exit 0

Legend:
Removed from v.127  
changed lines
  Added in v.1406