docker-openwrt/build-rpi.sh

48 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# Extracts the rootfs from OpenWRT Raspberry Pi image available from
# https://downloads.openwrt.org/releases/19.07.3/targets/brcm2708/bcm2708/
# and builds a Docker container out of it
#
# Refer to https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi
# to choose the right image
#
# If building on x86, you must have qemu-arm and binfmt-support installed
set -e
IMG=${1:-'image.img'}
check_uid() {
if [[ $(id -u) -ne 0 ]]; then
echo "this script must be run as root"
exit 1
fi
}
mount_rootfs() {
echo "* mounting image"
offset=$(sfdisk -d ${IMG} | grep "${IMG}2" | sed -E 's/.*start=\s+([0-9]+).*/\1/g')
tmpdir=$(mktemp -u -p .)
mkdir -p "${tmpdir}"
mount -o loop"${LOOP_ARGS}",offset=$((512 * $offset)) -t ext4 ${IMG} ${tmpdir}
}
docker_build() {
echo "* building Docker image"
docker build \
--build-arg ROOT_PW="${ROOT_PW}" \
-t ${BUILD_TAG} -f Dockerfile.rpi ${tmpdir}
}
cleanup() {
echo "* cleaning up"
umount ${tmpdir} || true
rm -rf ${tmpdir}
}
check_uid
test -f ${IMG} || { echo 'no image file found'; exit 1; }
trap cleanup EXIT
mount_rootfs
docker_build