Skip to content

Instantly share code, notes, and snippets.

@pcarrier
Last active December 16, 2015 08:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pcarrier/5407853 to your computer and use it in GitHub Desktop.
Save pcarrier/5407853 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -e
log() {
str="alpbs: $1\n"
shift
printf "$str" "$@" >&2
}
confirm() {
printf 'confirmed? (y/*) ' >&2
read
[ ay == "a$REPLY" ] || exit 1
}
bootstrap() {
apk.static -U --allow-untrusted \
--root "$1" -X "$2" \
--initdb add $3
}
devices() {
mknod -m 666 "$1"/dev/full c 1 7
mknod -m 666 "$1"/dev/ptmx c 5 2
mknod -m 644 "$1"/dev/random c 1 8
mknod -m 644 "$1"/dev/urandom c 1 9
mknod -m 666 "$1"/dev/zero c 1 5
mknod -m 666 "$1"/dev/tty c 5 0
}
repo() {
mkdir -p "$1"/etc/apk
echo "$2" > "$1"/etc/apk/repositories
}
keys() {
wget -O - "$2"/x86_64/alpine-base-2.5.4-r0.apk | tar xzC "$1" etc/
}
install() {
log 'bootstrapping...'
bootstrap "$1" "$2" "$3"
log 'resolv.conf...'
cp /etc/resolv.conf "$1"/etc/resolv.conf
log 'devices...'
devices "$1"
log 'repo config...'
repo "$1" "$2"
log 'keys...'
keys "$1" "$2"
}
main() {
ROOT=${ALP_ROOT:-.}
REPO=${ALP_REPO:-http://dl-4.alpinelinux.org/alpine/v2.5/main}
PKG=${ALP_PKG:-apk-tools alpine-baselayout}
log 'root:\t%s' "$ROOT"
log 'repo:\t%s' "$REPO"
log 'pkgs:\t%s' "$PKG"
confirm
install "$ROOT" "$REPO" "$PKG"
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment