summaryrefslogtreecommitdiffstats
path: root/virtualbox_bin/vbox.install
blob: c4615dbdeb4a886ba57bf72165fd780ccbad7580 (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
_install_notes() {
    echo
    echo '---------------------------------------------------------------------------'
    echo ' IMPORTANT NOTES:'
    echo 
    echo '- Run "vbox_build_module" as root every time your kernel is upgraded, to'
    echo '  compile the module for the new kernel version.'
    echo '- Add your user to the vboxusers group:'
    echo '     gpasswd -a USERNAME vboxusers'
    echo '- Add "vboxdrv" to the MODULES array in your "/etc/rc.conf"'
    echo '- Add "vboxnetflt" to MODULES if you want Host Interface networking.'
    echo '- Add "vboxnetadp" to MODULES if you want Host-Only networking.'
    echo '- If USB does not work for you out-of-the-box, add the following line'
    echo '  to "/etc/fstab":'
    echo '     none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0'
    echo "---------------------------------------------------------------------------"
}

# $1: The new package version
post_install() {
    # Unload modules (if any).
    for i in vboxdrv vboxnetadp vboxnetflt; do
        modprobe -r $i &>/dev/null
    done

    # Build new module
    echo "Building VirtualBox modules..."
    /usr/bin/vbox_build_module &>/dev/null

    # Add vboxusers group
    #
    # This GID 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
    cat /opt/VirtualBox/LICENSE >&2
    echo >&2
    echo '---------------------------------------------------------------------------' >&2

    # Load the new module
    modprobe vboxdrv

    _install_notes
}

# $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 i in vboxdrv vboxnetadp vboxnetflt; do
        modprobe -r $i &>/dev/null
    done

    # Remove any stuff (eg. 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

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

    # Build new module
    echo "Building VirtualBox modules..."
    /usr/bin/vbox_build_module &>/dev/null
    
    # Load the new module
    modprobe vboxdrv

    _install_notes
}

# $1: The old package version
pre_remove() {
    # Unload modules (if any).
    for i in vboxdrv vboxnetadp vboxnetflt; do
        modprobe -r $i &>/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"
}