Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 520 - (hide annotations) (download) (as text)
Sat Mar 22 20:19:30 2008 UTC (16 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 2483 byte(s)
-try to unload the vboxdrv module before deleting it

1 niro 126 #!/bin/bash
2 niro 520 # $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.8 2008-03-22 20:19:30 niro Exp $
3 niro 126 # Configures virtualbox for Magellan-Linux
4    
5     LIBDIR=/usr/lib
6     INSTDIR=${LIBDIR}/virtualbox
7     VBOXMODULE=vboxdrv.ko
8    
9 niro 129 COLRED="\033[1;6m\033[31m"
10     COLGREEN="\033[1;6m\033[32m"
11     COLDEFAULT="\033[0m"
12    
13     if [[ ${NOCOLORS} = true ]]
14 niro 127 then
15 niro 129 COLRED=""
16     COLGREEN=""
17     COLDEFAULT=""
18 niro 127 fi
19    
20 niro 129 die() { echo -e "${COLRED}$@${COLDEFAULT}"; exit 1; }
21     mecho() { echo -e "${COLGREEN}$@${COLDEFAULT}"; }
22 niro 126
23 niro 129 # must be root
24     [[ $(id -u) != 0 ]] && die "You must be r00t!"
25    
26 niro 229 # check for given argvs
27     for i in $*
28     do
29     case $1 in
30     --kernel-version) shift; KERNEL_VERSION="$1" ;;
31     --kernel-sources) shift; KERNEL_SOURCES="$1" ;;
32     esac
33     shift
34     done
35 niro 129
36 niro 229 # some sane defaults
37     [[ -z ${KERNEL_VERSION} ]] && KERNEL_VERSION="$(uname -r)"
38     [[ -z ${KERNEL_SOURCES} ]] && KERNEL_SOURCES="/lib/modules/${KERNEL_VERSION}/source"
39    
40     mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..."
41    
42     if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ]
43 niro 126 then
44 niro 229 die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."
45 niro 126 fi
46    
47 niro 229 if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]]
48 niro 126 then
49 niro 129 mecho "Removing old module ..."
50 niro 520 # try to unload the module
51     if [[ -n $(grep "${VBOXMODULE} " /proc/modules 2> /dev/null) ]]
52     then
53     modprobe -r ${VBOXMODULE/.ko/}
54     fi
55 niro 229 rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE}
56 niro 126 fi
57    
58     # compile the module
59     cd ${INSTDIR}/src
60 niro 229 make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile"
61 niro 126
62     # install the module
63 niro 229 install -d /lib/modules/${KERNEL_VERSION}/misc
64     install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install"
65 niro 126
66     # calc module dependencies
67 niro 129 mecho "Calculating module dependencies ..."
68 niro 229 depmod -ae ${KERNEL_VERSION}
69 niro 126
70 niro 129 # re-read udev rules to grant the right permissions
71     if [[ -x $(which udevcontrol) ]]
72     then
73     mecho "Reloading udev configuration ..."
74 niro 131 $(which udevcontrol) reload_rules
75 niro 129 fi
76    
77 niro 126 # load the module
78 niro 230 if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
79 niro 229 then
80     mecho "Loading kernel-module ${VBOXMODULE} ..."
81     modprobe $(basename ${VBOXMODULE} .ko)
82     else
83     echo -e ${COLRED}
84     echo "Your current running kernel does not match the the module target."
85     echo "You must boot into your target kernel and load the module manually,"
86     echo "before you can use virtual box."
87     echo -en ${COLDEFAULT}
88     fi
89 niro 126
90     echo
91 niro 129 mecho "Virtualbox is now configured for your system."
92 niro 313 mecho "Do not forget to add your users to the 'virtualbox' group."
93 niro 126 echo
94    
95     exit 0