cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync#!/bin/bash
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
c58f1213e628a545081c70e26c6b67a841cff880vboxsync# Copyright (C) 2006-2012 Oracle Corporation
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# available from http://www.virtualbox.org. This file is free software;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# General Public License (GPL) as published by the Free Software
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d63de4508a08b11f57c307a15eda3cd95485bf2cvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# we can be called with the following arguments (6.5 of Debian policy):
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# install: (our version): install our version
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# upgrade: (our version): upgrade to our version
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# abort-upgrade: (old version): upgrade to a new version failed
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# defaults
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncif [ "$1" = "install" -o "$1" = "upgrade" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync . /usr/share/debconf/confmodule
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_version 2.0
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_capb backup
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # check for active VMs
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync VBOXSVC_PID=`pidof VBoxSVC 2> /dev/null || true`
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync if [ -n "$VBOXSVC_PID" ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync if [ -f /etc/init.d/vboxballoonctrl-service ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync # try graceful termination; terminate the ballon control service first
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync invoke-rc.d vboxballoonctrl-service stop || true
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync else
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync /etc/init.d/vboxballoonctrl-service stop || true
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync fi
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync fi
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync if [ -f /etc/init.d/vboxweb-service ]; then
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync # try graceful termination; terminate the webservice first
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync invoke-rc.d vboxweb-service stop || true
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync else
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync /etc/init.d/vboxweb-service stop || true
6c9bd83255788d5e4a101dd05184a09175c0b52dvboxsync fi
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync fi
17d67aeb3722c094c6493a3e9a9d0cdfb9453ecdvboxsync kill -USR1 $VBOXSVC_PID
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync sleep 1
4ab3529cde8c5258f459eeb71a532d1ba522111avboxsync if pidof VBoxSVC > /dev/null 2>&1; then
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync db_fset virtualbox/old-running seen false || true
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync db_input critical virtualbox/old-running || true
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync db_go || true
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync exit 1
cf5af7fccfec4bef83f4ec21662d6a6e6cbe3835vboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # check for old installation
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ -r /etc/vbox/vbox.cfg ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync . /etc/vbox/vbox.cfg
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_fset virtualbox/old-installation-found seen false || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_input critical virtualbox/old-installation-found || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_go || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync exit 1
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # we will remove that file in postinst
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # check for old vboxdrv modules
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if find /lib/modules -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync # old modules found
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_get virtualbox/delete-old-modules || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "$RET" = "false" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync cat << EOF
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncOld vboxdrv kernel modules found in
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncEOF
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync find /lib/modules -name "vboxdrv\.*" 2>/dev/null|sed "s+\(.*\)+ \1+g"
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync cat << EOF
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncRemoving of these modules denied by debconf setting
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncEOF
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync else
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_input low virtualbox/delete-old-modules || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_go || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync db_get virtualbox/delete-old-modules || true
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync if [ "$RET" = "true" ]; then
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync find /lib/modules -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync find /lib/modules -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync find /lib/modules -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync fi
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncfi # "$1" = "install" -o "$1" = "upgrade"
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#DEBHELPER#
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync