Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 520 - (show 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 #!/bin/bash
2 # $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.8 2008-03-22 20:19:30 niro Exp $
3 # Configures virtualbox for Magellan-Linux
4
5 LIBDIR=/usr/lib
6 INSTDIR=${LIBDIR}/virtualbox
7 VBOXMODULE=vboxdrv.ko
8
9 COLRED="\033[1;6m\033[31m"
10 COLGREEN="\033[1;6m\033[32m"
11 COLDEFAULT="\033[0m"
12
13 if [[ ${NOCOLORS} = true ]]
14 then
15 COLRED=""
16 COLGREEN=""
17 COLDEFAULT=""
18 fi
19
20 die() { echo -e "${COLRED}$@${COLDEFAULT}"; exit 1; }
21 mecho() { echo -e "${COLGREEN}$@${COLDEFAULT}"; }
22
23 # must be root
24 [[ $(id -u) != 0 ]] && die "You must be r00t!"
25
26 # 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
36 # 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 then
44 die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting."
45 fi
46
47 if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]]
48 then
49 mecho "Removing old module ..."
50 # 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 rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE}
56 fi
57
58 # compile the module
59 cd ${INSTDIR}/src
60 make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile"
61
62 # install the module
63 install -d /lib/modules/${KERNEL_VERSION}/misc
64 install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install"
65
66 # calc module dependencies
67 mecho "Calculating module dependencies ..."
68 depmod -ae ${KERNEL_VERSION}
69
70 # re-read udev rules to grant the right permissions
71 if [[ -x $(which udevcontrol) ]]
72 then
73 mecho "Reloading udev configuration ..."
74 $(which udevcontrol) reload_rules
75 fi
76
77 # load the module
78 if [[ x$(uname -r) = x${KERNEL_VERSION} ]]
79 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
90 echo
91 mecho "Virtualbox is now configured for your system."
92 mecho "Do not forget to add your users to the 'virtualbox' group."
93 echo
94
95 exit 0