└── edge ├── Dockerfile ├── build.sh ├── mkimage-alpine.sh └── rootfs.tar /edge/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | ADD rootfs.tar / 3 | CMD ["/bin/sh"] 4 | -------------------------------------------------------------------------------- /edge/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -xe 4 | 5 | #wget -qO mkimage-alpine.sh https://github.com/docker/docker/raw/master/contrib/mkimage-alpine.sh && chmod +x mkimage-alpine.sh 6 | 7 | ARCH=armhf sh -x ./mkimage-alpine.sh 8 | -------------------------------------------------------------------------------- /edge/mkimage-alpine.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | [ $(id -u) -eq 0 ] || { 6 | printf >&2 '%s requires root\n' "$0" 7 | exit 1 8 | } 9 | 10 | usage() { 11 | printf >&2 '%s: [-r release] [-m mirror] [-s]\n' "$0" 12 | exit 1 13 | } 14 | 15 | tmp() { 16 | TMP=$(mktemp -d ${TMPDIR:-/var/tmp}/alpine-docker-XXXXXXXXXX) 17 | ROOTFS=$(mktemp -d ${TMPDIR:-/var/tmp}/alpine-docker-rootfs-XXXXXXXXXX) 18 | trap "rm -rf $TMP $ROOTFS" EXIT TERM INT 19 | } 20 | 21 | apkv() { 22 | curl -sSL $REPO/$ARCH/APKINDEX.tar.gz | tar -Oxz | 23 | grep '^P:apk-tools-static$' -A1 | tail -n1 | cut -d: -f2 24 | } 25 | 26 | getapk() { 27 | curl -sSL $REPO/$ARCH/apk-tools-static-$(apkv).apk | 28 | tar -xz -C $TMP sbin/apk.static 29 | } 30 | 31 | mkbase() { 32 | $TMP/sbin/apk.static --repository $REPO --update-cache --allow-untrusted \ 33 | --root $ROOTFS --initdb add alpine-base 34 | } 35 | 36 | conf() { 37 | printf '%s\n' $REPO > $ROOTFS/etc/apk/repositories 38 | } 39 | 40 | pack() { 41 | local id 42 | tar --numeric-owner -C $ROOTFS -c . > rootfs.tar 43 | 44 | id=$(cat rootfs.tar | docker import - alpine:$REL) 45 | docker tag $id alpine:latest 46 | docker run -i -t alpine printf 'alpine:%s with id=%s created!\n' $REL $id 47 | } 48 | 49 | save() { 50 | [ $SAVE -eq 1 ] || return 51 | 52 | tar --numeric-owner -C $ROOTFS -c . | xz > rootfs.tar.xz 53 | } 54 | 55 | while getopts "hr:m:s" opt; do 56 | case $opt in 57 | r) 58 | REL=$OPTARG 59 | ;; 60 | m) 61 | MIRROR=$OPTARG 62 | ;; 63 | s) 64 | SAVE=1 65 | ;; 66 | *) 67 | usage 68 | ;; 69 | esac 70 | done 71 | 72 | REL=${REL:-edge} 73 | MIRROR=${MIRROR:-http://nl.alpinelinux.org/alpine} 74 | SAVE=${SAVE:-0} 75 | REPO=$MIRROR/$REL/main 76 | ARCH=${ARCH:-$(uname -m)} 77 | 78 | tmp 79 | getapk 80 | mkbase 81 | conf 82 | pack 83 | save 84 | -------------------------------------------------------------------------------- /edge/rootfs.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/armbuild/alpine/3af29fce1100a58d445e0a85aaeb86328db9766a/edge/rootfs.tar --------------------------------------------------------------------------------