--- trunk/virtualbox/virtualbox-config.sh 2009/07/01 18:00:38 859 +++ trunk/virtualbox/virtualbox-config.sh 2009/07/01 18:02:28 860 @@ -1,10 +1,11 @@ #!/bin/bash -# $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.8 2008-03-22 20:19:30 niro Exp $ +# $Header: /root/magellan-cvs/src/virtualbox/virtualbox-config.sh,v 1.9 2009-07-01 18:02:28 niro Exp $ # Configures virtualbox for Magellan-Linux LIBDIR=/usr/lib INSTDIR=${LIBDIR}/virtualbox VBOXMODULE=vboxdrv.ko +VBOXNETMODULE=vboxnetflt.ko COLRED="\033[1;6m\033[31m" COLGREEN="\033[1;6m\033[32m" @@ -44,45 +45,63 @@ die "No kernel sources for kernel ${KERNEL_VERSION} found! Aborting." fi -if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} ]] -then - mecho "Removing old module ..." - # try to unload the module - if [[ -n $(grep "${VBOXMODULE} " /proc/modules 2> /dev/null) ]] +for module in ${VBOXMODULE} ${VBOXNETMODULE} +do + if [[ -f /lib/modules/${KERNEL_VERSION}/misc/${module} ]] then - modprobe -r ${VBOXMODULE/.ko/} + mecho "Removing old ${module} module ..." + # try to unload the modules + if [[ -n $(grep "${module} " /proc/modules 2> /dev/null) ]] + then + modprobe -r ${module/.ko/} + fi + rm -f /lib/modules/${KERNEL_VERSION}/misc/${module} fi - rm -f /lib/modules/${KERNEL_VERSION}/misc/${VBOXMODULE} -fi +done + +for module in ${VBOXMODULE} ${VBOXNETMODULE} +do + # compile the module + cd ${INSTDIR}/src/${module/.ko/} -# compile the module -cd ${INSTDIR}/src -make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean modules || die "mod-compile" - -# install the module -install -d /lib/modules/${KERNEL_VERSION}/misc -install -m0644 ${VBOXMODULE} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install" + make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) clean || die "mod-compile ${module}" + + # need some symver from vboxmodule (must be run after clean!) + if [[ ${module} = ${VBOXNETMODULE} ]] && [[ -f ../${VBOXMODULE/.ko/}/Module.symvers ]] + then + cp ../${VBOXMODULE/.ko/}/Module.symvers . + fi + + make -C ${KERNEL_SOURCES} SUBDIRS=$(pwd) SRCROOT=$(pwd) modules || die "mod-compile ${module}" + + # install the modules + install -d /lib/modules/${KERNEL_VERSION}/misc + install -m0644 ${module} /lib/modules/${KERNEL_VERSION}/misc || die "mod-install ${module}" +done # calc module dependencies mecho "Calculating module dependencies ..." depmod -ae ${KERNEL_VERSION} # re-read udev rules to grant the right permissions -if [[ -x $(which udevcontrol) ]] +if [[ -x $(which udevadm) ]] then mecho "Reloading udev configuration ..." - $(which udevcontrol) reload_rules + $(which udevadm) control --reload-rules fi # load the module if [[ x$(uname -r) = x${KERNEL_VERSION} ]] then - mecho "Loading kernel-module ${VBOXMODULE} ..." - modprobe $(basename ${VBOXMODULE} .ko) + for module in ${VBOXMODULE} ${VBOXNETMODULE} + do + mecho "Loading kernel-module ${module} ..." + modprobe $(basename ${module} .ko) + done 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 "You must boot into your target kernel and load the modules manually," echo "before you can use virtual box." echo -en ${COLDEFAULT} fi