penguin/monok8s

k8s image for Mono Gateway Dev Kit

alpine/build-rootfs.sh

raw ยท 2571 bytes

#!/bin/bash

set -euo pipefail

/preload-k8s-images.sh || exit 1

mkdir -p "$ROOTFS/var/cache/apk"
mkdir -p "$ROOTFS/opt/monok8s/config"
mkdir -p "$ROOTFS/build"
mkdir -p \
  "$ROOTFS/dev" \
  "$ROOTFS/proc" \
  "$ROOTFS/sys" \
  "$ROOTFS/run" \
  "$ROOTFS/data" \
  "$ROOTFS/var" \
  "$ROOTFS/tmp"

mount --bind /var/cache/apk "$ROOTFS/var/cache/apk"
mount --bind /dev  "$ROOTFS/dev"
mount --bind /proc "$ROOTFS/proc"
mount --bind /sys  "$ROOTFS/sys"
mount --bind /run  "$ROOTFS/run"

cp /usr/bin/qemu-aarch64-static "$ROOTFS/usr/bin/"
cp /etc/resolv.conf "$ROOTFS/etc/resolv.conf"
cp /build/crio.tar.gz "$ROOTFS/build/"
cp -r /build/rootfs/* "$ROOTFS/"

chroot "$ROOTFS" /bin/sh -c "ln -s /var/cache/apk /etc/apk/cache"
# chroot "$ROOTFS" /bin/sh -c "apk update"
chroot "$ROOTFS" /bin/sh -c "apk add bash curl"
cp "/install-packages.sh" "$ROOTFS/install-packages.sh"
chroot "$ROOTFS" /bin/bash /install-packages.sh || exit 1
rm "$ROOTFS/install-packages.sh"

/merge-rootfs.sh "/build/rootfs-extra" "$ROOTFS"

cp "/configure-system.sh" "$ROOTFS/configure-system.sh"
chroot "$ROOTFS" /bin/bash /configure-system.sh || exit 1
rm "$ROOTFS/configure-system.sh"

umount "$ROOTFS/var/cache/apk"
umount "$ROOTFS/dev"
umount "$ROOTFS/proc"
umount "$ROOTFS/sys"
umount "$ROOTFS/run"

rm -r "$ROOTFS/build"

### Begin making full disk image for the device
echo "##################################################### Packaging RootFS "$( du -sh "$ROOTFS/" )

IMG=output.img
SIZE=8GB

dd if=/dev/zero of="$IMG" bs=1 count=0 seek=$SIZE

sgdisk -o "$IMG" \
  -n 1:2048:+64M  -t 1:0700 -c 1:config \
  -n 2:0:+2G      -t 2:8300 -c 2:rootfsA \
  -n 3:0:+2G      -t 3:8300 -c 3:rootfsB \
  -n 4:0:0        -t 4:8300 -c 4:data

losetup -D
LOOP=$(losetup --find --show -P "$IMG")

/sync-loop.sh "$LOOP"

TMP_LOOP="/tmp$LOOP"
mkfs.vfat -F 32 -n MONOK8S_CFG "${TMP_LOOP}p1"
mkfs.ext4 -F "${TMP_LOOP}p2"
mkfs.ext4 -F "${TMP_LOOP}p3"
mkfs.ext4 -F "${TMP_LOOP}p4"

mkdir -p /mnt/img-root /mnt/data

mount "${TMP_LOOP}p2" /mnt/img-root
mount "${TMP_LOOP}p4" /mnt/data

# Put the real /var onto the data partition
cp -a "$ROOTFS/var" /mnt/data/
mkdir -p /mnt/data/etc-overlay/work
mkdir -p /mnt/data/etc-overlay/upper

# Copy rootfs to root partition, but exclude /var
cp -a "$ROOTFS"/. /mnt/img-root/
rm -rf /mnt/img-root/var
mkdir -p /mnt/img-root/var

mkdir -p /mnt/img-root/boot
cp /build/board.itb /mnt/img-root/boot/kernel.itb

sync
umount /mnt/img-root
umount /mnt/data

losetup -d "$LOOP"

echo "##################################################### Compressing Image"
gzip "/build/$IMG"