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

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