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