VirtualBox

Changeset 22080 in vbox for trunk/src/VBox/Installer


Ignore:
Timestamp:
Aug 7, 2009 4:44:38 PM (15 years ago)
Author:
vboxsync
Message:

Solaris/Installer: vboxconfig.sh bits.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/solaris/vboxconfig.sh

    r22067 r22080  
    2121
    2222
     23# Never use exit 2 or exit 20 etc., the return codes are used in
     24# SRv4 postinstall procedures which carry special meaning. Just use exit 1 for failure.
     25set -x
     26
    2327HOST_OS_VERSION=`uname -r`
    2428
     
    4044# "vboxdrv" is also used in sed lines here (change those as well if it ever changes)
    4145MOD_VBOXDRV=vboxdrv
     46DESC_VBOXDRV="VirtualBox HostDriver"
     47
    4248MOD_VBOXNET=vboxnet
     49DESC_VBOXNET="VirtualBox NetAdapter"
     50
    4351MOD_VBOXFLT=vboxflt
     52DESC_VBOXFLT="VirtualBox NetFilter"
     53
    4454MOD_VBI=vbi
     55DESC_VBI="VirtualBox Kernel Interface"
     56
    4557MOD_VBOXUSBMON=vboxusbmon
     58DESC_VBOXUSBMON="VirtualBox USBMonitor"
     59
    4660FATALOP=fatal
    47 
     61SILENTOP=silent
     62ISSILENT=
    4863
    4964infoprint()
    5065{
    51     echo 1>&2 "$1"
     66    if test "$ISSILENT" != "$SILENTOP"; then
     67        echo 1>&2 "$1"
     68    fi
    5269}
    5370
    5471warnprint()
    5572{
    56     echo 1>&2 "* Warning!! $1"
     73    if test "$ISSILENT" != "$SILENTOP"; then
     74        echo 1>&2 "* Warning!! $1"
     75    fi
    5776}
    5877
    5978success()
    6079{
    61     echo 1>&2 "$1"
     80    if test "$ISSILENT" != "$SILENTOP"; then
     81        echo 1>&2 "$1"
     82    fi
    6283}
    6384
     
    7495    if test -z "$1"; then
    7596        errorprint "missing argument to check_bin_path()"
    76         exit 50
     97        exit 1
    7798    fi
    7899
    79100    if test !  -x "$1"; then
    80101        errorprint "$1 missing or is not an executable"
    81         exit 51
     102        exit 1
    82103    fi
    83104    return 0
     
    122143    if test `$idbin -u` -ne 0; then
    123144        errorprint "This script must be run with administrator privileges."
    124         exit 2
     145        exit 1
    125146    fi
    126147}
     
    133154    if test "$currentzone" != "global"; then
    134155        errorprint "This script must be run from the global zone."
    135         exit 3
     156        exit 1
    136157    fi
    137158}
     
    144165    if test "$currentisa" = "i86xpv"; then
    145166        errorprint "VirtualBox cannot run under xVM Dom0! Fatal Error, Aborting installation!"
    146         exit 4
     167        exit 1
    147168    fi
    148169}
     
    158179    elif test "$cputype" != "i386"; then
    159180        errorprint "VirtualBox works only on i386/amd64 architectures, not $cputype"
    160         exit 98
     181        exit 1
    161182    fi
    162183
     
    172193        if test -f "$modulepath"; then
    173194            errorprint "Found 32-bit module instead of 64-bit. Please install the amd64 package!"
    174             exit 97
     195            exit 1
    175196        fi
    176197    else
     
    179200        if test -f "$modulepath"; then
    180201            errorprint "Found 64-bit module instead of 32-bit. Please install the x86 package!"
    181             exit 96
     202            exit 1
    182203        fi
    183204    fi
     
    185206    # Shouldn't really happen...
    186207    errorprint "VirtualBox Host kernel module NOT installed."
    187     exit 99
     208    exit 1
    188209}
    189210
     
    194215    if test -z "$1"; then
    195216        errorprint "missing argument to module_added()"
    196         exit 5
     217        exit 1
    197218    fi
    198219
    199220    loadentry=`cat /etc/name_to_major | grep $1`
    200221    if test -z "$loadentry"; then
    201         return 0
    202     fi
    203     return 1
     222        return 1
     223    fi
     224    return 0
    204225}
    205226
     
    210231    if test -z "$1"; then
    211232        errorprint "missing argument to module_loaded()"
    212         exit 6
     233        exit 1
    213234    fi
    214235
     
    217238    loadentry=`$BIN_MODINFO | grep $modname`
    218239    if test -z "$loadentry"; then
    219         return 0
    220     fi
    221     return 1
    222 }
    223 
    224 # add_driver(modname, [driverperm], [fatal])
     240        return 1
     241    fi
     242    return 0
     243}
     244
     245# add_driver(modname, moddesc, [driverperm], [fatal])
    225246# failure: depends on [fatal]
    226247add_driver()
    227248{
    228     if test -z "$1"; then
     249    if test -z "$1" || test -z "$2"; then
    229250        errorprint "missing argument to add_driver()"
    230         exit 7
    231     fi
    232 
    233     modname=$1
    234     modperm=$2
    235     fatal=$3
     251        exit 1
     252    fi
     253
     254    modname="$1"
     255    moddesc="$2"
     256    modperm="$3"
     257    if test "$3" = "$FATALOP"; then
     258        fatal="$FATALOP"
     259        modperm=""
     260    fi
     261    if test "$4" = "$FATALOP"; then
     262        fatal="$FATALOP"
     263    fi
     264
    236265    if test -n "$modperm"; then
    237         $BIN_ADDDRV -m'$modperm' $modname
     266        $BIN_ADDDRV -m"$modperm" $modname
    238267    else
    239268        $BIN_ADDDRV $modname
     
    241270
    242271    if test $? -ne 0; then
    243         errorprint "Failed to load: $modname"
     272        errorprint "Adding:  $moddesc module ...FAILED!"
    244273        if test "$fatal" = "$FATALOP"; then
    245             exit 8
     274            exit 1
    246275        fi
    247276        return 1
     
    250279}
    251280
    252 # rem_driver(modname, [fatal])
     281# rem_driver(modname, moddesc, [fatal])
    253282# failure: depends on [fatal]
    254283rem_driver()
    255284{
    256     if test -z "$1"; then
     285    if test -z "$1" || test -z "$2"; then
    257286        errorprint "missing argument to rem_driver()"
    258         exit 9
     287        exit 1
    259288    fi
    260289
    261290    modname=$1
    262     fatal=$2
     291    moddesc=$2
     292    fatal=$3
    263293    module_added $modname
    264294    if test "$?" -eq 0; then
    265295        $BIN_REMDRV $modname
    266296        if test $? -eq 0; then
    267             success "Removed: $modname successfully"
     297            success "Removed:  $moddesc module"
    268298            return 0
    269299        else
    270             errorprint "Failed to remove: $modname"
     300            errorprint "Removing: $moddesc  ...FAILED!"
    271301            if test "$fatal" = "$FATALOP"; then
    272                 exit 10
     302                exit 1
    273303            fi
    274304            return 1
     
    277307}
    278308
    279 # unload_module(modname, [fatal])
     309# unload_module(modname, moddesc, [fatal])
    280310# failure: fatal
    281311unload_module()
    282312{
    283     if test -z "$1"; then
     313    if test -z "$1" || test -z "$2"; then
    284314        errorprint "missing argument to unload_module()"
    285         exit 11
     315        exit 1
    286316    fi
    287317
    288318    modname=$1
    289     fatal=$2
     319    moddesc=$2
     320    fatal=$3
    290321    modid=`$BIN_MODINFO | grep $modname | cut -f 1 -d ' ' `
    291322    if test -n "$modid"; then
    292323        $BIN_MODUNLOAD -i $modid
    293324        if test $? -eq 0; then
    294             success "Unloaded: $modname successfully"
     325            success "Unloaded:  $moddesc module"
    295326        else
    296             errorprint "Failed to unload: $modname"
     327            errorprint "Unloading:  $moddesc  ...FAILED!"
    297328            if test "$fatal" = "$FATALOP"; then
    298                 exit 12
     329                exit 1
    299330            fi
    300331            return 1
     
    304335}
    305336
    306 # load_module(modname)
     337# load_module(modname, moddesc, [fatal])
    307338# pass "drv/modname" or "misc/vbi" etc.
    308339# failure: fatal
    309340load_module()
    310341{
    311     if test -z "$1"; then
     342    if test -z "$1" || test -z "$2"; then
    312343        errorprint "missing argument to load_module()"
    313         exit 14
     344        exit 1
    314345    fi
    315346
    316347    modname=$1
    317     fatal=$2
     348    moddesc=$2
     349    fatal=$3
    318350    $BIN_MODLOAD -p $modname
    319351    if test $? -eq 0; then
    320         success "Loaded: $modname successfully"
     352        success "Loaded:  $moddesc module"
    321353        return 0
    322354    else
    323         errorprint "Failed to load: $modname"
     355        errorprint "Loading:  $modesc  ...FAILED!"
    324356        if test "$fatal" = "$FATALOP"; then
    325             exit 15
     357            exit 1
    326358        fi
    327359        return 1
     
    333365install_drivers()
    334366{
    335     infoprint "Loading Host Driver..."
    336     add_driver $MOD_VBOXDRV "* 0600 root sys" fatal
    337     load_module $MOD_VBOXDRV fatal
     367    if test -n "_HARDENED_"; then
     368        add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "'* 0600 root sys'" "$FATALOP"
     369    else
     370        add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "'* 0666 root sys'" "$FATALOP"
     371    fi
     372    load_module "drv/$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP"
    338373
    339374    # Add vboxdrv to devlink.tab
     
    343378
    344379    # Create the device link
    345     /usr/sbin/devfsadm -i $MOD_VBOXDRV
     380    /usr/sbin/devfsadm -i "$MOD_VBOXDRV"
    346381
    347382    if test $? -eq 0; then
    348383
    349384        if test -f /platform/i86pc/kernel/drv/vboxnet.conf; then
    350             infoprint "Loading NetAdapter..."
    351             add_drv $MOD_VBOXNET fatal
    352             load_module $MOD_VBOXNET fatal
     385            add_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP"
     386            load_module "drv/$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP"
    353387        fi
    354388
    355389        if test -f /platform/i86pc/kernel/drv/vboxflt.conf; then
    356             infoprint "Loading NetFilter..."
    357             add_driver $MOD_VBOXFLT fatal
    358             load_module $MOD_VBOXFLT fatal
     390            add_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP"
     391            load_module "drv/$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP"
    359392        fi
    360393
    361394        if test -f /platform/i86pc/kernel/drv/vboxusbmon.conf && test "$HOST_OS_VERSION" != "5.10"; then
    362             infoprint "Loading USBMonitor..."
    363             add_driver $MOD_VBOXUSBMON fatal
    364             load_module $MOD_VBOXUSBMON fatal
     395            add_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$FATALOP"
     396            load_module "drv/$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$FATALOP"
    365397
    366398            # Add vboxusbmon to devlink.tab
    367399            sed -e '/name=vboxusbmon/d' /etc/devlink.tab > /etc/devlink.vbox
    368400            echo "type=ddi_pseudo;name=vboxusbmon       \D" >> /etc/devlink.vbox
     401            mv -f /etc/devlink.vbox /etc/devlink.tab
    369402
    370403            # Create the device link
    371             /usr/sbin/devfsadm -i  $MOD_VBOXUSBMON
     404            /usr/sbin/devfsadm -i  "$MOD_VBOXUSBMON"
    372405            if test $? -ne 0; then
    373406                errorprint "Failed to create device link for $MOD_VBOXUSBMON."
    374                 exit 16
     407                exit 1
    375408            fi
    376409        fi
    377410    else
    378411        errorprint "Failed to create device link for $MOD_VBOXDRV."
    379         exit 17
     412        exit 1
    380413    fi
    381414
     
    387420remove_drivers()
    388421{
    389     $fatal=$1
     422    fatal=$1
    390423    # Remove vboxdrv from devlink.tab
    391     sed -e '/name=vboxdrv/d' /etc/devlink.tab > /etc/devlink.vbox
    392     mv -f /etc/devlink.vbox /etc/devlink.tab
     424    devlinkfound=`cat /etc/devlink.tab | grep vboxdrv`
     425    if test -n "$devlinkfound"; then
     426        sed -e '/name=vboxdrv/d' /etc/devlink.tab > /etc/devlink.vbox
     427        mv -f /etc/devlink.vbox /etc/devlink.tab
     428    fi
    393429
    394430    # Remove vboxusbmon from devlink.tab
    395     sed -e '/name=vboxusbmon/d' /etc/devlink.tab > /etc/devlink.vbox
    396     mv -f /etc/devlink.vbox /etc/devlink.tab
     431    devlinkfound=`cat /etc/devlink.tab | grep vboxusbmon`
     432    if test -n "$devlinkfound"; then
     433        sed -e '/name=vboxusbmon/d' /etc/devlink.tab > /etc/devlink.vbox
     434        mv -f /etc/devlink.vbox /etc/devlink.tab
     435    fi
    397436
    398437    # USBMonitor might not even be installed, but anyway...
    399438    if test -f /platform/i86pc/kernel/drv/vboxusbmon.conf && test "$HOST_OS_VERSION" != "5.10"; then
    400         infoprint "Unloading USBMonitor..."
    401         unload_module $MOD_VBOXUSBMON "$fatal"
    402         rem_driver $MOD_VBOXUSBMON "$fatal"
    403     fi
    404 
    405     infoprint "Unloading NetFilter..."
    406     unload_module $MOD_VBOXFLT "$fatal"
    407     rem_driver $MOD_VBOXFLT "$fatal"
    408 
    409     infoprint "Unloading NetAdapter..."
    410     unload_module $MOD_VBOXNET "$fatal"
    411     rem_driver $MOD_VBOXNET "$fatal"
    412 
    413     infoprint "Unloading Host Driver..."
    414     unload_module $MOD_VBOXDRV "$fatal"
    415     rem_driver $MOD_VBOXDRV "$fatal"
    416 
    417     infoprint "Unloading VBI..."
    418     unload_module $MOD_VBI "$fatal"
     439        unload_module "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
     440        rem_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
     441    fi
     442
     443    unload_module "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
     444    rem_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
     445
     446    unload_module "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
     447    rem_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
     448
     449    unload_module "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
     450    rem_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
     451
     452    unload_module "$MOD_VBI" "$DESC_VBI" "$fatal"
     453
     454    # remove devlinks
     455    if test -h "/dev/vboxdrv" || test -f "/dev/vboxdrv"; then
     456        rm -f /dev/vboxdrv
     457    fi
     458    if test -h "/dev/vboxusbmon" || test -f "/dev/vboxusbmon"; then
     459        rm -f /dev/vboxusbmon
     460    fi
    419461
    420462    return 0
     
    445487
    446488    # stop and unregister webservice SMF
    447     servicefound=`$BIN_SVCS -a | grep "virtualbox/webservice"`
     489    servicefound=`$BIN_SVCS -a | grep "virtualbox/webservice" 2>/dev/null`
    448490    if test ! -z "$servicefound"; then
    449491        $BIN_SVCADM disable -s svc:/application/virtualbox/webservice:default
     
    452494
    453495    # stop and unregister zoneaccess SMF
    454     servicefound=`$BIN_SVCS -a | grep "virtualbox/zoneaccess"`
     496    servicefound=`$BIN_SVCS -a | grep "virtualbox/zoneaccess" 2>/dev/null`
    455497    if test ! -z "$servicefound"; then
    456498        $BIN_SVCADM disable -s svc:/application/virtualbox/zoneaccess
     
    465507            errorprint "VirtualBox NetAdapter 'vboxnet0' couldn't be unplumbed (probably in use)."
    466508            if test "$fatal" = "$FATALOP"; then
    467                 exit 33
     509                exit 1
    468510            fi
    469511        fi
     
    497539                warnprint "Failed to bring up vboxnet0!!"
    498540            fi
     541        fi
     542
     543        if test -f /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml || test -f /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml; then
     544            infoprint "Configuring services..."
     545        fi
     546
     547        # Web service
     548        if test -f /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml; then
     549            /usr/sbin/svccfg import /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml
     550            /usr/sbin/svcadm disable -s svc:/application/virtualbox/webservice:default
     551        fi
     552
     553        # Zone access service
     554        if test -f /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml; then
     555            /usr/sbin/svccfg import /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml
     556            /usr/sbin/svcadm enable -s svc:/application/virtualbox/zoneaccess
    499557        fi
    500558
     
    552610    fatal=$1
    553611
    554     cleanup_install
     612    cleanup_install "$fatal"
    555613
    556614    remove_drivers "$fatal"
     
    570628
    571629drvop=$1
    572 fatal=$2
     630if test "$2" = "$FATALOP" || test "$3" = "$FATALOP"; then
     631    fatal=$FATALOP
     632fi
     633if test "$2" = "$SILENTOP" || test "$3" = "$SILENTOP"; then
     634    ISSILENT=$SILENTOP
     635fi
     636
    573637case "$drvop" in
    574638post_install)
     
    588652*)
    589653    echo "Usage: $0 post_install|pre_remove|install_drivers|remove_drivers [fatal]"
    590     exit 13
     654    exit 1
    591655esac
    592656
    593 if test "$?" -eq 0; then
    594     exit 0
    595 fi
    596 
    597 exit 1
    598 
     657exit "$?"
     658
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette