--- trunk/virtualbox/virtualbox-config.sh 2007/04/13 22:51:43 127 +++ trunk/virtualbox/virtualbox-config.sh 2007/06/28 16:48:21 229 @@ -1,49 +1,90 @@ #!/bin/bash -# $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.2 2007-04-13 22:51:43 niro Exp $ +# $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.5 2007-06-28 16:48:21 niro Exp $ # Configures virtualbox for Magellan-Linux LIBDIR=/usr/lib INSTDIR=${LIBDIR}/virtualbox VBOXMODULE=vboxdrv.ko -if [[ $(id -u) != 0 ]] +COLRED="\033[1;6m\033[31m" +COLGREEN="\033[1;6m\033[32m" +COLDEFAULT="\033[0m" + +if [[ ${NOCOLORS} = true ]] then - echo "You must be r00t!" - exit 1 + COLRED="" + COLGREEN="" + COLDEFAULT="" fi -echo "Running $(basename $0) for kernelversion $(uname -r) ..." +die() { echo -e "${COLRED}$@${COLDEFAULT}"; exit 1; } +mecho() { echo -e "${COLGREEN}$@${COLDEFAULT}"; } + +# must be root +[[ $(id -u) != 0 ]] && die "You must be r00t!" + +# check for given argvs +for i in $* +do + case $1 in + --kernel-version) shift; KERNEL_VERSION="$1" ;; + --kernel-sources) shift; KERNEL_SOURCES="$1" ;; + esac + shift +done + +# some sane defaults +[[ -z ${KERNEL_VERSION} ]] && KERNEL_VERSION="$(uname -r)" +[[ -z ${KERNEL_SOURCES} ]] && KERNEL_SOURCES="/lib/modules/${KERNEL_VERSION}/source" -if [ ! -f /lib/modules/$(uname -r)/source/include/linux/version.h ] +mecho "Running $(basename $0) for kernelversion ${KERNEL_VERSION} ..." + +if [ ! -f ${KERNEL_SOURCES}/include/linux/version.h ] then - echo "No includes for $(uname -r) found! Aborting." - exit 1 + die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting." fi -if [[ -f /lib/modules/$(uname -r)/misc/${VBOXMODULE} ]] +if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]] then - echo "Removing old module ..." - rm -f /lib/modules/$(uname -r)/misc/${VBOXMODULE} + mecho "Removing old module ..." + rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} fi # compile the module cd ${INSTDIR}/src -make -C /lib/modules/$(uname -r)/source SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules +make -C ${KERNEL_SOURCES} 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 +install -d /lib/modules/${KERNEL_VERSION}/misc +install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install" # calc module dependencies -depmod -ae +mecho "Calculating module dependencies ..." +depmod -ae ${KERNEL_VERSION} + +# re-read udev rules to grant the right permissions +if [[ -x $(which udevcontrol) ]] +then + mecho "Reloading udev configuration ..." + $(which udevcontrol) reload_rules +fi # load the module -echo "Loading module ${VBOXMODULE} ..." -modprobe $(basename ${VBOXMODULE} .ko) +if [[ xx$(uname -r) = x${KERNEL_VERSION} ]] +then + mecho "Loading kernel-module ${VBOXMODULE} ..." + modprobe $(basename ${VBOXMODULE} .ko) +else + echo -e ${COLRED} + echo "Your current running kernel does not match the the module target." + echo "You must boot into your target kernel and load the module manually," + echo "before you can use virtual box." + echo -en ${COLDEFAULT} +fi echo -echo "Virtualbox is now configured for your system." -echo "Do not forget to add you users to the 'virtualbox' group." +mecho "Virtualbox is now configured for your system." +mecho "Do not forget to add you users to the 'virtualbox' group." echo exit 0