Magellan Linux

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

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

revision 129 by niro, Sat Apr 14 14:10:48 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.3 2007-04-14 14:10:48 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 23  mecho() { echo -e "${COLGREEN}$@${COLDEF Line 30  mecho() { echo -e "${COLGREEN}$@${COLDEF
30  # must be root  # must be root
31  [[ $(id -u) != 0 ]] && die "You must be r00t!"  [[ $(id -u) != 0 ]] && die "You must be r00t!"
32    
33  mecho "Running $(basename $0) for kernelversion $(uname -r) ..."  # check for given argvs
34    for i in $*
35  if [ ! -f /lib/modules/$(uname -r)/source/include/linux/version.h ]  do
36  then   case $1 in
37   die "No kernel headers for $(uname -r) found! Aborting."   --kernel-version) shift; KERNEL_VERSION="$1" ;;
38  fi   --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   mecho "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    
128  # compile the module  # load the module
129  cd ${INSTDIR}/src  if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
 make -C /lib/modules/$(uname -r)/source SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile"  
   
 # install the module  
 install -d /lib/modules/$(uname -r)/misc  
 install -m0644 ${VBOXMODULE} /lib/modules/$(uname -r)/misc || die "mod-install"  
   
 # calc module dependencies  
 mecho "Calculating module dependencies ..."  
 depmod -ae  
   
 # re-read udev rules to grant the right permissions  
 if [[ -x $(which udevcontrol) ]]  
130  then  then
131   mecho "Reloading udev configuration ..."   for module in ${KERNELMODULES}
132   $(which udevcontrol) reload_config   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  fi
160    
 # load the module  
 mecho "Loading kernel-module ${VBOXMODULE} ..."  
 modprobe $(basename ${VBOXMODULE} .ko)  
   
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.129  
changed lines
  Added in v.1672