summaryrefslogtreecommitdiffstats
path: root/albootstrap
blob: 2538fa3c305707e22e7e386ff67a4aa789957bd5 (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
#!/bin/sh

# bootstrap an alpine installation

VERSION=1.0

usage() {
	echo "usage: $(basename $0) TARGETDIR"
	exit 2
}

die () {
	echo "$@" >&2
	exit 3
}

# set up vars
: ${WGET:="/usr/bin/wget"}
: ${TAR:="/usr/bin/tar"}
: ${MIRROR:="http://dev.alpinelinux.org/alpine/v1.7"}
: ${BASE:="base.tar.bz2"}
target=$1

# main
[ -z "$target" ] && usage
[ "$target" = "/" ] && die "Bootstrapping Alpine to '/' is probably not a good idea. Aborting..."

mkdir -p "$target"

echo ">>> Fetching $MIRROR/$BASE..."
$WGET -q -O - "$MIRROR/$BASE" | tar -C "$target" -jx || die "Failed to fetch or unpack $BASE"

echo ">>> Creating missing dirs..."
for dir in proc sys dev home; do
	mkdir -p "$target/$dir"
done

echo ">>> Installing busybox links..."
# create fake /proc/self/exe
mkdir -p "$target/proc/self"
ln -s /bin/busybox "$target/proc/self/exe"
chroot "$target" /bin/busybox --install -s
rm -r "$target/proc/self"

if [ -f /etc/resolv.conf ]; then
	echo ">>> Copying /etc/resolv.conf..."
	cp /etc/resolv.conf "$target/etc/"
fi

echo ">>> Setting up APK_PATH..."
echo "export APK_PATH=$MIRROR/apks" >> "$target/etc/profile"

echo ">>> Alpine bootstrap complete."