]>
Commit | Line | Data |
---|---|---|
98be3241 | 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 | |
9aed8438 | 15 | kver=`uname -r` |
98be3241 | 16 | |
71a75d2b | 17 | is_ESX_running() { |
18 | if [ ! -f /usr/bin/vmware-checkvm ] ; then | |
38a7a2ff ER |
19 | echo no |
20 | return | |
71a75d2b | 21 | fi |
22 | ||
23 | if /usr/bin/vmware-checkvm -p | grep -q ESX; then | |
38a7a2ff | 24 | echo yes |
71a75d2b | 25 | else |
38a7a2ff | 26 | echo no |
71a75d2b | 27 | fi |
28 | } | |
29 | ||
415b0c7c | 30 | # return true if $module exists for current kernel |
98be3241 | 31 | module_exist() { |
415b0c7c ER |
32 | local module=$1 |
33 | test -f /lib/modules/$kver/misc/$module.ko* | |
98be3241 | 34 | } |
35 | ||
36 | start_vmxnet() { | |
37 | # Check if the service is already running? | |
38a7a2ff | 38 | if [ -f /var/lock/subsys/open-vm-tools-vmxnet ]; then |
98be3241 | 39 | msg_already_running "Open Virtual Machine vmxnet script" |
38a7a2ff ER |
40 | return |
41 | fi | |
42 | ||
43 | msg_starting "Open Virtual Machine vmxnet script" | |
44 | busy | |
415b0c7c | 45 | if ! module_exist vmxnet; then |
38a7a2ff ER |
46 | fail |
47 | echo -e "\tCan't find vmxnet module" | |
48 | RETVAL=1 | |
49 | return | |
98be3241 | 50 | fi |
38a7a2ff ER |
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 | |
98be3241 | 57 | } |
58 | ||
59 | stop_vmxnet() { | |
38a7a2ff | 60 | if [ ! -f /var/lock/subsys/open-vm-tools-vmxnet ]; then |
98be3241 | 61 | msg_not_running "Open Virtual Machine vmxnet script" |
38a7a2ff | 62 | return |
98be3241 | 63 | fi |
38a7a2ff ER |
64 | |
65 | msg_stopping "Open Virtual Machine vmxnet script" | |
66 | busy | |
67 | rm -f /var/lock/subsys/open-vm-tools-vmxnet | |
68 | ok | |
98be3241 | 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 | |
415b0c7c | 74 | module_exist vmblock || return |
98be3241 | 75 | |
76 | # Check if the service is already running? | |
38a7a2ff | 77 | if [ -f /var/lock/subsys/open-vm-tools-vmblock ]; then |
98be3241 | 78 | msg_already_running "Open Virtual Machine vmblock script" |
38a7a2ff | 79 | return |
98be3241 | 80 | fi |
38a7a2ff ER |
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 | |
98be3241 | 91 | } |
92 | ||
93 | stop_vmblock() { | |
415b0c7c | 94 | module_exist vmblock || return |
98be3241 | 95 | |
38a7a2ff | 96 | if [ ! -f /var/lock/subsys/open-vm-tools-vmblock ]; then |
98be3241 | 97 | msg_not_running "Open Virtual Machine vmblock script" |
38a7a2ff | 98 | return |
98be3241 | 99 | fi |
38a7a2ff ER |
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 | |
98be3241 | 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 | |
415b0c7c | 112 | module_exist vmhgfs || return |
98be3241 | 113 | |
114 | # Check if the service is already running? | |
38a7a2ff | 115 | if [ -f /var/lock/subsys/open-vm-tools-vmhgfs ]; then |
98be3241 | 116 | msg_already_running "Open Virtual Machine vmhgfs script" |
38a7a2ff | 117 | return |
98be3241 | 118 | fi |
38a7a2ff ER |
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 | |
98be3241 | 128 | } |
129 | ||
130 | stop_vmhgfs() { | |
415b0c7c | 131 | module_exist vmhgfs || return |
98be3241 | 132 | |
38a7a2ff | 133 | if [ ! -f /var/lock/subsys/open-vm-tools-vmhgfs ]; then |
98be3241 | 134 | msg_not_running "Open Virtual Machine vmhgfs script" |
38a7a2ff | 135 | return |
98be3241 | 136 | fi |
38a7a2ff ER |
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 | |
98be3241 | 144 | } |
145 | ||
146 | start_vmsync() { | |
147 | # Check if the service is already running? | |
38a7a2ff | 148 | if [ -f /var/lock/subsys/open-vm-tools-vmsync ]; then |
98be3241 | 149 | msg_already_running "Open Virtual Machine vmsync script" |
38a7a2ff | 150 | return |
98be3241 | 151 | fi |
38a7a2ff ER |
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 | |
98be3241 | 158 | } |
159 | ||
160 | stop_vmsync() { | |
38a7a2ff | 161 | if [ ! -f /var/lock/subsys/open-vm-tools-vmsync ]; then |
98be3241 | 162 | msg_not_running "Open Virtual Machine vmsync script" |
38a7a2ff | 163 | return |
98be3241 | 164 | fi |
38a7a2ff ER |
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 | |
98be3241 | 169 | } |
170 | ||
171 | start() { | |
172 | start_vmxnet | |
71a75d2b | 173 | if is_no `is_ESX_running`; then |
174 | start_vmblock | |
175 | start_vmhgfs | |
176 | fi | |
ae69fefb | 177 | _modprobe single vmware_vmmemctl |
98be3241 | 178 | _modprobe single vmci |
179 | _modprobe single vsock | |
224f2e73 | 180 | _modprobe single vmw_pvscsi |
98be3241 | 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) | |
38a7a2ff | 197 | stop |
98be3241 | 198 | ;; |
199 | restart) | |
38a7a2ff ER |
200 | stop |
201 | start | |
98be3241 | 202 | ;; |
203 | *) | |
204 | msg_usage "$0 {start|stop|restart}" | |
205 | exit 3 | |
206 | esac | |
207 | ||
208 | exit $RETVAL |