|
|
1.1 root 1: #!/bin/sh
2: # TrueCrypt build script
3:
1.1.1.4 ! root 4: TMP=.build.sh.tmp
1.1 root 5:
6: umask 022
7:
8: error ()
9: {
10: echo "Error: $*" >&2
11: }
12:
13: check_kernel_version ()
14: {
15: M="$1/Makefile"
1.1.1.3 root 16: [ ! -f "$M" ] && return 1
17:
1.1.1.2 root 18: VER=$(grep '^VERSION *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
19: VER=$VER.$(grep '^PATCHLEVEL *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
20: VER=$VER.$(grep '^SUBLEVEL *=' "$M" | head -n 1 | tr -d ' ' | cut -d'=' -f2)
1.1 root 21:
1.1.1.4 ! root 22: [ $VER = $(uname -r | cut -d- -f1 | cut -d. -f1-3) ] && return 0
1.1 root 23: return 1
24: }
25:
26: # Prerequisites
27:
28: echo "Checking build requirements..."
29:
1.1.1.3 root 30: [ $(id -u) -ne 0 ] && error "Administrator (root) privileges required for kernel source configuration." && exit 1
1.1 root 31:
32: V=""
33: case "$(uname -r)" in
34: [01].*) V=1 ;;
35: 2.[0-5].*) V=1 ;;
36: 2.6.[0-4]) V=1 ;;
37: 2.6.[0-4][.-]*) V=1 ;;
38: esac
39: [ "$V" ] && error "TrueCrypt requires Linux kernel 2.6.5 or later" && exit 1
40:
1.1.1.4 ! root 41: KERNEL_SRC=/usr/src/linux-source-$(uname -r)
! 42: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-source-$(uname -r | cut -d'-' -f1)
! 43: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-$(uname -r)
! 44: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux-$(uname -r | cut -d'-' -f1)
! 45: check_kernel_version "$KERNEL_SRC" || KERNEL_SRC=/usr/src/linux
! 46:
! 47: if ! check_kernel_version "$KERNEL_SRC"
1.1 root 48: then
49: echo -n "Linux kernel ($(uname -r)) source directory [$KERNEL_SRC]: "
50: read A
51: [ "$A" ] && KERNEL_SRC="$A"
1.1.1.3 root 52: [ ! -d "$KERNEL_SRC" ] && error "$KERNEL_SRC does not exit" && exit 1
1.1 root 53: fi
54:
55: if ! check_kernel_version "$KERNEL_SRC"
56: then
57: error "Kernel source version in $KERNEL_SRC is not $(uname -r)"
58: exit 1
59: fi
60:
1.1.1.4 ! root 61: if [ ! -f "$KERNEL_SRC/drivers/md/dm.h" ]
! 62: then
! 63: error "Kernel source code is incomplete - drivers/md/dm.h not found."
! 64: exit 1
! 65: fi
! 66:
1.1 root 67: if [ ! -f "$KERNEL_SRC/.config" ]
68: then
1.1.1.3 root 69: if [ -f /proc/config.gz -o -f /boot/config-$(uname -r) ]
70: then
71: echo -n "Configure kernel source according to the currently running kernel? [Y/n]: "
72: read A
73: if [ -z "$A" -o "$A" = "y" -o "$A" = "Y" ]
74: then
75: echo -n "Configuring kernel source in $KERNEL_SRC... "
76:
77: if [ -f /proc/config.gz ]
78: then
79: zcat /proc/config.gz >$KERNEL_SRC/.config || exit 1
80: else
81: cp /boot/config-$(uname -r) $KERNEL_SRC/.config || exit 1
82: fi
83:
1.1.1.4 ! root 84: make -C $KERNEL_SRC oldconfig </dev/zero >/dev/null || exit 1
1.1.1.3 root 85: echo Done.
86: fi
87: fi
88:
89: if [ ! -f "$KERNEL_SRC/.config" ]
90: then
91: error "Kernel not configured. You should run make -C $KERNEL_SRC config"
92: exit 1
93: fi
94: fi
95:
96: if [ ! -f "$KERNEL_SRC/scripts/modpost" -a ! -f "$KERNEL_SRC/scripts/mod/modpost" ]
97: then
98: if grep -q modules_prepare $KERNEL_SRC/Makefile
99: then
100: echo -n "Preparing kernel build system in $KERNEL_SRC... "
1.1.1.4 ! root 101: if ! make -C $KERNEL_SRC modules_prepare >/dev/null 2>$TMP
! 102: then
! 103: cat $TMP; rm $TMP
! 104: exit 1
! 105: fi
! 106: rm $TMP
1.1.1.3 root 107: echo Done.
108: else
109: error "Kernel build system not ready. You should run make -C $KERNEL_SRC modules"
110: exit 1
111: fi
1.1 root 112: fi
113:
1.1.1.4 ! root 114: grep -qi 'CONFIG_BLK_DEV_DM=[YM]' $KERNEL_SRC/.config || echo "Warning: kernel device mapper support (CONFIG_BLK_DEV_DM) is disabled in $KERNEL_SRC"
! 115:
! 116: if [ ! -f "$KERNEL_SRC/Module.symvers" ] && grep -qi 'CONFIG_MODVERSIONS=Y' $KERNEL_SRC/.config
1.1.1.2 root 117: then
1.1.1.4 ! root 118: echo -n "Building internal kernel modules (may take a long time)... "
! 119: if ! make -C $KERNEL_SRC modules >/dev/null 2>$TMP
! 120: then
! 121: cat $TMP; rm $TMP
! 122: exit 1
! 123: fi
! 124: rm $TMP
! 125: echo Done.
1.1.1.2 root 126: fi
127:
1.1 root 128:
129: # Build
130:
131: echo -n "Building kernel module... "
132: cd Kernel && make "KERNEL_SRC=$KERNEL_SRC" NO_WARNINGS=1 >/dev/null
133: [ $? -ne 0 ] && error "Failed to build kernel module" && exit 1
134: echo Done.
135:
136: echo -n "Building truecrypt... "
137: cd ../Cli && make NO_WARNINGS=1 >/dev/null
138: [ $? -ne 0 ] && error "Failed to build truecrypt" && exit 1
139: echo Done.
140:
141: exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.