VirtualBox

source: vbox/trunk/debian/vboxdrv.init.tmpl@ 4878

Last change on this file since 4878 was 4071, checked in by vboxsync, 17 years ago

Biggest check-in ever. New source code headers for all (C) innotek files.

File size: 3.7 KB
Line 
1#! /bin/bash
2#
3# innotek VirtualBox
4# Linux kernel module init script
5#
6# Copyright (C) 2006-2007 innotek GmbH
7#
8# This file is part of VirtualBox Open Source Edition (OSE), as
9# available from http://www.virtualbox.org. This file is free software;
10# you can redistribute it and/or modify it under the terms of the GNU
11# General Public License as published by the Free Software Foundation,
12# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13# distribution. VirtualBox OSE is distributed in the hope that it will
14# be useful, but WITHOUT ANY WARRANTY of any kind.
15
16
17# chkconfig: 35 30 60
18# description: VirtualBox Linux kernel module
19#
20### BEGIN INIT INFO
21# Provides: vboxdrv
22# Required-Start: $syslog
23# Required-Stop:
24# Default-Start: 3 5
25# Default-Stop:
26# Short-Description: VirtualBox Linux kernel module
27### END INIT INFO
28
29KDIR="/lib/modules/`uname -r`/misc"
30DEVICE=/dev/vboxdrv
31MODNAME=vboxdrv
32GROUPNAME=vboxusers
33LOG="/var/log/vbox-install.log"
34NOLSB=%NOLSB%
35
36if [ -r /etc/default/virtualbox ]; then
37 . /etc/default/virtualbox
38fi
39
40if [ -z "$NOLSB" -a -f /lib/lsb/init-functions ]; then
41 . /lib/lsb/init-functions
42else
43 log_daemon_msg()
44 {
45 if [ -z "${1:-}" ]; then
46 return 1
47 fi
48 if [ -z "${2:-}" ]; then
49 echo -n "$1:"
50 return
51 fi
52 echo -n "$1: $2"
53 }
54 log_end_msg()
55 {
56 [ -z "${1:-}" ] && return 1
57 if [ $1 -eq 0 ]; then
58 echo "."
59 else
60 echo " failed!"
61 fi
62 }
63 log_success_msg()
64 {
65 echo "$@"
66 }
67 log_failure_msg()
68 {
69 echo "$@"
70 }
71fi
72
73failure()
74{
75 echo ""
76 log_failure_msg "$1"
77 exit 0
78}
79
80running()
81{
82 lsmod | grep -q $MODNAME[^_-]
83}
84
85start()
86{
87 log_daemon_msg "Starting VirtualBox kernel module" "$MODNAME";
88 # ensure the module is loaded
89 if ! running; then
90 if [ ! -f "$KDIR/$MODNAME.o" -a ! "$KDIR/$MODNAME.ko" ]; then
91 failure "No suitable module for running kernel found."
92 fi
93 if ! modprobe $MODNAME; then
94 failure "Modprobe $MODNAME failed. Please use 'dmesg' to find out why."
95 fi
96 sleep .2
97 fi
98 # ensure the character special exists
99 if [ ! -c $DEVICE ]; then
100 MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/devices`
101 if [ -n "$MAJOR" ]; then
102 MINOR=0
103 else
104 MINOR=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/misc`
105 if [ -n "$MINOR" ]; then
106 MAJOR=10
107 fi
108 fi
109 if [ -z "$MAJOR" ]; then
110 rmmod $MODNAME
111 failure "Cannot locate device major."
112 fi
113 if ! mknod -m 0664 $DEVICE c $MAJOR $MINOR; then
114 rmmod $MODNAME
115 failure "Cannot create device $DEVICE with major $MAJOR and minor $MINOR."
116 fi
117 fi
118 # ensure permissions
119 if ! chown :$GROUPNAME $DEVICE; then
120 rmmod $MODNAME
121 failure "Cannot change owner $GROUPNAME for device $DEVICE."
122 fi
123 log_end_msg 0
124}
125
126stop()
127{
128 log_daemon_msg "Stopping VirtualBox kernel module" "$MODNAME";
129 killall -q VBoxSVC
130 if running; then
131 if ! rmmod $MODNAME; then
132 failure "Cannot unload module $MODNAME."
133 fi
134 if ! rm -f $DEVICE; then
135 failure "Cannot unlink $DEVICE."
136 fi
137 fi
138 log_end_msg 0
139}
140
141case "$1" in
142 start)
143 start
144 ;;
145 stop)
146 stop
147 ;;
148 restart|reload|force-reload)
149 stop
150 start
151 ;;
152 setup)
153 stop
154 log_daemon_msg "Recompiling VirtualBox kernel module" "$MODNAME"
155 if ! /usr/share/virtualbox/src/build_in_tmp install > $LOG 2>&1; then
156 failure "Look at $LOG to find out what went wrong"
157 fi
158 log_end_msg 0
159 start
160 ;;
161 status)
162 if running; then
163 log_success_msg "VirtualBox kernel module is loaded."
164 else
165 log_failure_msg "VirtualBox kernel module is not loaded."
166 fi
167 ;;
168 *)
169 log_failure_msg "Usage: $0 {start|stop|restart|status|setup}"
170 exit 3
171esac
172
173exit 0
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