postinstall.sh revision 8202bdd25b23974320eeb797d774a86cc905d561
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#!/bin/sh
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# VirtualBox postinstall script for Solaris.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Copyright (C) 2008-2010 Oracle Corporation
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# available from http://www.virtualbox.org. This file is free software;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# General Public License (GPL) as published by the Free Software
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# The contents of this file may alternatively be used under the terms
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# of the Common Development and Distribution License Version 1.0
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# VirtualBox OSE distribution, in which case the provisions of the
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# CDDL are applicable instead of those of the GPL.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# You may elect to license modified versions of this file under the
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# terms and conditions of either the GPL or the CDDL or both.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync#
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# LC_ALL should take precedence over LC_* and LANG but whatever...
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncLC_ALL=C
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncexport LC_ALL
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncLANG=C
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncexport LANG
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# uncompress(directory, file)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Updates package metadata and uncompresses the file.
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncuncompress_file()
a82212bd36e1074408974b466798b9966bbaf49bvboxsync{
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -z "$1" || test -z "$2"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "missing argument to uncompress_file()"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync return 1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Remove compressed path from the pkg
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST "$1/$2.Z" 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Add uncompressed path to the pkg
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "$1/$2" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Uncompress the file (removes compressed file when done)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress -f "$1/$2.Z" > /dev/null 2>&1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync}
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncuncompress_files()
a82212bd36e1074408974b466798b9966bbaf49bvboxsync{
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # VBox guest files
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "VBoxClient"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "VBoxService"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "VBoxControl"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # VBox Xorg Video drivers
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_13.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_14.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_15.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_16.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_17.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_18.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_19.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_110.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_111.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_112.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_70.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxvideo_drv_71.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # VBox Xorg Mouse drivers
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_13.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_14.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_15.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_16.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_17.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_18.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_19.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_110.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_111.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_112.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_70.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_file "$1" "vboxmouse_drv_71.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync}
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncsolaris64dir="amd64"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncsolaris32dir="i386"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxadditions_path="$BASEDIR/opt/VirtualBoxAdditions"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxadditions32_path=$vboxadditions_path/$solaris32dir
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxadditions64_path=$vboxadditions_path/$solaris64dir
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# get the current zone
a82212bd36e1074408974b466798b9966bbaf49bvboxsynccurrentzone=`zonename`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# get what ISA the guest is running
a82212bd36e1074408974b466798b9966bbaf49bvboxsynccputype=`isainfo -k`
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test "$cputype" = "amd64"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync isadir=$solaris64dir
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncelse
a82212bd36e1074408974b466798b9966bbaf49bvboxsync isadir=""
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxadditionsisa_path=$vboxadditions_path/$isadir
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# uncompress if necessary
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test -f "$vboxadditions32_path/VBoxClient.Z" || test -f "$vboxadditions64_path/VBoxClient.Z"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Uncompressing files..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "$vboxadditions32_path/VBoxClient.Z"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_files "$vboxadditions32_path"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "$vboxadditions64_path/VBoxClient.Z"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync uncompress_files "$vboxadditions64_path"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test "$currentzone" = "global"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # vboxguest.sh would've been installed, we just need to call it.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Configuring VirtualBox guest kernel module..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # stop all previous moduels (vboxguest, vboxfs) and start only starts vboxguest
a82212bd36e1074408974b466798b9966bbaf49bvboxsync $vboxadditions_path/vboxguest.sh stopall silentunload
a82212bd36e1074408974b466798b9966bbaf49bvboxsync $vboxadditions_path/vboxguest.sh start
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync sed -e '/name=vboxguest/d' /etc/devlink.tab > /etc/devlink.vbox
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "type=ddi_pseudo;name=vboxguest \D" >> /etc/devlink.vbox
a82212bd36e1074408974b466798b9966bbaf49bvboxsync mv -f /etc/devlink.vbox /etc/devlink.tab
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # create the device link
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/devfsadm -i vboxguest
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# check if X.Org exists (snv_130 and higher have /usr/X11/* as /usr/*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test -f "/usr/bin/Xorg"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgbin="/usr/bin/Xorg"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncelif test -f "/usr/X11/bin/Xorg"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgbin="/usr/X11/bin/Xorg"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncelse
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgbin=""
a82212bd36e1074408974b466798b9966bbaf49bvboxsync retval=0
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# create links
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncecho "Creating links..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test "$currentzone" = "global"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST /dev/vboxguest=../devices/pci@0,0/pci80ee,cafe@4:vboxguest s
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Install Xorg components to the required places
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test ! -z "$xorgbin"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgversion_long=`$xorgbin -version 2>&1 | grep "X Window System Version"`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgversion=`/usr/bin/expr "${xorgversion_long}" : 'X Window System Version \([^ ]*\)'`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -z "$xorgversion_long"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgversion_long=`$xorgbin -version 2>&1 | grep "X.Org X Server"`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgversion=`/usr/bin/expr "${xorgversion_long}" : 'X.Org X Server \([^ ]*\)'`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src=""
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src=""
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync case "$xorgversion" in
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.3.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_13.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_13.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.4.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_14.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_14.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.5.99 | 1.6.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_16.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_16.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.5.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_15.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_15.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.7.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_17.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_17.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.8.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_18.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_18.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.9.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_19.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_19.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.10.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_110.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_110.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.11.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_111.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_111.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 1.12.*)
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_112.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_112.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 7.1.* | *7.2.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_71.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_71.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 6.9.* | 7.0.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_src="vboxmouse_drv_70.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_src="vboxvideo_drv_70.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync esac
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync retval=0
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -z "$vboxmouse_src"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "*** Unknown version of the X Window System installed."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "*** Failed to install the VirtualBox X Window System drivers."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Exit as partially failed installation
a82212bd36e1074408974b466798b9966bbaf49bvboxsync retval=2
a82212bd36e1074408974b466798b9966bbaf49bvboxsync else
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Installing mouse and video drivers for X.Org $xorgversion..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Determine destination paths (snv_130 and above use "/usr/lib/xorg", older use "/usr/X11/lib"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse32_dest_base="/usr/lib/xorg/modules/input"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test ! -d $vboxmouse32_dest_base; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse32_dest_base="/usr/X11/lib/modules/input"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo32_dest_base="/usr/lib/xorg/modules/drivers"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test ! -d $vboxvideo32_dest_base; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo32_dest_base="/usr/X11/lib/modules/drivers"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse64_dest_base=$vboxmouse32_dest_base/$solaris64dir
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo64_dest_base=$vboxvideo32_dest_base/$solaris64dir
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # snv_163 drops 32-bit support completely, and uses 32-bit locations for the 64-bit stuff. Ugly.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # We try to detect this by looking at bitness of "mouse_drv.so", and adjust our destination paths accordingly.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # We do not rely on using Xorg -version's ABI output because some builds (snv_162 iirc) have 64-bit ABI with
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # 32-bit file locations.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "$vboxmouse32_dest_base/mouse_drv.so"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync bitsize=`file "$vboxmouse32_dest_base/mouse_drv.so" | grep -i "32-bit"`
a82212bd36e1074408974b466798b9966bbaf49bvboxsync skip32="no"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync else
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "* Warning mouse_drv.so missing. Assuming Xorg ABI is 64-bit..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -z "$bitsize"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync skip32="yes"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse64_dest_base=$vboxmouse32_dest_base
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo64_dest_base=$vboxvideo32_dest_base
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Make sure destination path exists
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test ! -d $vboxmouse32_dest_base || test ! -d $vboxvideo32_dest_base || test ! -d $vboxmouse64_dest_base || test ! -d $vboxvideo64_dest_base; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "*** Missing destination paths for mouse or video modules. Aborting."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "*** Failed to install the VirtualBox X Window System drivers."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Exit as partially failed installation
a82212bd36e1074408974b466798b9966bbaf49bvboxsync retval=2
a82212bd36e1074408974b466798b9966bbaf49bvboxsync else
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # 32-bit x11 drivers
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test "$skip32" = "no" && test -f "$vboxadditions32_path/$vboxmouse_src"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_dest="$vboxmouse32_dest_base/vboxmouse_drv.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_dest="$vboxvideo32_dest_base/vboxvideo_drv.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp "$vboxadditions32_path/$vboxmouse_src" "$vboxmouse_dest"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp "$vboxadditions32_path/$vboxvideo_src" "$vboxvideo_dest"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Removing redundant names from pkg and files from disk
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions32_path/vboxmouse_drv_* 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions32_path/vboxvideo_drv_* 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions32_path/vboxmouse_drv_*
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions32_path/vboxvideo_drv_*
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # 64-bit x11 drivers
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "$vboxadditions64_path/$vboxmouse_src"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxmouse_dest="$vboxmouse64_dest_base/vboxmouse_drv.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxvideo_dest="$vboxvideo64_dest_base/vboxvideo_drv.so"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp "$vboxadditions64_path/$vboxmouse_src" "$vboxmouse_dest"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp "$vboxadditions64_path/$vboxvideo_src" "$vboxvideo_dest"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Removing redundant names from pkg and files from disk
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxmouse_drv_* 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxvideo_drv_* 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions64_path/vboxmouse_drv_*
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions64_path/vboxvideo_drv_*
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Some distros like Indiana have no xorg.conf, deal with this
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test ! -f '/etc/X11/xorg.conf' && test ! -f '/etc/X11/.xorg.conf'; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Xorg 1.3.x+ should use the modeline less Xorg confs while older should
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # use ones with all the video modelines in place. Argh.
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgconf_file="solaris_xorg_modeless.conf"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgconf_unfit="solaris_xorg.conf"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync case "$xorgversion" in
a82212bd36e1074408974b466798b9966bbaf49bvboxsync 7.1.* | 7.2.* | 6.9.* | 7.0.* )
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgconf_file="solaris_xorg.conf"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync xorgconf_unfit="solaris_xorg_modeless.conf"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ;;
a82212bd36e1074408974b466798b9966bbaf49bvboxsync esac
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_file 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync mv -f $vboxadditions_path/$xorgconf_file /etc/X11/.xorg.conf
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_unfit 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions_path/$xorgconf_unfit
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Adjust xorg.conf with mouse and video driver sections
a82212bd36e1074408974b466798b9966bbaf49bvboxsync $vboxadditions_path/x11config15sol.pl
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Setup our VBoxClient
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Configuring client..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxclient_src=$vboxadditions_path
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxclient_dest="/usr/share/gnome/autostart"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync clientinstalled=0
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -d "$vboxclient_dest"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST $vboxclient_dest/vboxclient.desktop=$vboxadditions_path/vboxclient.desktop s
a82212bd36e1074408974b466798b9966bbaf49bvboxsync clientinstalled=1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxclient_dest="/usr/dt/config/Xsession.d"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -d "$vboxclient_dest"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST $vboxclient_dest/1099.vboxclient=$vboxadditions_path/1099.vboxclient s
a82212bd36e1074408974b466798b9966bbaf49bvboxsync clientinstalled=1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Try other autostart locations if none of the above ones work
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test $clientinstalled -eq 0; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxclient_dest="/etc/xdg/autostart"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -d "$vboxclient_dest"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST $vboxclient_dest/1099.vboxclient=$vboxadditions_path/1099.vboxclient s
a82212bd36e1074408974b466798b9966bbaf49bvboxsync clientinstalled=1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync else
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "*** Failed to configure client, couldn't find any autostart directory!"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Exit as partially failed installation
a82212bd36e1074408974b466798b9966bbaf49bvboxsync retval=2
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncelse
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "(*) X.Org not found, skipped configuring X.Org guest additions."
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Shared Folder kernel module (different for S10 & Nevada)
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncosverstr=`uname -r`
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxfsmod="vboxfs"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncvboxfsunused="vboxfs_s10"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test "$osverstr" = "5.10"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxfsmod="vboxfs_s10"
a82212bd36e1074408974b466798b9966bbaf49bvboxsync vboxfsunused="vboxfs"
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Move the appropriate module to kernel/fs & remove the unused module name from pkg and file from disk
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# 64-bit shared folder module
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test -f "$vboxadditions64_path/$vboxfsmod"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Installing 64-bit shared folders module..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "/usr/kernel/fs/$solaris64dir/vboxfs" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync mv -f $vboxadditions64_path/$vboxfsmod /usr/kernel/fs/$solaris64dir/vboxfs
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions64_path/$vboxfsmod 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions64_path/$vboxfsunused 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions64_path/$vboxfsunused
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# 32-bit shared folder module
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test -f "$vboxadditions32_path/$vboxfsmod"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Installing 32-bit shared folders module..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/installf -c none $PKGINST "/usr/kernel/fs/vboxfs" f
a82212bd36e1074408974b466798b9966bbaf49bvboxsync mv -f $vboxadditions32_path/$vboxfsmod /usr/kernel/fs/vboxfs
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions32_path/$vboxfsmod 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/removef $PKGINST $vboxadditions32_path/$vboxfsunused 1>/dev/null
a82212bd36e1074408974b466798b9966bbaf49bvboxsync rm -f $vboxadditions32_path/$vboxfsunused
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Add a group "vboxsf" for Shared Folders access
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# All users which want to access the auto-mounted Shared Folders have to
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# be added to this group.
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncgroupadd vboxsf >/dev/null 2>&1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# install openGL extensions for X.Org
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test ! -z "$xorgbin"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # 32-bit crogl opengl library replacement
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "/usr/lib/VBoxOGL.so"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp -f /usr/X11/lib/mesa/libGL.so.1 /usr/X11/lib/mesa/libGL_original_.so.1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ln -sf /usr/lib/VBoxOGL.so /usr/X11/lib/mesa/libGL.so.1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # 64-bit crogl opengl library replacement
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -f "/usr/lib/amd64/VBoxOGL.so"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync cp -f /usr/X11/lib/mesa/amd64/libGL.so.1 /usr/X11/lib/mesa/amd64/libGL_original_.so.1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync ln -sf /usr/lib/amd64/VBoxOGL.so /usr/X11/lib/mesa/amd64/libGL.so.1
a82212bd36e1074408974b466798b9966bbaf49bvboxsync fi
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncfi
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync# Finalize
a82212bd36e1074408974b466798b9966bbaf49bvboxsync/usr/sbin/removef -f $PKGINST
a82212bd36e1074408974b466798b9966bbaf49bvboxsync/usr/sbin/installf -f $PKGINST
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsyncif test "$currentzone" = "global"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/devfsadm -i vboxguest
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Setup our VBoxService SMF service
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Configuring service..."
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/svcadm restart svc:/system/manifest-import:default
a82212bd36e1074408974b466798b9966bbaf49bvboxsync /usr/sbin/svcadm enable -s virtualbox/vboxservice
a82212bd36e1074408974b466798b9966bbaf49bvboxsync
a82212bd36e1074408974b466798b9966bbaf49bvboxsync # Update boot archive
a82212bd36e1074408974b466798b9966bbaf49bvboxsync BOOTADMBIN=/sbin/bootadm
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -x "$BOOTADMBIN"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync if test -h "/dev/vboxguest"; then
a82212bd36e1074408974b466798b9966bbaf49bvboxsync echo "Updating boot archive..."
$BOOTADMBIN update-archive > /dev/null
else
echo "## Guest kernel module doesn't seem to be up. Skipped explicit boot-archive update."
fi
else
echo "## $BOOTADMBIN not found/executable. Skipped explicit boot-archive update."
fi
fi
echo "Done."
if test $retval -eq 0; then
if test ! -z "$xorgbin"; then
echo "Please re-login to activate the X11 guest additions."
fi
echo "If you have just un-installed the previous guest additions a REBOOT is required."
fi
exit $retval