VirtualBox

source: vbox/trunk/src/VBox/Installer/linux/vboxdrv.sh@ 3874

Last change on this file since 3874 was 3845, checked in by vboxsync, 18 years ago

export again

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1#! /bin/sh
2# innotek VirtualBox
3# Linux kernel module init script
4
5#
6# Copyright (C) 2007 innotek GmbH
7#
8# Use only with permission
9#
10
11# chkconfig: 35 30 60
12# description: VirtualBox Linux kernel module
13#
14### BEGIN INIT INFO
15# Provides: vboxdrv
16# Required-Start: $syslog
17# Required-Stop:
18# Default-Start: 3 5
19# Default-Stop:
20# Description: VirtualBox Linux kernel module
21### END INIT INFO
22
23PATH=$PATH:/bin:/sbin:/usr/sbin
24CONFIG="/etc/vbox/vbox.cfg"
25
26if [ -f /etc/redhat-release ]; then
27 system=redhat
28elif [ -f /etc/SuSE-release ]; then
29 system=suse
30elif [ -f /etc/gentoo-release ]; then
31 system=gentoo
32else
33 system=other
34fi
35
36if [ "$system" = "redhat" ]; then
37 . /etc/init.d/functions
38 fail_msg() {
39 echo_failure
40 echo
41 }
42
43 succ_msg() {
44 echo_success
45 echo
46 }
47
48 begin() {
49 echo -n "$1"
50 }
51fi
52
53if [ "$system" = "suse" ]; then
54 . /etc/rc.status
55 fail_msg() {
56 rc_failed 1
57 rc_status -v
58 }
59
60 succ_msg() {
61 rc_reset
62 rc_status -v
63 }
64
65 begin() {
66 echo -n "$1"
67 }
68fi
69
70if [ "$system" = "gentoo" ]; then
71 . /sbin/functions.sh
72 fail_msg() {
73 eend 1
74 }
75
76 succ_msg() {
77 eend $?
78 }
79
80 begin() {
81 ebegin $1
82 }
83
84 if [ "`which $0`" = "/sbin/rc" ]; then
85 shift
86 fi
87fi
88
89if [ "$system" = "other" ]; then
90 fail_msg() {
91 echo " ...fail!"
92 }
93
94 succ_msg() {
95 echo " ...done."
96 }
97
98 begin() {
99 echo -n $1
100 }
101fi
102
103
104kdir=/lib/modules/`uname -r`/misc
105dev=/dev/vboxdrv
106modname=vboxdrv
107groupname=vboxusers
108
109fail() {
110 if [ "$system" = "gentoo" ]; then
111 eerror $1
112 exit 1
113 fi
114 fail_msg
115 echo "($1)"
116 exit 1
117}
118
119running() {
120 lsmod | grep -q $modname[^_-]
121}
122
123start() {
124 begin "Starting VirtualBox kernel module "
125 test -f "$kdir/$modname.o" -o -f "$kdir/$modname.ko" || {
126 fail "Kernel module not found"
127 }
128 running || {
129 rm -f $dev || {
130 fail "Cannot remove $dev"
131 }
132
133 modprobe $modname || {
134 fail "modprobe $modname failed"
135 }
136
137 sleep 1
138 }
139 if [ ! -c $dev ]; then
140 maj=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/devices`
141 if [ ! -z "$maj" ]; then
142 min=0
143 else
144 min=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/misc`
145 if [ ! -z "$min" ]; then
146 maj=10
147 fi
148 fi
149 test -z "$maj" && {
150 rmmod $modname
151 fail "Cannot locate the VirtualBox device"
152 }
153
154 mknod -m 0664 $dev c $maj $min || {
155 rmmod $modname
156 fail "Cannot create device $dev with major $maj and minor $min"
157 }
158 fi
159
160 chown :$groupname $dev || {
161 rmmod $modname
162 fail "Cannot change owner $groupname for device $dev"
163 }
164
165 succ_msg
166 return 0
167}
168
169stop() {
170 begin "Stopping VirtualBox kernel module "
171 if running; then
172 rmmod $modname || fail "Cannot unload module $modname"
173 rm -f $dev || fail "Cannot unlink $dev"
174 fi
175 succ_msg
176 return 0
177}
178
179restart() {
180 stop && start
181 return 0
182}
183
184setup() {
185 . "$CONFIG"
186 stop
187 begin "Recompiling VirtualBox kernel module "
188 if ! $INSTALL_DIR/src/build_in_tmp install > /var/log/vbox-install.log 2>&1; then
189 fail "Look at /var/log/vbox-install.log to find out what went wrong"
190 fi
191 succ_msg
192 start
193}
194
195dmnstatus() {
196 if running; then
197 echo "VirtualBox kernel module is loaded."
198 else
199 echo "VirtualBox kernel module is not loaded."
200 fi
201}
202
203case "$1" in
204start)
205 start
206 ;;
207stop)
208 stop
209 ;;
210restart)
211 restart
212 ;;
213setup)
214 setup
215 ;;
216status)
217 dmnstatus
218 ;;
219*)
220 echo "Usage: $0 {start|stop|restart|status|setup}"
221 exit 1
222esac
223
224exit
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