]> git.pld-linux.org Git - packages/open-vm-tools.git/blob - open-vm-tools-init
- removed `set -x' from init script
[packages/open-vm-tools.git] / open-vm-tools-init
1 #!/bin/sh
2 #
3 # open-vm-tools Helper scripts for open-vm-tools
4 #
5 # chkconfig:    345 90 20
6 #
7 # description:  Helper scripts for open-vm-tools
8 #
9 # $Id$
10
11 # Source function library.
12 . /etc/rc.d/init.d/functions
13
14 RETVAL=0
15 kver=`uname -r`
16
17 is_ESX_running() {
18     if [ ! -f /usr/bin/vmware-checkvm ] ; then
19                 echo no
20                 return
21     fi
22     
23     if /usr/bin/vmware-checkvm -p | grep -q ESX; then
24                 echo yes
25     else
26                 echo no
27     fi
28 }
29
30 # return true if $module exists for current kernel
31 module_exist() {
32         local module=$1
33         test -f /lib/modules/$kver/misc/$module.ko*
34 }
35
36 start_vmxnet() {
37         # Check if the service is already running?
38         if [ -f /var/lock/subsys/open-vm-tools-vmxnet ]; then
39                 msg_already_running "Open Virtual Machine vmxnet script"
40                 return
41         fi
42
43         msg_starting "Open Virtual Machine vmxnet script"
44         busy
45         if ! module_exist vmxnet; then
46                 fail
47                 echo -e "\tCan't find vmxnet module"
48                 RETVAL=1
49                 return
50         fi
51
52         for ethif in `ifconfig -a | grep ^eth | cut -d' ' -f1`; do
53                 /sbin/ethtool -K $ethif tso on > /dev/null 2>&1
54         done
55         ok
56         touch /var/lock/subsys/open-vm-tools-vmxnet
57 }
58
59 stop_vmxnet() {
60         if [ ! -f /var/lock/subsys/open-vm-tools-vmxnet ]; then
61                 msg_not_running "Open Virtual Machine vmxnet script"
62                 return
63         fi
64
65         msg_stopping "Open Virtual Machine vmxnet script"
66         busy
67         rm -f /var/lock/subsys/open-vm-tools-vmxnet
68         ok
69 }
70
71 start_vmblock() {
72         # vmblock is not required and unsupported on ESX so first check
73         # if it's installed then try to use
74         module_exist vmblock || return
75
76         # Check if the service is already running?
77         if [ -f /var/lock/subsys/open-vm-tools-vmblock ]; then
78                 msg_already_running "Open Virtual Machine vmblock script"
79                 return
80         fi
81
82         _modprobe single vmblock
83         msg_starting "Open Virtual Machine vmblock script"
84         busy
85         mkdir -p /tmp/VMwareDnD
86         chmod 1777 /tmp/VMwareDnD
87         mount -t vmblock none /proc/fs/vmblock/mountPoint
88         RETVAL=$?
89         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/open-vm-tools-vmblock && ok && return
90         fail
91 }
92
93 stop_vmblock() {
94         module_exist vmblock || return
95
96         if [ ! -f /var/lock/subsys/open-vm-tools-vmblock ]; then
97                 msg_not_running "Open Virtual Machine vmblock script"
98                 return
99         fi
100
101         msg_stopping "Open Virtual Machine vmblock script"
102         busy
103         umount /proc/fs/vmblock/mountPoint
104         RETVAL=$?
105         [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/open-vm-tools-vmblock && ok && return
106         fail
107 }
108
109 start_vmhgfs() {
110         # vmhgfs is not required and usupported on ESX so first check
111         # if it's installed then try to use
112         module_exist vmhgfs || return
113
114         # Check if the service is already running?
115         if [ -f /var/lock/subsys/open-vm-tools-vmhgfs ]; then
116                 msg_already_running "Open Virtual Machine vmhgfs script"
117                 return
118         fi
119
120         _modprobe single vmhgfs
121         msg_starting "Open Virtual Machine vmhgfs script"
122         busy
123         mkdir -p /mnt/hgfs
124         mount -t vmhgfs .host:/ /mnt/hgfs
125         RETVAL=$?
126         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/open-vm-tools-vmhgfs && ok && return
127         fail
128 }
129
130 stop_vmhgfs() {
131         module_exist vmhgfs || return
132
133         if [ ! -f /var/lock/subsys/open-vm-tools-vmhgfs ]; then
134                 msg_not_running "Open Virtual Machine vmhgfs script"
135                 return
136         fi
137
138         msg_stopping "Open Virtual Machine vmhgfs script"
139         busy
140         umount /mnt/hgfs
141         RETVAL=$?
142         [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/open-vm-tools-vmhgfs && ok && return
143         fail
144 }
145
146 start_vmsync() {
147         # Check if the service is already running?
148         if [ -f /var/lock/subsys/open-vm-tools-vmsync ]; then
149                 msg_already_running "Open Virtual Machine vmsync script"
150                 return
151         fi
152
153         _modprobe single vmsync
154         msg_starting "Open Virtual Machine vmsync script"
155         daemon /usr/bin/vmtoolsd --background /var/run/vmtoolsd.pid
156         RETVAL=$?
157         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/open-vm-tools-vmsync
158 }
159
160 stop_vmsync() {
161         if [ ! -f /var/lock/subsys/open-vm-tools-vmsync ]; then
162                 msg_not_running "Open Virtual Machine vmsync script"
163                 return
164         fi
165
166         msg_stopping "Open Virtual Machine vmsync script"
167         killproc --pidfile vmtoolsd.pid vmtoolsd
168         rm -f /var/lock/subsys/open-vm-tools-vmsync
169 }
170
171 start() {
172         start_vmxnet
173         if is_no `is_ESX_running`; then
174                 start_vmblock
175                 start_vmhgfs
176         fi
177         _modprobe single vmware_vmmemctl
178         _modprobe single vmci
179         _modprobe single vsock
180         _modprobe single vmw_pvscsi
181         start_vmsync
182 }
183
184 stop() {
185         stop_vmxnet
186         stop_vmblock
187         stop_vmhgfs
188         stop_vmsync
189 }
190
191 # See how we were called.
192 case "$1" in
193   start)
194         start
195         ;;
196   stop)
197         stop
198         ;;
199   restart)
200         stop
201         start
202         ;;
203   *)
204         msg_usage "$0 {start|stop|restart}"
205         exit 3
206 esac
207
208 exit $RETVAL
This page took 0.089064 seconds and 3 git commands to generate.