Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 986 - (show annotations) (download) (as text)
Fri Feb 19 12:38:29 2010 UTC (14 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 3100 byte(s)
-fixed a typo

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