-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqapdec-chroot.sh
executable file
·64 lines (50 loc) · 1.36 KB
/
qapdec-chroot.sh
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
#!/bin/sh -e
SCRIPTDIR=$(cd `dirname $0` && echo $PWD)
ROOT="$SCRIPTDIR"
if [ ! -f "$ROOT/usr/bin/qapdec" ]; then
echo "error: $ROOT is not a qapdec chroot" >&2
exit 1
fi
cleanup() {
echo "Cleanup $ROOT"
umount -f "$ROOT/bin"
umount -f "$ROOT/dev"
umount -f "$ROOT/data"
umount -f "$ROOT/firmware"
umount -f "$ROOT/proc"
umount -f "$ROOT/tmp"
}
trap cleanup INT EXIT QUIT
mount -o remount,exec /data
umask 022
chown root:root -R "$ROOT"
mkdir -p "$ROOT/data"
mount --bind /data/ "$ROOT/data/"
mkdir -p "$ROOT/dev"
mount --bind /dev/ "$ROOT/dev/"
mkdir -p "$ROOT/firmware"
mount --bind /firmware/ "$ROOT/firmware/"
mkdir -p "$ROOT/proc"
mount --bind /proc/ "$ROOT/proc"
mkdir -p "$ROOT/tmp"
mount -t tmpfs none "$ROOT/tmp/"
mkdir -p "$ROOT/bin"
mount -t tmpfs none "$ROOT/bin/"
cp /bin/busybox "$ROOT/bin/"
ln -snf busybox "$ROOT/bin/cat"
ln -snf busybox "$ROOT/bin/cd"
ln -snf busybox "$ROOT/bin/chmod"
ln -snf busybox "$ROOT/bin/chown"
ln -snf busybox "$ROOT/bin/cmp"
ln -snf busybox "$ROOT/bin/cp"
ln -snf busybox "$ROOT/bin/echo"
ln -snf busybox "$ROOT/bin/false"
ln -snf busybox "$ROOT/bin/ls"
ln -snf busybox "$ROOT/bin/ln"
ln -snf busybox "$ROOT/bin/mkdir"
ln -snf busybox "$ROOT/bin/mv"
ln -snf busybox "$ROOT/bin/pwd"
ln -snf busybox "$ROOT/bin/rm"
ln -snf busybox "$ROOT/bin/sh"
ln -snf busybox "$ROOT/bin/true"
chroot "$ROOT" "$@"