Magellan Linux

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

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

revision 230 by niro, Thu Jun 28 17:31:50 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.6 2007-06-28 17:31:50 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
7  VBOXMODULE=vboxdrv.ko  
8    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"  COLRED="\033[1;6m\033[31m"
17  COLGREEN="\033[1;6m\033[32m"  COLGREEN="\033[1;6m\033[32m"
# Line 39  done Line 46  done
46    
47  mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."  mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."
48    
49  if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]  # check module version and recompile if it doesen't fit else break here
50  then  compile="yes"
51   die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."  for module in ${KERNELMODULES}
52  fi  do
53     if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT} ]]
54  if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]]   then
55  then   myver=$(modinfo -k ${KERNEL_VERSION} -F version ${module} | sed "s:\(.*\)_.*:\1:")
56   mecho "Removing old module ..."   if [[ ${VBOXVERSION} = ${myver} ]]
57   rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE}   then
58  fi   compile="no"
59     fi
60    done
61    
62  # compile the module  for module in ${KERNELMODULES}
63  cd ${INSTDIR}/src  do
64  make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile"   if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module}.${VBOXMODEXT} ]]
65     then
66  # install the module   # try to unload the modules
67  install -d /lib/modules/${KERNEL_VERSION}/misc   if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]]
68  install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install"   then
69     mecho "Unloading ${module} module ..."
70  # calc module dependencies   modprobe -r ${module}
71  mecho "Calculating module dependencies ..."   fi
72  depmod -ae ${KERNEL_VERSION}   fi
73    done
74    
75  # re-read udev rules to grant the right permissions  if [[ ${compile} = yes ]]
 if [[ -x $(which udevcontrol) ]]  
76  then  then
77   mecho "Reloading udev configuration ..."   if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]
78   $(which udevcontrol) reload_rules   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    
128  # load the module  # load the module
129  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
130  then  then
131   mecho "Loading kernel-module ${VBOXMODULE} ..."   for module in ${KERNELMODULES}
132   modprobe $(basename ${VBOXMODULE} .ko)   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  else
154   echo -e ${COLRED}   echo -e ${COLRED}
155   echo "Your current running kernel does not match the the module target."   echo "Your current running kernel does not match the the module target."
156   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,"
157   echo "before you can use virtual box."   echo "before you can use virtualbox."
158   echo -en ${COLDEFAULT}   echo -en ${COLDEFAULT}
159  fi  fi
160    
161  echo  echo
162  mecho "Virtualbox is now configured for your system."  mecho "Virtualbox is now configured for your system."
163  mecho "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.230  
changed lines
  Added in v.1672