Magellan Linux

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

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

revision 313 by niro, Sun Aug 19 03:05:05 2007 UTC revision 1049 by niro, Wed Jun 9 22:29:52 2010 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.7 2007-08-19 03:05:05 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"  COLRED="\033[1;6m\033[31m"
14  COLGREEN="\033[1;6m\033[32m"  COLGREEN="\033[1;6m\033[32m"
# Line 39  done Line 43  done
43    
44  mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."  mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."
45    
46  if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]  # check module version an recompile if it doesen't fit else break here
47  then  compile="no"
48   die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."  for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
49  fi  do
50     myver=$(modinfo -k ${KERNEL_VERSION} -F version ${module} | sed "s:\(.*\)_.*:\1:")
51  if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]]   if [[ ${VBOXVERSION} != ${myver} ]]
52  then   then
53   mecho "Removing old module ..."   compile="yes"
54   rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE}   fi
55  fi  done
56    
57  # compile the module  for module in ${VBOXNETADPMODULE} ${VBOXNETMODULE} ${VBOXMODULE}
58  cd ${INSTDIR}/src  do
59  make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile"   if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT} ]]
60     then
61  # install the module   # try to unload the modules
62  install -d /lib/modules/${KERNEL_VERSION}/misc   if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]]
63  install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install"   then
64     mecho "Unloading ${module} module ..."
65  # calc module dependencies   modprobe -r ${module}
66  mecho "Calculating module dependencies ..."   fi
67  depmod -ae ${KERNEL_VERSION}   fi
68    done
69    
70  # re-read udev rules to grant the right permissions  if [[ ${compile} = yes ]]
 if [[ -x $(which udevcontrol) ]]  
71  then  then
72   mecho "Reloading udev configuration ..."   if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]
73   $(which udevcontrol) reload_rules   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    
118  # load the module  # load the module
119  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
120  then  then
121   mecho "Loading kernel-module ${VBOXMODULE} ..."   for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
122   modprobe $(basename ${VBOXMODULE} .ko)   do
123     mecho "Loading kernel-module ${module} ..."
124     modprobe ${module}
125     done
126    
127     if [ $(echo ${KERNEL_VERSION%%-*} | sed 's:\.::g') -ge 2631 ]
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_counter_paranoid
134     fi
135  else  else
136   echo -e ${COLRED}   echo -e ${COLRED}
137   echo "Your current running kernel does not match the the module target."   echo "Your current running kernel does not match the the module target."
138   echo "You must boot into your target kernel and load the module manually,"   echo "You must boot into your target kernel and load the modules manually,"
139   echo "before you can use virtual box."   echo "before you can use virtualbox."
140   echo -en ${COLDEFAULT}   echo -en ${COLDEFAULT}
141  fi  fi
142    

Legend:
Removed from v.313  
changed lines
  Added in v.1049