Contents of /trunk/virtualbox/vboxsf.sh
Parent Directory | Revision Log
Revision 1070 -
(show annotations)
(download)
(as text)
Mon Aug 9 20:31:47 2010 UTC (14 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 2883 byte(s)
Mon Aug 9 20:31:47 2010 UTC (14 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 2883 byte(s)
-added new files
1 | #!/bin/bash |
2 | # $Header: /root/magellan-cvs/src/virtualbox/vboxsf.sh,v 1.1 2010-08-09 20:31:47 niro Exp $ |
3 | # Compiles vboxsf module for given kernel |
4 | |
5 | die() { echo -e "${COLRED}$@${COLDEFAULT}"; exit 1; } |
6 | mecho() { echo -e "${COLGREEN}$@${COLDEFAULT}"; } |
7 | |
8 | kernel_major_version() |
9 | { |
10 | local ksrc="$@" |
11 | local kv |
12 | |
13 | if [[ -z ${ksrc} ]] |
14 | then |
15 | kv="$(uname -r|cut -d. -f1-2)" |
16 | else |
17 | local version |
18 | local patchlevel |
19 | |
20 | # get version from makefile |
21 | version=$(grep "^VERSION[[:space:]]*=[[:space:]]*[[:digit:]]" ${ksrc}/Makefile | sed "s/^.*=[[:space:]]*\([[:digit:]]\+\)/\1/g") |
22 | # get patchlevel from makefile |
23 | patchlevel=$(grep "^PATCHLEVEL[[:space:]]*=[[:space:]]*[[:digit:]]" ${ksrc}/Makefile | sed "s/^.*=[[:space:]]*\([[:digit:]]\+\)/\1/g") |
24 | # kernelversion |
25 | kv="${version}.${patchlevel}" |
26 | fi |
27 | |
28 | echo "${kv}" |
29 | } |
30 | |
31 | mod_suffix() |
32 | { |
33 | local ksrc="$@" |
34 | local mod_suffix |
35 | |
36 | if [[ $(kernel_major_version ${ksrc}) = 2.6 ]] |
37 | then |
38 | mod_suffix="ko" |
39 | else |
40 | mod_suffix="o" |
41 | fi |
42 | |
43 | echo "${mod_suffix}" |
44 | } |
45 | |
46 | PVER="@@PVER@@" |
47 | BUILDROOT="$(mktemp -d)" |
48 | SRCTARBALL="/usr/src/vboxsf/vboxsf-${PVER}.tar.bz2" |
49 | SRCDIR="${BUILDROOT}/vboxsf" |
50 | KERNEL_MODULE="vboxsf" |
51 | |
52 | COLRED="\033[1;6m\033[31m" |
53 | COLGREEN="\033[1;6m\033[32m" |
54 | COLDEFAULT="\033[0m" |
55 | |
56 | if [[ ${NOCOLORS} = true ]] |
57 | then |
58 | COLRED="" |
59 | COLGREEN="" |
60 | COLDEFAULT="" |
61 | fi |
62 | |
63 | # must be root |
64 | [[ $(id -u) != 0 ]] && die "You must be r00t!" |
65 | |
66 | # check for given argvs |
67 | for i in $* |
68 | do |
69 | case $1 in |
70 | --kernel-version) shift; KERNEL_VERSION="$1" ;; |
71 | --kernel-sources) shift; KERNEL_SOURCES="$1" ;; |
72 | esac |
73 | shift |
74 | done |
75 | |
76 | # some sane defaults |
77 | [[ -z ${KERNEL_VERSION} ]] && KERNEL_VERSION="$(uname -r)" |
78 | [[ -z ${KERNEL_SOURCES} ]] && KERNEL_SOURCES="/lib/modules/${KERNEL_VERSION}/source" |
79 | KERNEL_MODULE_DEST="/lib/modules/${KERNEL_VERSION}/video" |
80 | KERNEL_MODULE_SUFFIX="$(mod_suffix ${KERNEL_SOURCES})" |
81 | |
82 | if [[ -f ${KERNEL_MODULE_DEST}/${KERNEL_MODULE}.${KERNEL_MODULE_SUFFIX} ]] |
83 | then |
84 | mecho "Removing old ${KERNEL_MODULE}-module ..." |
85 | # try to unload the module |
86 | if [[ -n $(grep "${KERNEL_MODULE} " /proc/modules 2> /dev/null) ]] |
87 | then |
88 | modprobe -r ${KERNEL_MODULE} |
89 | fi |
90 | rm -f ${KERNEL_MODULE_DEST}/${KERNEL_MODULE}.${KERNEL_MODULE_SUFFIX} |
91 | fi |
92 | |
93 | # unpack src-tarball |
94 | mecho "Uncompressing src-tarball ..." |
95 | tar xjpf ${SRCTARBALL} -C ${BUILDROOT} || die |
96 | cd ${SRCDIR} |
97 | |
98 | mecho "Compiling ${KERNEL_MODULE}-module for kernel ${KERNEL_VERSION} ..." |
99 | gcc_major="$(gcc --version | grep gcc | cut -d' ' -f3|cut -d. -f1)" |
100 | export _POSIX2_VERSION="199209" |
101 | [[ $(kernel_major_version ${KERNEL_SOURCES}) = 2.6 ]] && cp 2.6.x/Makefile ${SRCDIR} |
102 | make -C ${KERNEL_SOURCES} V=0 M="$(pwd)" GCC_VER_MAJ="${gcc_major}" modules || die |
103 | |
104 | mecho "Installing ${KERNEL_MODULE}-module into ${KERNEL_MODULE_DEST} ..." |
105 | install -d ${KERNEL_MODULE_DEST} || die |
106 | install -m0644 ${KERNEL_MODULE}.${KERNEL_MODULE_SUFFIX} ${KERNEL_MODULE_DEST} || die |
107 | |
108 | mecho "Calculating module dependencies ..." |
109 | depmod -ae ${KERNEL_VERSION} |
110 | |
111 | exit 0 |