VirtualBox

source: vbox/trunk/src/VBox/Installer/solaris/vboxconfig.sh@ 25644

Last change on this file since 25644 was 25644, checked in by vboxsync, 15 years ago

Solaris/Installer: more compatible id usage.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 19.6 KB
Line 
1#!/bin/sh
2# $Id: vboxconfig.sh 25644 2010-01-05 08:46:59Z vboxsync $
3
4# Sun VirtualBox
5# VirtualBox Configuration Script, Solaris host.
6#
7# Copyright (C) 2009 Sun Microsystems, Inc.
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18# Clara, CA 95054 USA or visit http://www.sun.com if you need
19# additional information or have any questions.
20#
21
22
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.
25
26# S10 or OpenSoalris
27HOST_OS_MAJORVERSION=`uname -r`
28# Which OpenSolaris version (snv_xxx)?
29HOST_OS_MINORVERSION=`uname -v | sed -e "s/snv_//" -e "s/[^0-9]//"`
30
31DIR_VBOXBASE=/opt/VirtualBox
32DIR_MOD_32="/platform/i86pc/kernel/drv"
33DIR_MOD_64=$DIR_MOD_32/amd64
34
35BIN_ADDDRV=/usr/sbin/add_drv
36BIN_REMDRV=/usr/sbin/rem_drv
37BIN_MODLOAD=/usr/sbin/modload
38BIN_MODUNLOAD=/usr/sbin/modunload
39BIN_MODINFO=/usr/sbin/modinfo
40BIN_DEVFSADM=/usr/sbin/devfsadm
41BIN_BOOTADM=/sbin/bootadm
42BIN_SVCADM=/usr/sbin/svcadm
43BIN_SVCCFG=/usr/sbin/svccfg
44BIN_IFCONFIG=/sbin/ifconfig
45BIN_ID=/usr/bin/id
46
47# "vboxdrv" is also used in sed lines here (change those as well if it ever changes)
48MOD_VBOXDRV=vboxdrv
49DESC_VBOXDRV="Host"
50
51MOD_VBOXNET=vboxnet
52DESC_VBOXNET="NetAdapter"
53
54MOD_VBOXFLT=vboxflt
55DESC_VBOXFLT="NetFilter"
56
57# No Separate VBI since (3.1)
58#MOD_VBI=vbi
59#DESC_VBI="Kernel Interface"
60
61MOD_VBOXUSBMON=vboxusbmon
62DESC_VBOXUSBMON="USBMonitor"
63
64MOD_VBOXUSB=vboxusb
65DESC_VBOXUSB="USB"
66
67FATALOP=fatal
68NULLOP=nulloutput
69SILENTOP=silent
70IPSOP=ips
71ISSILENT=
72ISIPS=
73
74infoprint()
75{
76 if test "$ISSILENT" != "$SILENTOP"; then
77 echo 1>&2 "$1"
78 fi
79}
80
81subprint()
82{
83 if test "$ISSILENT" != "$SILENTOP"; then
84 echo 1>&2 " - $1"
85 fi
86}
87
88warnprint()
89{
90 if test "$ISSILENT" != "$SILENTOP"; then
91 echo 1>&2 " * Warning!! $1"
92 fi
93}
94
95errorprint()
96{
97 echo 1>&2 "## $1"
98}
99
100
101# check_bin_path()
102# !! failure is always fatal
103check_bin_path()
104{
105 if test -z "$1"; then
106 errorprint "missing argument to check_bin_path()"
107 exit 1
108 fi
109
110 if test ! -x "$1"; then
111 errorprint "$1 missing or is not an executable"
112 exit 1
113 fi
114 return 0
115}
116
117# find_bins()
118# !! failure is always fatal
119find_bins()
120{
121 # Search only for binaries that might be in different locations
122 BIN_IFCONFIG=`which ifconfig 2> /dev/null`
123 BIN_SVCS=`which svcs 2> /dev/null`
124 BIN_ID=`which id 2> /dev/null`
125
126 check_bin_path "$BIN_ID"
127 check_bin_path "$BIN_ADDDRV"
128 check_bin_path "$BIN_REMDRV"
129 check_bin_path "$BIN_MODLOAD"
130 check_bin_path "$BIN_MODUNLOAD"
131 check_bin_path "$BIN_MODINFO"
132 check_bin_path "$BIN_DEVFSADM"
133 check_bin_path "$BIN_BOOTADM"
134 check_bin_path "$BIN_SVCADM"
135 check_bin_path "$BIN_SVCCFG"
136 check_bin_path "$BIN_SVCS"
137 check_bin_path "$BIN_IFCONFIG"
138}
139
140# check_root()
141# !! failure is always fatal
142check_root()
143{
144 # Don't use "-u" option as some id binaries don't support it, instead
145 # rely on "uid=101(username) gid=10(groupname) groups=10(staff)" output
146 curuid=`$BIN_ID | cut -f 2 -d '=' | cut -f 1 -d '('`
147 if test "$curuid" -ne 0; then
148 errorprint "This script must be run with administrator privileges."
149 exit 1
150 fi
151}
152
153# check_zone()
154# !! failure is always fatal
155check_zone()
156{
157 currentzone=`zonename`
158 if test "$currentzone" != "global"; then
159 errorprint "This script must be run from the global zone."
160 exit 1
161 fi
162}
163
164# check_isa()
165# !! failure is always fatal
166check_isa()
167{
168 currentisa=`uname -i`
169 if test "$currentisa" = "i86xpv"; then
170 errorprint "VirtualBox cannot run under xVM Dom0! Fatal Error, Aborting installation!"
171 exit 1
172 fi
173}
174
175# check_module_arch()
176# !! failure is always fatal
177check_module_arch()
178{
179 cputype=`isainfo -k`
180 if test "$cputype" != "amd64" && test "$cputype" != "i386"; then
181 errorprint "VirtualBox works only on i386/amd64 hosts, not $cputype"
182 exit 1
183 fi
184}
185
186# module_added(modname)
187# returns 1 if added, 0 otherwise
188module_added()
189{
190 if test -z "$1"; then
191 errorprint "missing argument to module_added()"
192 exit 1
193 fi
194
195 loadentry=`cat /etc/name_to_major | grep $1`
196 if test -z "$loadentry"; then
197 return 1
198 fi
199 return 0
200}
201
202# module_loaded(modname)
203# returns 1 if loaded, 0 otherwise
204module_loaded()
205{
206 if test -z "$1"; then
207 errorprint "missing argument to module_loaded()"
208 exit 1
209 fi
210
211 modname=$1
212 # modinfo should now work properly since we prevent module autounloading
213 loadentry=`$BIN_MODINFO | grep $modname`
214 if test -z "$loadentry"; then
215 return 1
216 fi
217 return 0
218}
219
220# add_driver(modname, moddesc, fatal, nulloutput, [driverperm])
221# failure: depends on "fatal"
222add_driver()
223{
224 if test -z "$1" || test -z "$2"; then
225 errorprint "missing argument to add_driver()"
226 exit 1
227 fi
228
229 modname="$1"
230 moddesc="$2"
231 fatal="$3"
232 nullop="$4"
233 modperm="$5"
234
235 if test -n "$modperm"; then
236 if test "$nullop" = "$NULLOP"; then
237 $BIN_ADDDRV -m"$modperm" $modname >/dev/null 2>&1
238 else
239 $BIN_ADDDRV -m"$modperm" $modname
240 fi
241 else
242 if test "$nullop" = "$NULLOP"; then
243 $BIN_ADDDRV $modname >/dev/null 2>&1
244 else
245 $BIN_ADDDRV $modname
246 fi
247 fi
248
249 if test $? -ne 0; then
250 subprint "Adding: $moddesc module ...FAILED!"
251 if test "$fatal" = "$FATALOP"; then
252 exit 1
253 fi
254 return 1
255 fi
256 return 0
257}
258
259# rem_driver(modname, moddesc, [fatal])
260# failure: depends on [fatal]
261rem_driver()
262{
263 if test -z "$1" || test -z "$2"; then
264 errorprint "missing argument to rem_driver()"
265 exit 1
266 fi
267
268 modname=$1
269 moddesc=$2
270 fatal=$3
271 module_added $modname
272 if test "$?" -eq 0; then
273 if test "$ISIPS" != "$IPSOP"; then
274 $BIN_REMDRV $modname
275 else
276 $BIN_REMDRV $modname >/dev/null 2>&1
277 fi
278 if test $? -eq 0; then
279 subprint "Removed: $moddesc module"
280 return 0
281 else
282 subprint "Removing: $moddesc ...FAILED!"
283 if test "$fatal" = "$FATALOP"; then
284 exit 1
285 fi
286 return 1
287 fi
288 fi
289}
290
291# unload_module(modname, moddesc, [fatal])
292# failure: fatal
293unload_module()
294{
295 if test -z "$1" || test -z "$2"; then
296 errorprint "missing argument to unload_module()"
297 exit 1
298 fi
299
300 modname=$1
301 moddesc=$2
302 fatal=$3
303 modid=`$BIN_MODINFO | grep $modname | cut -f 1 -d ' ' `
304 if test -n "$modid"; then
305 $BIN_MODUNLOAD -i $modid
306 if test $? -eq 0; then
307 subprint "Unloaded: $moddesc module"
308 else
309 subprint "Unloading: $moddesc ...FAILED!"
310 if test "$fatal" = "$FATALOP"; then
311 exit 1
312 fi
313 return 1
314 fi
315 fi
316 return 0
317}
318
319# load_module(modname, moddesc, [fatal])
320# pass "drv/modname" or "misc/vbi" etc.
321# failure: fatal
322load_module()
323{
324 if test -z "$1" || test -z "$2"; then
325 errorprint "missing argument to load_module()"
326 exit 1
327 fi
328
329 modname=$1
330 moddesc=$2
331 fatal=$3
332 $BIN_MODLOAD -p $modname
333 if test $? -eq 0; then
334 subprint "Loaded: $moddesc module"
335 return 0
336 else
337 subprint "Loading: $moddesc ...FAILED!"
338 if test "$fatal" = "$FATALOP"; then
339 exit 1
340 fi
341 return 1
342 fi
343}
344
345# install_drivers()
346# !! failure is always fatal
347install_drivers()
348{
349 if test -n "_HARDENED_"; then
350 add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0600 root sys'"
351 else
352 add_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP" "not-$NULLOP" "'* 0666 root sys'"
353 fi
354 load_module "drv/$MOD_VBOXDRV" "$DESC_VBOXDRV" "$FATALOP"
355
356 # Add vboxdrv to devlink.tab
357 sed -e '/name=vboxdrv/d' /etc/devlink.tab > /etc/devlink.vbox
358 echo "type=ddi_pseudo;name=vboxdrv \D" >> /etc/devlink.vbox
359 mv -f /etc/devlink.vbox /etc/devlink.tab
360
361 # Create the device link
362 /usr/sbin/devfsadm -i "$MOD_VBOXDRV"
363
364 if test $? -eq 0 && test -h "/dev/vboxdrv"; then
365
366 if test -f /platform/i86pc/kernel/drv/vboxnet.conf; then
367 add_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP"
368 load_module "drv/$MOD_VBOXNET" "$DESC_VBOXNET" "$FATALOP"
369 fi
370
371 if test -f /platform/i86pc/kernel/drv/vboxflt.conf; then
372 add_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP"
373 load_module "drv/$MOD_VBOXFLT" "$DESC_VBOXFLT" "$FATALOP"
374 fi
375
376 if test -f /platform/i86pc/kernel/drv/vboxusbmon.conf && test "$HOST_OS_MAJORVERSION" != "5.10"; then
377 # For VirtualBox 3.1 the new USB code requires Nevada > 123
378 if test "$HOST_OS_MINORVERSION" -gt 123; then
379 add_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$FATALOP" "not-$NULLOP" "'* 0666 root sys'"
380 load_module "drv/$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$FATALOP"
381
382 # Add vboxusbmon to devlink.tab
383 sed -e '/name=vboxusbmon/d' /etc/devlink.tab > /etc/devlink.vbox
384 echo "type=ddi_pseudo;name=vboxusbmon \D" >> /etc/devlink.vbox
385 mv -f /etc/devlink.vbox /etc/devlink.tab
386
387 # Create the device link
388 /usr/sbin/devfsadm -i "$MOD_VBOXUSBMON"
389 if test $? -ne 0; then
390 errorprint "Failed to create device link for $MOD_VBOXUSBMON."
391 exit 1
392 fi
393
394 # Add vboxusb if present
395 # This driver is special, we need it in the boot-archive but since there is no
396 # USB device to attach to now (it's done at runtime) it will fail to attach so
397 # redirect attaching failure output to /dev/null
398 if test -f /platform/i86pc/kernel/drv/vboxusb.conf; then
399 add_driver "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$FATALOP" "$NULLOP"
400 load_module "drv/$MOD_VBOXUSB" "$DESC_VBOXUSB" "$FATALOP"
401 fi
402 else
403 warnprint "Solaris 5.11 snv_124 or higher required for USB support. Skipped installing USB support."
404 fi
405 fi
406 else
407 errorprint "Failed to create device link for $MOD_VBOXDRV."
408 exit 1
409 fi
410
411 return $?
412}
413
414# remove_all([fatal])
415# failure: depends on [fatal]
416remove_drivers()
417{
418 fatal=$1
419
420 # Remove vboxdrv from devlink.tab
421 devlinkfound=`cat /etc/devlink.tab | grep vboxdrv`
422 if test -n "$devlinkfound"; then
423 sed -e '/name=vboxdrv/d' /etc/devlink.tab > /etc/devlink.vbox
424 mv -f /etc/devlink.vbox /etc/devlink.tab
425 fi
426
427 # Remove vboxusbmon from devlink.tab
428 devlinkfound=`cat /etc/devlink.tab | grep vboxusbmon`
429 if test -n "$devlinkfound"; then
430 sed -e '/name=vboxusbmon/d' /etc/devlink.tab > /etc/devlink.vbox
431 mv -f /etc/devlink.vbox /etc/devlink.tab
432 fi
433
434 unload_module "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$fatal"
435 rem_driver "$MOD_VBOXUSB" "$DESC_VBOXUSB" "$fatal"
436
437 unload_module "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
438 rem_driver "$MOD_VBOXUSBMON" "$DESC_VBOXUSBMON" "$fatal"
439
440 unload_module "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
441 rem_driver "$MOD_VBOXFLT" "$DESC_VBOXFLT" "$fatal"
442
443 unload_module "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
444 rem_driver "$MOD_VBOXNET" "$DESC_VBOXNET" "$fatal"
445
446 unload_module "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
447 rem_driver "$MOD_VBOXDRV" "$DESC_VBOXDRV" "$fatal"
448
449# No separate VBI since 3.1
450# unload_module "$MOD_VBI" "$DESC_VBI" "$fatal"
451
452 # remove devlinks
453 if test -h "/dev/vboxdrv" || test -f "/dev/vboxdrv"; then
454 rm -f /dev/vboxdrv
455 fi
456 if test -h "/dev/vboxusbmon" || test -f "/dev/vboxusbmon"; then
457 rm -f /dev/vboxusbmon
458 fi
459
460 # unpatch nwam/dhcpagent fix
461 nwamfile=/etc/nwam/llp
462 nwambackupfile=$nwamfile.vbox
463 if test -f "$nwamfile"; then
464 sed -e '/vboxnet/d' $nwamfile > $nwambackupfile
465 mv -f $nwambackupfile $nwamfile
466 fi
467
468 return 0
469}
470
471# install_python_bindings(pythonbin)
472# remarks: changes pwd
473# failure: non fatal
474install_python_bindings()
475{
476 # The python binary might not be there, so just exit silently
477 if test -z "$1"; then
478 return 0
479 fi
480
481 if test -z "$2"; then
482 errorprint "missing argument to install_python_bindings"
483 exit 1
484 fi
485
486 pythonbin=$1
487 pythondesc=$2
488 if test -x "$pythonbin"; then
489 VBOX_INSTALL_PATH="$DIR_VBOXBASE"
490 export VBOX_INSTALL_PATH
491 cd $DIR_VBOXBASE/sdk/installer
492 $pythonbin ./vboxapisetup.py install > /dev/null
493 if test "$?" -eq 0; then
494 subprint "Installed: Bindings for $pythondesc"
495 fi
496 return 0
497 fi
498 return 1
499}
500
501
502# cleanup_install([fatal])
503# failure: depends on [fatal]
504cleanup_install()
505{
506 fatal=$1
507
508 # stop and unregister webservice SMF
509 servicefound=`$BIN_SVCS -a | grep "virtualbox/webservice" 2>/dev/null`
510 if test ! -z "$servicefound"; then
511 $BIN_SVCADM disable -s svc:/application/virtualbox/webservice:default
512 $BIN_SVCCFG delete svc:/application/virtualbox/webservice:default
513 if test "$?" -eq 0; then
514 subprint "Unloaded: Web service"
515 else
516 subprint "Unloading: Web service ...ERROR(S)."
517 fi
518 fi
519
520 # stop and unregister zoneaccess SMF
521 servicefound=`$BIN_SVCS -a | grep "virtualbox/zoneaccess" 2>/dev/null`
522 if test ! -z "$servicefound"; then
523 $BIN_SVCADM disable -s svc:/application/virtualbox/zoneaccess
524 $BIN_SVCCFG delete svc:/application/virtualbox/zoneaccess
525 if test "$?" -eq 0; then
526 subprint "Unloaded: Zone access service"
527 else
528 subprint "Unloading: Zone access service ...ERROR(S)."
529 fi
530 fi
531
532 # unplumb vboxnet0
533 vboxnetup=`$BIN_IFCONFIG vboxnet0 >/dev/null 2>&1`
534 if test "$?" -eq 0; then
535 $BIN_IFCONFIG vboxnet0 unplumb
536 if test "$?" -ne 0; then
537 errorprint "VirtualBox NetAdapter 'vboxnet0' couldn't be unplumbed (probably in use)."
538 if test "$fatal" = "$FATALOP"; then
539 exit 1
540 fi
541 fi
542 fi
543
544 # unplumb vboxnet0 ipv6
545 vboxnetup=`$BIN_IFCONFIG vboxnet0 inet6 >/dev/null 2>&1`
546 if test "$?" -eq 0; then
547 $BIN_IFCONFIG vboxnet0 inet6 unplumb
548 if test "$?" -ne 0; then
549 errorprint "VirtualBox NetAdapter 'vboxnet0' IPv6 couldn't be unplumbed (probably in use)."
550 if test "$fatal" = "$FATALOP"; then
551 exit 1
552 fi
553 fi
554 fi
555}
556
557
558# postinstall()
559# !! failure is always fatal
560postinstall()
561{
562 infoprint "Loading VirtualBox kernel modules..."
563 install_drivers
564
565 if test "$?" -eq 0; then
566 if test -f /platform/i86pc/kernel/drv/vboxnet.conf; then
567 # nwam/dhcpagent fix
568 nwamfile=/etc/nwam/llp
569 nwambackupfile=$nwamfile.vbox
570 if test -f "$nwamfile"; then
571 sed -e '/vboxnet/d' $nwamfile > $nwambackupfile
572 echo "vboxnet0 static 192.168.56.1" >> $nwambackupfile
573 mv -f $nwambackupfile $nwamfile
574 fi
575
576 # plumb and configure vboxnet0
577 $BIN_IFCONFIG vboxnet0 plumb up
578 if test "$?" -eq 0; then
579 $BIN_IFCONFIG vboxnet0 192.168.56.1 netmask 255.255.255.0 up
580 else
581 # Should this be fatal?
582 warnprint "Failed to bring up vboxnet0!!"
583 fi
584 fi
585
586 if test -f /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml || test -f /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml; then
587 infoprint "Configuring services..."
588 fi
589
590 # Web service
591 if test -f /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml; then
592 /usr/sbin/svccfg import /var/svc/manifest/application/virtualbox/virtualbox-webservice.xml
593 /usr/sbin/svcadm disable -s svc:/application/virtualbox/webservice:default
594 if test "$?" -eq 0; then
595 subprint "Loaded: Web service"
596 else
597 subprint "Loading: Web service ...ERROR(S)."
598 fi
599 fi
600
601 # Zone access service
602 if test -f /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml; then
603 /usr/sbin/svccfg import /var/svc/manifest/application/virtualbox/virtualbox-zoneaccess.xml
604 /usr/sbin/svcadm enable -s svc:/application/virtualbox/zoneaccess
605 if test "$?" -eq 0; then
606 subprint "Loaded: Zone access service"
607 else
608 subprint "Loading: Zone access service ...ERROR(S)."
609 fi
610 fi
611
612 # Install python bindings
613 if test -f "$DIR_VBOXBASE/sdk/installer/vboxapisetup.py" || test -h "$DIR_VBOXBASE/sdk/installer/vboxapisetup.py"; then
614 PYTHONBIN=`which python 2> /dev/null`
615 if test -f "$PYTHONBIN" || test -h "$PYTHONBIN"; then
616 infoprint "Installing Python bindings..."
617
618 INSTALLEDIT=1
619 PYTHONBIN=`which python2.4 2>/dev/null`
620 install_python_bindings "$PYTHONBIN" "Python 2.4"
621 if test "$?" -eq 0; then
622 INSTALLEDIT=0
623 fi
624 PYTHONBIN=`which python2.5 2>/dev/null`
625 install_python_bindings "$PYTHONBIN" "Python 2.5"
626 if test "$?" -eq 0; then
627 INSTALLEDIT=0
628 fi
629 PYTHONBIN=`which python2.6 2>/dev/null`
630 install_python_bindings "$PYTHONBIN" "Python 2.6"
631 if test "$?" -eq 0; then
632 INSTALLEDIT=0
633 fi
634
635 # remove files installed by Python build
636 rm -rf $DIR_VBOXBASE/sdk/installer/build
637
638 if test "$INSTALLEDIT" -ne 0; then
639 warnprint "No suitable Python version found. Required Python 2.4, 2.5 or 2.6."
640 warnprint "Skipped installing the Python bindings."
641 fi
642 else
643 warnprint "Python not found, skipped installed Python bindings."
644 fi
645 fi
646
647 # Update boot archive
648 infoprint "Updating the boot archive..."
649 $BIN_BOOTADM update-archive > /dev/null
650
651 return 0
652 else
653 errorprint "Failed to update boot-archive"
654 exit 666
655 fi
656 return 1
657}
658
659# preremove([fatal])
660# failure: depends on [fatal]
661preremove()
662{
663 fatal=$1
664
665 cleanup_install "$fatal"
666
667 remove_drivers "$fatal"
668 if test "$?" -eq 0; then
669 return 0;
670 fi
671 return 1
672}
673
674
675
676# And it begins...
677check_root
678check_isa
679check_zone
680find_bins
681
682# Get command line options
683while test $# -gt 0;
684do
685 case "$1" in
686 --postinstall | --preremove | --installdrivers | --removedrivers)
687 drvop="$1"
688 ;;
689 --fatal)
690 fatal="$FATALOP"
691 ;;
692 --silent)
693 ISSILENT="$SILENTOP"
694 ;;
695 --ips)
696 ISIPS="$IPSOP"
697 ;;
698 *)
699 break
700 ;;
701 esac
702 shift
703done
704
705case "$drvop" in
706--postinstall)
707 check_module_arch
708 postinstall
709 ;;
710--preremove)
711 preremove "$fatal"
712 ;;
713--installdrivers)
714 check_module_arch
715 install_drivers
716 ;;
717--removedrivers)
718 remove_drivers "$fatal"
719 ;;
720*)
721 errorprint "Invalid operation $drvop"
722 exit 1
723esac
724
725exit "$?"
726
Note: See TracBrowser for help on using the repository browser.

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