install.sh revision 09ed5ee011f3a6cd9d4742216ad3bb7dbf855641
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#!/bin/sh
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Oracle VM VirtualBox
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# VirtualBox linux installation script
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Copyright (C) 2007-2011 Oracle Corporation
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# available from http://www.virtualbox.org. This file is free software;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# you can redistribute it and/or modify it under the terms of the GNU
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# General Public License (GPL) as published by the Free Software
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync#
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncPATH=$PATH:/bin:/sbin:/usr/sbin
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Include routines and utilities needed by the installer
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync. ./routines.sh
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync#include installer-utils.sh
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncLOG="/var/log/vbox-install.log"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncVERSION="_VERSION_"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncSVNREV="_SVNREV_"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncBUILD="_BUILD_"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncARCH="_ARCH_"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncHARDENED="_HARDENED_"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncCONFIG_DIR="/etc/vbox"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncCONFIG="vbox.cfg"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncCONFIG_FILES="filelist"
e761514762c8705557b347266d54ade68888537cvboxsyncDEFAULT_FILES=`pwd`/deffiles
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncGROUPNAME="vboxusers"
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncINSTALLATION_DIR="/opt/VirtualBox"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncLICENSE_ACCEPTED=""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncPREV_INSTALLATION=""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncPYTHON="_PYTHON_"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncACTION=""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncSELF=$1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDKMS=`which dkms 2> /dev/null`
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncRC_SCRIPT=0
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncif [ -n "$HARDENED" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync VBOXDRV_MODE=0600
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync VBOXDRV_GRP="root"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncelse
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync VBOXDRV_MODE=0660
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync VBOXDRV_GRP=$GROUPNAME
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncfi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncVBOXUSB_MODE=0664
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncVBOXUSB_GRP=$GROUPNAME
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync##############################################################################
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Helper routines #
af8d59d05d72f134aeea62712f1286b369807d52vboxsync##############################################################################
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncusage() {
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info ""
e761514762c8705557b347266d54ade68888537cvboxsync info "Usage: install | uninstall"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info ""
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "Example:"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "$SELF install"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync exit 1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync}
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncmodule_loaded() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync lsmod | grep -q "vboxdrv[^_-]"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# This routine makes sure that there is no previous installation of
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# VirtualBox other than one installed using this install script or a
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# compatible method. We do this by checking for any of the VirtualBox
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# applications in /usr/bin. If these exist and are not symlinks into
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# the installation directory, then we assume that they are from an
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# incompatible previous installation.
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## Helper routine: test for a particular VirtualBox binary and see if it
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## is a link into a previous installation directory
af8d59d05d72f134aeea62712f1286b369807d52vboxsync##
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## Arguments: 1) the binary to search for and
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## 2) the installation directory (if any)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync## Returns: false if an incompatible version was detected, true otherwise
e761514762c8705557b347266d54ade68888537cvboxsynccheck_binary() {
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync binary=$1
af8d59d05d72f134aeea62712f1286b369807d52vboxsync install_dir=$2
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test ! -e $binary 2>&1 > /dev/null ||
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ( test -n "$install_dir" &&
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync readlink $binary 2>/dev/null | grep "$install_dir" > /dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync## Main routine
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync##
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## Argument: the directory where the previous installation should be
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## located. If this is empty, then we will assume that any
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## installation of VirtualBox found is incompatible with this one.
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync## Returns: false if an incompatible installation was found, true otherwise
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsynccheck_previous() {
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync install_dir=$1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # These should all be symlinks into the installation folder
af8d59d05d72f134aeea62712f1286b369807d52vboxsync check_binary "/usr/bin/VirtualBox" "$install_dir" &&
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync check_binary "/usr/bin/VBoxManage" "$install_dir" &&
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync check_binary "/usr/bin/VBoxSDL" "$install_dir" &&
af8d59d05d72f134aeea62712f1286b369807d52vboxsync check_binary "/usr/bin/VBoxVRDP" "$install_dir" &&
e761514762c8705557b347266d54ade68888537cvboxsync check_binary "/usr/bin/VBoxHeadless" "$install_dir" &&
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync check_binary "/usr/bin/VBoxBalloonCtrl" "$install_dir" &&
af8d59d05d72f134aeea62712f1286b369807d52vboxsync check_binary "/usr/bin/vboxwebsrv" "$install_dir"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync}
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync##############################################################################
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Main script #
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync##############################################################################
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncinfo "VirtualBox Version $VERSION r$SVNREV ($BUILD) installer"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Make sure that we were invoked as root...
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynccheck_root
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Set up logging before anything else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynccreate_log $LOG
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Now stop the ballon control service otherwise it will keep VBoxSVC running
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstop_init_script vboxballoonctrl-service
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Now stop the web service otherwise it will keep VBoxSVC running
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncstop_init_script vboxweb-service
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Now check if no VBoxSVC daemon is running
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynccheck_running
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsynclog "VirtualBox $VERSION r$SVNREV installer, built $BUILD."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynclog ""
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynclog "Testing system setup..."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Sanity check: figure out whether build arch matches uname arch
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsynccpu=`uname -m`;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsynccase "$cpu" in
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync i[3456789]86|x86)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync cpu="x86"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ;;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync x86_64)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync cpu="amd64"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ;;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncesac
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncif [ "$cpu" != "$ARCH" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Detected unsupported $cpu environment."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "Detected unsupported $cpu environment."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync exit 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncfi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Check that the system is setup correctly for the installation
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynchave_bzip2="`check_bzip2; echo $?`" # Do we have bzip2?
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynchave_gmake="`check_gmake; echo $?`" # Do we have GNU make?
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynchave_ksource="`check_ksource; echo $?`" # Can we find the kernel source?
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynchave_gcc="`check_gcc; echo $?`" # Is GCC installed?
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncif [ $have_bzip2 -eq 1 -o $have_gmake -eq 1 -o $have_ksource -eq 1 \
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync -o $have_gcc -eq 1 ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync info "Problems were found which would prevent VirtualBox from installing."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Please correct these problems and try again."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "Giving up due to the problems mentioned above."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync exit 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncelse
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log "System setup appears correct."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log ""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncfi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync# Sensible default actions
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncACTION="install"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncBUILD_MODULE="true"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsyncwhile true
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncdo
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ "$2" = "" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync break
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync shift
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync case "$1" in
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync install)
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ACTION="install"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ;;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync uninstall)
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ACTION="uninstall"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ;;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync force)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync FORCE_UPGRADE=1
af8d59d05d72f134aeea62712f1286b369807d52vboxsync ;;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync license_accepted_unconditionally)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Legacy option
e761514762c8705557b347266d54ade68888537cvboxsync ;;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync no_module)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync BUILD_MODULE=""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ;;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync *)
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ "$ACTION" = "" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Unknown command '$1'."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync usage
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Specifying an installation path is not allowed -- using /opt/VirtualBox!"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ;;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync esac
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncdone
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncif [ "$ACTION" = "install" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Find previous installation
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ ! -r $CONFIG_DIR/$CONFIG ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync mkdir -p -m 755 $CONFIG_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync touch $CONFIG_DIR/$CONFIG
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync . $CONFIG_DIR/$CONFIG
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync PREV_INSTALLATION=$INSTALL_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if ! check_previous $INSTALL_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "You appear to have a version of VirtualBox on your system which was installed"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "from a different source or using a different type of installer (or a damaged"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "installation of VirtualBox). We strongly recommend that you remove it before"
e761514762c8705557b347266d54ade68888537cvboxsync info "installing this version of VirtualBox."
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "Do you wish to continue anyway? [yes or no]"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync read reply dummy
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if ! expr "$reply" : [yY] && ! expr "$reply" : [yY][eE][sS]
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Cancelling installation."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "User requested cancellation of the installation"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync exit 1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Terminate Server and VBoxNetDHCP if running
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync terminate_proc VBoxSVC
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync terminate_proc VBoxNetDHCP
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Remove previous installation
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -n "$PREV_INSTALLATION" -a -z "$FORCE_UPGRADE" -a ! "$VERSION" = "$INSTALL_VER" ] &&
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync expr "$INSTALL_VER" "<" "1.6.0" > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "If you are upgrading from VirtualBox 1.5 or older and if some of your virtual"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "machines have saved states, then the saved state information will be lost"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "after the upgrade and will have to be discarded. If you do not want this then"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "you can cancel the upgrade now."
e761514762c8705557b347266d54ade68888537cvboxsync info
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "Do you wish to continue? [yes or no]"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync read reply dummy
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if ! expr "$reply" : [yY] && ! expr "$reply" : [yY][eE][sS]
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Cancelling upgrade."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "User requested cancellation of the installation"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync exit 1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ ! "$VERSION" = "$INSTALL_VER" -a ! "$BUILD_MODULE" = "true" -a -n "$DKMS" ]
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Not doing this can confuse dkms
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync info "Rebuilding the kernel module after version change"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync BUILD_MODULE=true
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -n "$PREV_INSTALLATION" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync [ -n "$INSTALL_REV" ] && INSTALL_REV=" r$INSTALL_REV"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Removing previous installation of VirtualBox $INSTALL_VER$INSTALL_REV from $PREV_INSTALLATION"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "Removing previous installation of VirtualBox $INSTALL_VER$INSTALL_REV from $PREV_INSTALLATION"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log ""
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync stop_init_script vboxnet
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync delrunlevel vboxnet > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ "$BUILD_MODULE" = "true" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync stop_init_script vboxdrv
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -n "$DKMS" ]
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync $DKMS remove -m vboxhost -v $INSTALL_VER --all > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync $DKMS remove -m vboxdrv -v $INSTALL_VER --all > /dev/null 2>&1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync $DKMS remove -m vboxnetflt -v $INSTALL_VER --all > /dev/null 2>&1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync $DKMS remove -m vboxnetadp -v $INSTALL_VER --all > /dev/null 2>&1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # OSE doesn't always have the initscript
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rmmod vboxpci > /dev/null 2>&1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rmmod vboxnetadp > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync rmmod vboxnetflt > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync rmmod vboxdrv > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync module_loaded && {
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Warning: could not stop VirtualBox kernel module."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Please restart your system to apply changes."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log "Unable to remove the old VirtualBox kernel module."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log " An old version of VirtualBox may be running."
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync }
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync VBOX_DONT_REMOVE_OLD_MODULES=1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync VBOX_NO_UNINSTALL_MESSAGE=1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync . ./uninstall.sh
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync info "Installing VirtualBox to $INSTALLATION_DIR"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log "Installing VirtualBox to $INSTALLATION_DIR"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log ""
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Verify the archive
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync mkdir -p -m 755 $INSTALLATION_DIR
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bzip2 -d -c VirtualBox.tar.bz2 | tar -tf - > $CONFIG_DIR/$CONFIG_FILES
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync RETVAL=$?
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ $RETVAL != 0 ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync rmdir $INSTALLATION_DIR 2> /dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync rm -f $CONFIG_DIR/$CONFIG 2> /dev/null
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rm -f $CONFIG_DIR/$CONFIG_FILES 2> /dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync log 'Error running "bzip2 -d -c VirtualBox.tar.bz2 | tar -tf - > '"$CONFIG_DIR/$CONFIG_FILES"'".'
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync abort "Error installing VirtualBox. Installation aborted"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Create installation directory and install
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bzip2 -d -c VirtualBox.tar.bz2 | tar -xf - -C $INSTALLATION_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync RETVAL=$?
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ $RETVAL != 0 ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cwd=`pwd`
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cd $INSTALLATION_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync rm -f `cat $CONFIG_DIR/$CONFIG_FILES` 2> /dev/null
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync cd $pwd
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rmdir $INSTALLATION_DIR 2> /dev/null
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rm -f $CONFIG_DIR/$CONFIG 2> /dev/null
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log 'Error running "bzip2 -d -c VirtualBox.tar.bz2 | tar -xf - -C '"$INSTALLATION_DIR"'".'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync abort "Error installing VirtualBox. Installation aborted"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cp uninstall.sh routines.sh $INSTALLATION_DIR
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync echo "routines.sh" >> $CONFIG_DIR/$CONFIG_FILES
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync echo "uninstall.sh" >> $CONFIG_DIR/$CONFIG_FILES
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # XXX SELinux: allow text relocation entries
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -x /usr/bin/chcon ]; then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync chcon -t texrel_shlib_t $INSTALLATION_DIR/VBox* > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t texrel_shlib_t $INSTALLATION_DIR/VBoxAuth.so > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t texrel_shlib_t $INSTALLATION_DIR/VirtualBox.so > /dev/null 2>&1
af8d59d05d72f134aeea62712f1286b369807d52vboxsync chcon -t texrel_shlib_t $INSTALLATION_DIR/components/VBox*.so > /dev/null 2>&1
e761514762c8705557b347266d54ade68888537cvboxsync chcon -t java_exec_t $INSTALLATION_DIR/VirtualBox > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t java_exec_t $INSTALLATION_DIR/VBoxSDL > /dev/null 2>&1
af8d59d05d72f134aeea62712f1286b369807d52vboxsync chcon -t java_exec_t $INSTALLATION_DIR/VBoxHeadless > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t java_exec_t $INSTALLATION_DIR/VBoxNetDHCP > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t java_exec_t $INSTALLATION_DIR/VBoxExtPackHelperApp > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t java_exec_t $INSTALLATION_DIR/vboxwebsrv > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chcon -t java_exec_t $INSTALLATION_DIR/webtest > /dev/null 2>&1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Hardened build: Mark selected binaries set-user-ID-on-execution,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # create symlinks for working around unsupported $ORIGIN/.. in VBoxC.so (setuid),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # and finally make sure the directory is only writable by the user (paranoid).
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -n "$HARDENED" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test -e $INSTALLATION_DIR/VirtualBox && chmod 4511 $INSTALLATION_DIR/VirtualBox
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test -e $INSTALLATION_DIR/VBoxSDL && chmod 4511 $INSTALLATION_DIR/VBoxSDL
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test -e $INSTALLATION_DIR/VBoxHeadless && chmod 4511 $INSTALLATION_DIR/VBoxHeadless
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test -e $INSTALLATION_DIR/VBoxNetDHCP && chmod 4511 $INSTALLATION_DIR/VBoxNetDHCP
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBoxVMM.so $INSTALLATION_DIR/components/VBoxVMM.so
af8d59d05d72f134aeea62712f1286b369807d52vboxsync ln -sf $INSTALLATION_DIR/VBoxREM.so $INSTALLATION_DIR/components/VBoxREM.so
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBoxRT.so $INSTALLATION_DIR/components/VBoxRT.so
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBoxDDU.so $INSTALLATION_DIR/components/VBoxDDU.so
af8d59d05d72f134aeea62712f1286b369807d52vboxsync ln -sf $INSTALLATION_DIR/VBoxXPCOM.so $INSTALLATION_DIR/components/VBoxXPCOM.so
e761514762c8705557b347266d54ade68888537cvboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync chmod go-w $INSTALLATION_DIR
af8d59d05d72f134aeea62712f1286b369807d52vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # This binary needs to be suid root in any case, even if not hardened
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync test -e $INSTALLATION_DIR/VBoxNetAdpCtl && chmod 4511 $INSTALLATION_DIR/VBoxNetAdpCtl
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Install runlevel scripts
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync install_init_script vboxdrv.sh vboxdrv
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync install_init_script vboxballoonctrl-service.sh vboxballoonctrl-service
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync install_init_script vboxweb-service.sh vboxweb-service
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync delrunlevel vboxdrv > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync addrunlevel vboxdrv 20 80 # This may produce useful output
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync delrunlevel vboxballoonctrl-service > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync addrunlevel vboxballoonctrl-service 25 75 # This may produce useful output
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync delrunlevel vboxweb-service > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync addrunlevel vboxweb-service 25 75 # This may produce useful output
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Create users group
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync groupadd $GROUPNAME 2> /dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Create symlinks to start binaries
e761514762c8705557b347266d54ade68888537cvboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VirtualBox
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VBoxManage
af8d59d05d72f134aeea62712f1286b369807d52vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VBoxSDL
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VBoxVRDP
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VBoxHeadless
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/VBoxBalloonCtrl
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ln -sf $INSTALLATION_DIR/VBox.sh /usr/bin/vboxwebsrv
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ln -sf $INSTALLATION_DIR/VBox.png /usr/share/pixmaps/VBox.png
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Unity and Nautilus seem to look here for their icons
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ln -sf $INSTALLATION_DIR/icons/128x128/virtualbox.png /usr/share/pixmaps/virtualbox.png
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ln -sf $INSTALLATION_DIR/virtualbox.desktop /usr/share/applications/virtualbox.desktop
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/virtualbox.xml /usr/share/mime/packages/virtualbox.xml
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/rdesktop-vrdp /usr/bin/rdesktop-vrdp
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf $INSTALLATION_DIR/src/vboxhost /usr/src/vboxhost-_VERSION_
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Convenience symlinks. The creation fails if the FS is not case sensitive
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf VirtualBox /usr/bin/virtualbox > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf VBoxManage /usr/bin/vboxmanage > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf VBoxSDL /usr/bin/vboxsdl > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync ln -sf VBoxHeadless /usr/bin/vboxheadless > /dev/null 2>&1
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Icons
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cur=`pwd`
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cd $INSTALLATION_DIR/icons
af8d59d05d72f134aeea62712f1286b369807d52vboxsync for i in *; do
e761514762c8705557b347266d54ade68888537cvboxsync cd $i
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ -d /usr/share/icons/hicolor/$i ]; then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync for j in *; do
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if [ "$j" = "virtualbox.png" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync dst=apps
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync dst=mimetypes
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ -d /usr/share/icons/hicolor/$i/$dst ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ln -s $INSTALLATION_DIR/icons/$i/$j /usr/share/icons/hicolor/$i/$dst/$j
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo /usr/share/icons/hicolor/$i/$dst/$j >> $CONFIG_DIR/$CONFIG_FILES
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync done
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cd -
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync done
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cd $cur
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Update the MIME database
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync update-mime-database /usr/share/mime 2>/dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Update the desktop database
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync update-desktop-database -q 2>/dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # If Python is available, install Python bindings
e761514762c8705557b347266d54ade68888537cvboxsync if [ -n "$PYTHON" ]; then
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync maybe_run_python_bindings_installer $INSTALLATION_DIR
af8d59d05d72f134aeea62712f1286b369807d52vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Create udev description file
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync install_udev_run "$VBOXDRV_GRP" "$VBOXDRV_MODE" "$INSTALLATION_DIR" \
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync > /etc/udev/rules.d/10-vboxdrv.rules
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Build our device tree
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync for i in /sys/bus/usb/devices/*; do
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if test -r "$i/dev"; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync dev="`cat "$i/dev" 2> /dev/null`"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync class="`cat $i/bDeviceClass 2> /dev/null`"
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync sh "$INSTALLATION_DIR/VBoxCreateUSBNode.sh" "$major" "$minor" "$class" 2>/dev/null
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync fi
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync done
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Write the configuration. Do this before we call /etc/init.d/vboxdrv setup!
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync echo "# VirtualBox installation directory" > $CONFIG_DIR/$CONFIG
af8d59d05d72f134aeea62712f1286b369807d52vboxsync echo "INSTALL_DIR='$INSTALLATION_DIR'" >> $CONFIG_DIR/$CONFIG
e761514762c8705557b347266d54ade68888537cvboxsync echo "# VirtualBox version" >> $CONFIG_DIR/$CONFIG
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync echo "INSTALL_VER='$VERSION'" >> $CONFIG_DIR/$CONFIG
af8d59d05d72f134aeea62712f1286b369807d52vboxsync echo "INSTALL_REV='$SVNREV'" >> $CONFIG_DIR/$CONFIG
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync # Make kernel module
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync MODULE_FAILED="false"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ "$BUILD_MODULE" = "true" ]
af8d59d05d72f134aeea62712f1286b369807d52vboxsync then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "Building the VirtualBox kernel modules"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync log "Output from the module build process (the Linux kernel build system) follows:"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync cur=`pwd`
af8d59d05d72f134aeea62712f1286b369807d52vboxsync log ""
af8d59d05d72f134aeea62712f1286b369807d52vboxsync setup_init_script vboxdrv
af8d59d05d72f134aeea62712f1286b369807d52vboxsync # Start VirtualBox kernel module
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if [ $RETVAL -eq 0 ] && ! start_init_script vboxdrv; then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "Failed to load the kernel module."
af8d59d05d72f134aeea62712f1286b369807d52vboxsync MODULE_FAILED="true"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync RC_SCRIPT=1
af8d59d05d72f134aeea62712f1286b369807d52vboxsync fi
af8d59d05d72f134aeea62712f1286b369807d52vboxsync start_init_script vboxballoonctrl-service
af8d59d05d72f134aeea62712f1286b369807d52vboxsync start_init_script vboxweb-service
af8d59d05d72f134aeea62712f1286b369807d52vboxsync log ""
af8d59d05d72f134aeea62712f1286b369807d52vboxsync log "End of the output from the Linux kernel build system."
af8d59d05d72f134aeea62712f1286b369807d52vboxsync cd $cur
af8d59d05d72f134aeea62712f1286b369807d52vboxsync fi
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info ""
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if [ ! "$MODULE_FAILED" = "true" ]
af8d59d05d72f134aeea62712f1286b369807d52vboxsync then
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "VirtualBox has been installed successfully."
af8d59d05d72f134aeea62712f1286b369807d52vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "VirtualBox has been installed successfully, but the kernel module could not"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "be built. When you have fixed the problems preventing this, execute"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info " /etc/init.d/vboxdrv setup"
af8d59d05d72f134aeea62712f1286b369807d52vboxsync info "as administrator to build it."
fi
info ""
info "You will find useful information about using VirtualBox in the user manual"
info " $INSTALLATION_DIR/UserManual.pdf"
info "and in the user FAQ"
info " http://www.virtualbox.org/wiki/User_FAQ"
info ""
info "We hope that you enjoy using VirtualBox."
info ""
log "Installation successful"
elif [ "$ACTION" = "uninstall" ]; then
. ./uninstall.sh
fi
exit $RC_SCRIPT