VirtualBox

source: vbox/trunk/src/VBox/Additions/linux/installer/vboxadd-x11.sh@ 29593

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

Additions/x11 and linux/installer: install the xorg.conf.d rule to load vboxmouse by default on X.Org Server 1.8 (based on r60935 from 3.1 and r61290 from 3.0)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.4 KB
Line 
1#! /bin/sh
2# Sun VirtualBox
3# Linux Additions X11 setup init script ($Revision: 29406 $)
4#
5
6#
7# Copyright (C) 2006-2009 Oracle Corporation
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
18
19# chkconfig: 35 30 70
20# description: VirtualBox Linux Additions kernel modules
21#
22### BEGIN INIT INFO
23# Provides: vboxadd-x11
24# Required-Start:
25# Required-Stop:
26# Default-Start:
27# Default-Stop:
28# Description: VirtualBox Linux Additions X11 setup
29### END INIT INFO
30
31PATH=$PATH:/bin:/sbin:/usr/sbin
32LOG="/var/log/vboxadd-install-x11.log"
33CONFIG_DIR="/var/lib/VBoxGuestAdditions"
34CONFIG="config"
35
36# Check architecture
37cpu=`uname -m`;
38case "$cpu" in
39 i[3456789]86|x86)
40 cpu="x86"
41 LIB="/usr/lib"
42 ;;
43 x86_64|amd64)
44 cpu="amd64"
45 if test -d "/usr/lib64"; then
46 LIB="/usr/lib64"
47 else
48 LIB="/usr/lib"
49 fi
50 ;;
51esac
52
53# Find the version of X installed
54# The last of the three is for the X.org 6.7 included in Fedora Core 2
55xver=`X -version 2>&1`
56x_version=`echo "$xver" | sed -n 's/^X Window System Version \([0-9.]\+\)/\1/p'``echo "$xver" | sed -n 's/^XFree86 Version \([0-9.]\+\)/\1/p'``echo "$xver" | sed -n 's/^X Protocol Version 11, Revision 0, Release \([0-9.]\+\)/\1/p'``echo "$xver" | sed -n 's/^X.Org X Server \([0-9.]\+\)/\1/p'`
57# Version of Redhat or Fedora installed. Needed for setting up selinux policy.
58redhat_release=`cat /etc/redhat-release 2> /dev/null`
59# All the different possible locations for XFree86/X.Org configuration files
60# - how many of these have ever been used?
61x11conf_files="/etc/X11/xorg.conf /etc/X11/xorg.conf-4 /etc/X11/.xorg.conf \
62 /etc/xorg.conf /usr/etc/X11/xorg.conf-4 /usr/etc/X11/xorg.conf \
63 /usr/lib/X11/xorg.conf-4 /usr/lib/X11/xorg.conf /etc/X11/XF86Config-4 \
64 /etc/X11/XF86Config /etc/XF86Config /usr/X11R6/etc/X11/XF86Config-4 \
65 /usr/X11R6/etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config-4 \
66 /usr/X11R6/lib/X11/XF86Config"
67
68if [ -f /etc/arch-release ]; then
69 system=arch
70elif [ -f /etc/redhat-release ]; then
71 system=redhat
72elif [ -f /etc/debian_version ]; then
73 system=debian
74elif [ -f /etc/SuSE-release ]; then
75 system=suse
76elif [ -f /etc/gentoo-release ]; then
77 system=gentoo
78elif [ -f /etc/lfs-release -a -d /etc/rc.d/init.d ]; then
79 system=lfs
80else
81 system=other
82fi
83
84if [ "$system" = "arch" ]; then
85 USECOLOR=yes
86 . /etc/rc.d/functions
87 fail_msg() {
88 stat_fail
89 }
90
91 succ_msg() {
92 stat_done
93 }
94
95 begin() {
96 stat_busy "$1"
97 }
98fi
99
100if [ "$system" = "redhat" ]; then
101 . /etc/init.d/functions
102 fail_msg() {
103 echo_failure
104 echo
105 }
106 succ_msg() {
107 echo_success
108 echo
109 }
110 begin() {
111 echo -n "$1"
112 }
113fi
114
115if [ "$system" = "suse" ]; then
116 . /etc/rc.status
117 fail_msg() {
118 rc_failed 1
119 rc_status -v
120 }
121 succ_msg() {
122 rc_reset
123 rc_status -v
124 }
125 begin() {
126 echo -n "$1"
127 }
128fi
129
130if [ "$system" = "gentoo" ]; then
131 if [ -f /sbin/functions.sh ]; then
132 . /sbin/functions.sh
133 elif [ -f /etc/init.d/functions.sh ]; then
134 . /etc/init.d/functions.sh
135 fi
136 fail_msg() {
137 eend 1
138 }
139 succ_msg() {
140 eend $?
141 }
142 begin() {
143 ebegin $1
144 }
145 if [ "`which $0`" = "/sbin/rc" ]; then
146 shift
147 fi
148fi
149
150if [ "$system" = "lfs" ]; then
151 . /etc/rc.d/init.d/functions
152 fail_msg() {
153 echo_failure
154 }
155 succ_msg() {
156 echo_ok
157 }
158 begin() {
159 echo $1
160 }
161fi
162
163if [ "$system" = "debian" -o "$system" = "other" ]; then
164 fail_msg() {
165 echo " ...fail!"
166 }
167 succ_msg() {
168 echo " ...done."
169 }
170 begin() {
171 echo -n $1
172 }
173fi
174
175dev=/dev/vboxguest
176userdev=/dev/vboxuser
177owner=vboxadd
178group=1
179
180fail()
181{
182 if [ "$system" = "gentoo" ]; then
183 eerror $1
184 exit 1
185 fi
186 fail_msg
187 echo "($1)"
188 exit 1
189}
190
191# Install an X11 desktop startup application. The application should be a shell script.
192# Its name should be purely alphanumeric and should start with a two digit number (preferably
193# 98 or thereabouts) to indicate its place in the Debian Xsession startup order.
194#
195# syntax: install_x11_startup_app app desktop service_name
196install_x11_startup_app() {
197 self="install_x11_startup_app"
198 app_src=$1
199 desktop_src=$2
200 service_name=$3
201 alt_command=$4
202 test -r "$app_src" ||
203 { echo >> $LOG "$self: no script given"; return 1; }
204 test -r "$desktop_src" ||
205 { echo >> $LOG "$self: no desktop file given"; return 1; }
206 test -n "$service_name" ||
207 { echo >> $LOG "$self: no service given"; return 1; }
208 test -n "$alt_command" ||
209 { echo >> $LOG "$self: no service given"; return 1; }
210 app_dest=`basename $app_src sh`
211 app_dest_sh=`basename $app_src sh`.sh
212 desktop_dest=`basename $desktop_src`
213 found=0
214 x11_autostart="/etc/xdg/autostart"
215 kde_autostart="/usr/share/autostart"
216 redhat_dir=/etc/X11/Xsession.d
217 mandriva_dir=/etc/X11/xinit.d
218 debian_dir=/etc/X11/xinit/xinitrc.d
219 if [ -d "$mandriva_dir" -a -w "$mandriva_dir" -a -x "$mandriva_dir" ]
220 then
221 install -m 0644 $app_src "$mandriva_dir/$app_dest"
222 found=1
223 fi
224 if [ -d "$x11_autostart" -a -w "$x11_autostart" -a -x "$x11_autostart" ]
225 then
226 install -m 0644 $desktop_src "$x11_autostart/$desktop_dest"
227 found=1
228 fi
229 if [ -d "$kde_autostart" -a -w "$kde_autostart" -a -x "$kde_autostart" ]
230 then
231 install -m 0644 $desktop_src "$kde_autostart/$desktop_dest"
232 found=1
233 fi
234 if [ -d "$redhat_dir" -a -w "$redhat_dir" -a -x "$redhat_dir" ]
235 then
236 install -m 0644 $app_src "$redhat_dir/$app_dest"
237 found=1
238 fi
239 if [ -d "$debian_dir" -a -w "$debian_dir" -a -x "$debian_dir" ]
240 then
241 install -m 0755 $app_src "$debian_dir/$app_dest_sh"
242 found=1
243 fi
244 if [ $found -eq 1 ]; then
245 return 0
246 fi
247 cat >> $LOG << EOF
248Could not set up the $service_name desktop service.
249To start it at log-in for a given user, add the command $alt_command
250to the file .xinitrc in their home directory.
251EOF
252 return 1
253}
254
255
256start()
257{
258 # Todo: check configuration and correct it if necessary
259 return 0
260}
261
262stop()
263{
264 return 0
265}
266
267restart()
268{
269 stop && start
270 return 0
271}
272
273# setup_script
274setup()
275{
276 echo "VirtualBox Guest Additions installation, Window System and desktop setup" > $LOG
277 begin "Installing the Window System drivers"
278 lib_dir="$LIB/VBoxGuestAdditions"
279 share_dir="/usr/share/VBoxGuestAdditions"
280 test -x "$lib_dir" -a -x "$share_dir" ||
281 fail "Invalid Guest Additions configuration found"
282 # By default we want to configure X
283 dox11config="true"
284 # By default, we want to run our xorg.conf setup script
285 setupxorgconf="true"
286 # But not to install the configuration file into xorg.conf.d
287 doxorgconfd=""
288 # But without the workaround for SUSE 11.1 not doing input auto-detection
289 newmouse=""
290 # By default we want to use hal/udev/whatever for auto-loading the mouse driver
291 automouse="--autoMouse"
292 # We need to tell our xorg.conf hacking script whether /dev/psaux exists
293 nopsaux="--nopsaux"
294 test -c /dev/psaux && nopsaux=""
295 # The video driver to install for X.Org 6.9+
296 vboxvideo_src=
297 # The mouse driver to install for X.Org 6.9+
298 vboxmouse_src=
299
300 modules_dir=`X -showDefaultModulePath 2>&1` || modules_dir=
301 if [ -z "$modules_dir" ]; then
302 for dir in /usr/lib64/xorg/modules /usr/lib/xorg/modules /usr/X11R6/lib64/modules /usr/X11R6/lib/modules /usr/X11R6/lib/X11/modules; do
303 if [ -d $dir ]; then
304 modules_dir=$dir
305 break
306 fi
307 done
308 fi
309
310 test -z "$x_version" -o -z "$modules_dir" &&
311 fail "Could not find the X.Org or XFree86 Window System."
312
313 echo
314 case $x_version in
315 1.8.99.* )
316 echo "Warning: unsupported pre-release version of X.Org Server installed. Not"
317 echo "installing the X.Org drivers."
318 dox11config=""
319 ;;
320 1.7.99.* | 1.8.* )
321 begin "Installing X.Org Server 1.8 modules"
322 vboxvideo_src=vboxvideo_drv_18.so
323 vboxmouse_src=vboxmouse_drv_18.so
324 doxorgconfd="true"
325 setupxorgconf=""
326 ;;
327 1.6.99.* | 1.7.* )
328 begin "Installing X.Org Server 1.7 modules"
329 vboxvideo_src=vboxvideo_drv_17.so
330 vboxmouse_src=vboxmouse_drv_17.so
331 setupxorgconf=""
332 test "$system" = "debian" && doxorgconfd="true"
333 ;;
334 1.5.99.* | 1.6.* )
335 begin "Installing X.Org Server 1.6 modules"
336 vboxvideo_src=vboxvideo_drv_16.so
337 vboxmouse_src=vboxmouse_drv_16.so
338 # SUSE with X.Org Server 1.6 knows about vboxvideo
339 test "$system" = "suse" && setupxorgconf=""
340 ;;
341 1.4.99.901 | 1.4.99.902 )
342 echo "Warning: you are using a pre-release version of X.Org server 1.5 which is known"
343 echo "not to work with the VirtualBox Guest Additions. Please update to a more"
344 echo "recent version (for example by installing all updates in your guest) and then"
345 echo "set up the Guest Additions for X.Org server by running"
346 echo ""
347 echo " /usr/lib[64]/VBoxGuestAdditions/vboxadd-x11 setup"
348 dox11config=""
349 ;;
350 1.4.99.* | 1.5.* )
351 # Fedora 9 shipped X.Org Server version 1.4.99.9x (1.5.0 RC)
352 # in its released version
353 begin "Installing X.Org Server 1.5 modules"
354 vboxvideo_src=vboxvideo_drv_15.so
355 vboxmouse_src=vboxmouse_drv_15.so
356 # SUSE with X.Org 1.5 is a special case, and is handled specially
357 test "$system" = "suse" &&
358 { automouse=""; newmouse="--newMouse"; }
359 ;;
360 1.4.* )
361 begin "Installing X.Org Server 1.4 modules"
362 vboxvideo_src=vboxvideo_drv_14.so
363 vboxmouse_src=vboxmouse_drv_14.so
364 automouse=""
365 newmouse="--newMouse"
366 ;;
367 1.3.* )
368 # This was the first release which gave the server version number
369 # rather than the X11 release version when you did 'X -version'.
370 begin "Installing X.Org Server 1.3 modules"
371 vboxvideo_src=vboxvideo_drv_13.so
372 vboxmouse_src=vboxmouse_drv_13.so
373 automouse=""
374 newmouse="--newMouse"
375 ;;
376 7.1.* | 7.2.* )
377 begin "Installing X.Org 7.1 modules"
378 vboxvideo_src=vboxvideo_drv_71.so
379 vboxmouse_src=vboxmouse_drv_71.so
380 automouse=""
381 ;;
382 6.9.* | 7.0.* )
383 begin "Installing X.Org 6.9/7.0 modules"
384 vboxvideo_src=vboxvideo_drv_70.so
385 vboxmouse_src=vboxmouse_drv_70.so
386 automouse=""
387 ;;
388 6.7* | 6.8.* | 4.2.* | 4.3.* )
389 # Assume X.Org post-fork or XFree86
390 begin "Installing XFree86 4.2/4.3 and X.Org 6.7/6.8 modules"
391 rm "$modules_dir/drivers/vboxvideo_drv.o" 2>/dev/null
392 rm "$modules_dir/input/vboxmouse_drv.o" 2>/dev/null
393 ln -s "$lib_dir/vboxvideo_drv.o" "$modules_dir/drivers/vboxvideo_drv.o"
394 ln -s "$lib_dir/vboxmouse_drv.o" "$modules_dir/input/vboxmouse_drv.o"
395 automouse=""
396 succ_msg
397 ;;
398 * )
399 echo "Warning: unknown version of the X Window System installed. Not installing"
400 echo "X Window System drivers."
401 dox11config=""
402 ;;
403 esac
404 if [ -n "$vboxvideo_src" -a -n "$vboxmouse_src" ]; then
405 rm "$modules_dir/drivers/vboxvideo_drv.so" 2>/dev/null
406 rm "$modules_dir/input/vboxmouse_drv.so" 2>/dev/null
407 ln -s "$lib_dir/$vboxvideo_src" "$modules_dir/drivers/vboxvideo_drv.so"
408 ln -s "$lib_dir/$vboxmouse_src" "$modules_dir/input/vboxmouse_drv.so" &&
409 succ_msg
410 fi
411
412 if test -n "$dox11config"; then
413 begin "Setting up the Window System to use the Guest Additions"
414 # Certain Ubuntu/Debian versions use a special PCI-id file to identify
415 # video drivers. Some versions have the directory and don't use it.
416 # Those versions can autoload vboxvideo though, so we don't need to
417 # hack the configuration file for them.
418 test "$system" = "debian" -a -d /usr/share/xserver-xorg/pci &&
419 {
420 rm -f "/usr/share/xserver-xorg/pci/vboxvideo.ids"
421 ln -s "$share_dir/vboxvideo.ids" /usr/share/xserver-xorg/pci 2>/dev/null
422 test -n "$automouse" && setupxorgconf=""
423 }
424
425 # Do the XF86Config/xorg.conf hack for those versions that require it
426 configured=""
427 generated=""
428 if test -n "$setupxorgconf"; then
429 for i in $x11conf_files; do
430 if test -r "$i"; then
431 if grep -q "VirtualBox generated" "$i"; then
432 generated="$generated `printf "$i\n"`"
433 else
434 "$lib_dir/x11config-new.pl" $newmouse $automouse $nopsaux "$i"
435 fi
436 configured="true"
437 fi
438 # Timestamp, so that we can see if the config file is changed
439 # by someone else later
440 test -r "$i.vbox" && touch "$i.vbox"
441 done
442 # X.Org Server 1.5 and 1.6 can detect hardware they know, but they
443 # need a configuration file for VBoxVideo.
444 main_cfg="/etc/X11/xorg.conf"
445 nobak="/etc/X11/xorg.vbox.nobak"
446 if test -z "$configured"; then
447 touch "$main_cfg"
448 "$lib_dir/x11config-new.pl" $newmouse $automouse $nopsaux --noBak "$main_cfg"
449 touch "$nobak"
450 fi
451 fi
452 # X.Org Server versions starting with 1.5 can do mouse auto-detection,
453 # to make our lives easier and spare us the nasty hacks.
454 test -n "$automouse" &&
455 if [ -d /etc/hal/fdi/policy ]
456 then
457 # Install hal information about the mouse driver so that X.Org
458 # knows to load it.
459 install -o 0 -g 0 -m 0644 "$share_dir/90-vboxguest.fdi" /etc/hal/fdi/policy
460 # Delete the hal cache so that it notices our fdi file
461 rm -r /var/cache/hald/fdi-cache 2> /dev/null
462 fi
463 if test -n "$doxorgconfd"
464 then
465 if test -d /etc/udev/rules.d
466 then
467 install -o 0 -g 0 -m 0644 "$share_dir/70-xorg-vboxmouse.rules" /etc/udev/rules.d
468 # This is normally silent. I have purposely not redirected
469 # error output as I want to know if something goes wrong,
470 # particularly if the command syntax ever changes.
471 udevadm trigger --action=change
472 fi
473 test -d /usr/share/X11/xorg.conf.d &&
474 install -o 0 -g 0 -m 0644 "$share_dir/50-vboxmouse.conf" /usr/share/X11/xorg.conf.d
475 test -d /usr/lib/X11/xorg.conf.d &&
476 install -o 0 -g 0 -m 0644 "$share_dir/50-vboxmouse.conf" /usr/lib/X11/xorg.conf.d
477 fi
478 succ_msg
479 test -n "$generated" &&
480 cat << EOF
481The following X.Org/XFree86 configuration files were originally generated by
482the VirtualBox Guest Additions and were not modified:
483
484$generated
485
486EOF
487 cat << EOF
488You may need to restart the hal service and the Window System (or just restart
489the guest system) to enable the Guest Additions.
490
491EOF
492 fi
493
494 begin "Installing graphics libraries and desktop services components"
495 # Install selinux policy for Fedora 7 and 8 to allow the X server to
496 # open device files
497 case "$redhat_release" in
498 Fedora\ release\ 7* | Fedora\ release\ 8* )
499 semodule -i "$share_dir/vbox_x11.pp" > /dev/null 2>&1
500 ;;
501 esac
502
503 # Install selinux policy for Fedora 8 to allow the X server to
504 # open our drivers
505 case "$redhat_release" in
506 Fedora\ release\ 8* )
507 chcon -u system_u -t lib_t "$lib_dir"/*.so
508 ;;
509 esac
510
511 # Our logging code generates some glue code on 32-bit systems. At least F10
512 # needs a rule to allow this. Send all output to /dev/null in case this is
513 # completely irrelevant on the target system.
514 chcon -t unconfined_execmem_exec_t '/usr/bin/VBoxClient' > /dev/null 2>&1
515 semanage fcontext -a -t unconfined_execmem_exec_t '/usr/bin/VBoxClient' > /dev/null 2>&1
516 # Install the guest OpenGL drivers
517 if [ -d /usr/lib64/dri ]
518 then
519 rm -f /usr/lib64/dri/vboxvideo_dri.so
520 ln -s $LIB/VBoxOGL.so /usr/lib64/dri/vboxvideo_dri.so
521 elif [ -d /usr/lib/dri ]
522 then
523 rm -f /usr/lib/dri/vboxvideo_dri.so
524 ln -s $LIB/VBoxOGL.so /usr/lib/dri/vboxvideo_dri.so
525 fi
526
527 # And set up VBoxClient to start when the X session does
528 install_x11_startup_app "$lib_dir/98vboxadd-xclient" "$share_dir/vboxclient.desktop" VBoxClient VBoxClient-all ||
529 fail "See the log file $LOG for more information."
530 succ_msg
531}
532
533# cleanup_script
534cleanup()
535{
536 # Restore xorg.conf files as far as possible
537 ## List of generated files which have been changed since we generated them
538 newer=""
539 ## Are we dealing with a legacy information which didn't support
540 # uninstallation?
541 legacy=""
542 ## Do any of the restored configuration files still reference our drivers?
543 failed=""
544 test -r "$CONFIG_DIR/$CONFIG" || legacy="true"
545 main_cfg="/etc/X11/xorg.conf"
546 nobak="/etc/X11/xorg.vbox.nobak"
547 if test -r "$nobak"; then
548 test -r "$main_cfg" &&
549 if test -n "$legacy" -o ! "$nobak" -ot "$main_cfg"; then
550 rm -f "$nobak" "$main_cfg"
551 else
552 newer="$newer`printf " $main_cfg (no original)\n"`"
553 fi
554 else
555 for i in $x11conf_files; do
556 if test -r "$i.vbox"; then
557 if test ! "$i" -nt "$i.vbox" -o -n "$legacy"; then
558 mv -f "$i.vbox" "$i"
559 grep -q -E 'vboxvideo|vboxmouse' "$i" &&
560 failed="$failed`printf " $i\n"`"
561 else
562 newer="$newer`printf " $i ($i.vbox)\n"`"
563 fi
564 fi
565 done
566 fi
567 test -n "$newer" && cat << EOF
568
569The following X.Org/XFree86 configuration files were not restored, as they may
570have been changed since they were generated by the VirtualBox Guest Additions.
571You may wish to restore these manually. The file name in brackets is the
572original version.
573
574$newer
575
576EOF
577 test -n "$failed" && cat << EOF
578
579The following X.Org/XFree86 configuration files were restored, but still
580contain references to the Guest Additions drivers. You may wish to check and
581possibly correct the restored configuration files to be sure that the server
582will continue to work after it is restarted.
583
584$failed
585
586EOF
587
588 # Remove X.Org drivers
589 find "$x11_modules_dir" /usr/lib64/xorg/modules /usr/lib/xorg/modules \
590 /usr/X11R6/lib64/modules /usr/X11R6/lib/modules \
591 /usr/X11R6/lib/X11/modules \
592 '(' -name 'vboxvideo_drv*' -o -name 'vboxmouse_drv*' ')' \
593 -exec rm -f '{}' ';' 2>/dev/null
594
595 # Remove the link to vboxvideo_dri.so
596 rm -f /usr/lib/dri/vboxvideo_dri.so /usr/lib64/dri/vboxvideo_dri.so 2>/dev/null
597
598 # Remove VBoxClient autostart files
599 rm /etc/X11/Xsession.d/98vboxadd-xclient 2>/dev/null
600 rm /etc/X11/xinit.d/98vboxadd-xclient 2>/dev/null
601 rm /etc/X11/xinit/xinitrc.d/98vboxadd-xclient.sh 2>/dev/null
602 rm /etc/xdg/autostart/vboxclient.desktop 2>/dev/null
603 rm /usr/share/autostart/vboxclient.desktop 2>/dev/null
604
605 # Remove other files
606 rm /etc/hal/fdi/policy/90-vboxguest.fdi 2>/dev/null
607 rm /etc/udev/rules.d/70-xorg-vboxmouse.rules 2>/dev/null
608 udevadm trigger --action=change 2>/dev/null
609 rm /usr/lib/X11/xorg.conf.d/50-vboxmouse.conf 2>/dev/null
610 rm /usr/share/X11/xorg.conf.d/50-vboxmouse.conf 2>/dev/null
611 rm /usr/share/xserver-xorg/pci/vboxvideo.ids 2>/dev/null
612}
613
614dmnstatus()
615{
616 /bin/true
617}
618
619case "$1" in
620start)
621 start
622 ;;
623stop)
624 stop
625 ;;
626restart)
627 restart
628 ;;
629setup)
630 setup
631 ;;
632cleanup)
633 cleanup
634 ;;
635status)
636 dmnstatus
637 ;;
638*)
639 echo "Usage: $0 {start|stop|restart|status}"
640 exit 1
641esac
642
643exit
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