summaryrefslogtreecommitdiffstats
path: root/virtualbox_bin/virtualbox.install
blob: e41a22b04ea2a908b927d7ff869ac14278403154 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# $1: The new package version
post_install() {
  # Unload modules (if any)
  for _mod in vbox{drv,netadp,netflt}; do
    modprobe -r $_mod &> /dev/null
  done

  # Build new module
  /etc/rc.d/vboxdrv setup

  # Add vboxusers group, GID 108 is reserved (http://wiki.archlinux.org/index.php/UID_and_GID_list),
  # but in some systems it may be being used - please replace if needed.
  groupadd -f -g 108 vboxusers

  # Create the directory below if it doesn't exist
  mkdir -p "/var/run/VirtualBox"

  # Load new udev rule for module vboxdrv
  udevadm control --reload-rules

  # Show the license
  echo >&2
  echo '==> You must agree to the following license in order to use this program:' >&2
  echo '------------------------------------------------------------------------' >&2
  echo >&2
  cat "/opt/VirtualBox/LICENSE" >&2
  echo >&2
  echo '------------------------------------------------------------------------' >&2

  /bin/cat <<EOF

==> Add your user to the vboxusers group:
==> # gpasswd -a USERNAME vboxusers
==>
==> You must load vboxdrv module before starting VirtualBox:
==> # modprobe vboxdrv
==>
==> You must load vboxnetflt for Host Interface Networking:
==> # modprobe vboxnetflt
==>
==> You must load vboxnetadp for Host-Only networking:
==> # modprobe vboxnetadp
==>
==> To load it automatically, add vboxdrv module to the "MODULES" array
==> "/etc/rc.conf".
==>
==> Run \`/etc/rc.d/vboxdrv setup\` as root every time your kernel is
==> upgraded, to compile the module for the new kernel version.
==>
==> If USB does not work for you out-of-the-box, add the following line
==> to "/etc/fstab":
==> "none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0"

EOF
}

# $1: The new package version
# $2: The old package version
post_upgrade() {
  _NEWVERSION=`echo $1 | cut -f-1 -d '-'`
  _OLDVERSION=`echo $2 | cut -f-1 -d '-'`

  # Unload modules (if any)
  for _mod in vbox{drv,netadp,netflt}; do
    modprobe -r $_mod &> /dev/null
  done

  # Remove any stuff (e.g. module compilation files) from an old installation - old versions used
  # to use these directories.
  if [ "$_NEWVERSION" != "$_OLDVERSION" ]; then
    rm -Rf "/opt/VirtualBox-${_OLDVERSION}" &> /dev/null
  fi
  if [ "$1" != "$2" ]; then
    rm -Rf "/opt/virtualbox" &> /dev/null
  fi
  
  # Build new module
  /etc/rc.d/vboxdrv setup

  # Create the directory below if it doesn't exist
  mkdir -p "/var/run/VirtualBox"

  /bin/cat <<EOF

==> You must load vboxdrv module before starting VirtualBox:
==> # modprobe vboxdrv
==>
==> You must load vboxnetflt for Host Interface Networking:
==> # modprobe vboxnetflt
==>
==> You must load vboxnetadp for Host-Only networking:
==> # modprobe vboxnetadp
==>
==> To load it automatically, add vboxdrv module to the "MODULES" array
==> "/etc/rc.conf".
==>
==> Run \`/etc/rc.d/vboxdrv setup\` as root every time your kernel is
==> upgraded, to compile the module for the new kernel version.
==>
==> If USB does not work for you out-of-the-box, add the following line
==> to "/etc/fstab":
==> "none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0"

EOF

  if [ "`vercmp $_OLDVERSION 3.2.2`" -lt 0 ]; then
    /bin/cat <<EOF
==> IMPORTANT: This package now uses \`/etc/rc.d/vboxdrv setup\` instead
==>            of the old "vbox_build_module" script.

EOF
  fi
}

# $1: The old package version
pre_remove() {
  # Unload modules (if any)
  for _mod in vbox{drv,netadp,netflt}; do
    modprobe -r $_mod &> /dev/null
  done

  # Remove the module files
  rm -f "/lib/modules/`uname -r`/misc/"{vboxdrv,vboxnetadp,vboxnetflt}.ko

  # Remove any stuff remaining from the module compilation
  rm -Rf "/opt/VirtualBox"
}