Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 860 - (hide annotations) (download) (as text)
Wed Jul 1 18:02:28 2009 UTC (14 years, 10 months ago) by niro
File MIME type: application/x-sh
File size: 3009 byte(s)
-updated to work with newer udev
-newer vitualbox versions (>2.0.0) needs to modules: vboxdrv and vboxnetflt

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