Magellan Linux

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

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

revision 986 by niro, Fri Feb 19 12:38:29 2010 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.11 2010-02-19 12:38:29 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  VBOXNETMODULE=vboxnetflt.ko  VBOXMODEXT=ko
9  VBOXNETADPMODULE=vboxnetadp.ko  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 41  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"
  die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."  
 fi  
   
48  for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}  for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
49  do  do
50   if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module} ]]   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   then
  mecho "Removing old ${module} module ..."  
61   # try to unload the modules   # try to unload the modules
62   if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]]   if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]]
63   then   then
64   modprobe -r ${module/.ko/}   mecho "Unloading ${module} module ..."
65     modprobe -r ${module}
66   fi   fi
  rm -f /lib/modules/${KERNEL_VERSION}/misc/${module}  
67   fi   fi
68  done  done
69    
70  for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}  if [[ ${compile} = yes ]]
71  do  then
72   # compile the module   if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]
  cd ${INSTDIR}/src/${module/.ko/}  
   
  make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean || die "mod-compile ${module}"  
   
  # need some symver from vboxmodule (must be run after clean!)  
  if [[ ${module} = ${VBOXNETMODULE} ]] && [[ -f ../${VBOXMODULE/.ko/}/Module.symvers ]]  
73   then   then
74   cp ../${VBOXMODULE/.ko/}/Module.symvers .   die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."
75   fi   fi
76    
77   make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) modules || die "mod-compile ${module}"   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   # install the modules   for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
87   install -d /lib/modules/${KERNEL_VERSION}/misc   do
88   install -m0644 ${module} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install ${module}"   # compile the module
89  done   cd ${INSTDIR}/src/${module}
90    
91     make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean || die "mod-compile ${module}"
92    
93  # calc module dependencies   # need some symver from vboxmodule (must be run after clean!)
94  mecho "Calculating module dependencies ..."   if [[ ${module} = ${VBOXNETMODULE} ]] || [[ ${module} = ${VBOXNETADPMODULE} ]]
95  depmod -ae ${KERNEL_VERSION}   then
96     [[ -f ../${VBOXMODULE}/Module.symvers ]] && cp ../${VBOXMODULE}/Module.symvers .
97     fi
98    
99  # re-read udev rules to grant the right permissions   make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) modules || die "mod-compile ${module}"
100  if [[ -x $(which udevadm) ]]  
101  then   # install the modules
102   mecho "Reloading udev configuration ..."   install -d /lib/modules/${KERNEL_VERSION}/misc
103   $(which udevadm) control --reload-rules   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
# Line 97  then Line 121  then
121   for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}   for module in ${VBOXMODULE} ${VBOXNETMODULE} ${VBOXNETADPMODULE}
122   do   do
123   mecho "Loading kernel-module ${module} ..."   mecho "Loading kernel-module ${module} ..."
124   modprobe $(basename ${module} .ko)   modprobe ${module}
125   done   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."

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