Files
bearnet/image/build-image.sh
2026-06-22 11:42:33 +08:00

42 lines
981 B
Bash
Executable File

#!/bin/sh
IMAGE_NAME="${IMAGE_NAME:=alpine-vm}"
IMAGE_SIZE="${IMAGE_SIZE:-1G}"
IMAGE_FORMAT="${IMAGE_FORMAT:=raw}"
ALPINE_BRANCH="${ALPINE_BRANCH:=latest-stable}"
KERNEL_FLAVOR="${KERNEL_FLAVOR:=virt}"
IMAGE_FILE="vm.${IMAGE_FORMAT}"
SCRIPT_DIR="$PWD"
OVERLAY_DIR="${SCRIPT_DIR}/overlay"
CONFIGURE_SH="${SCRIPT_DIR}/configure.sh"
TMP=$(mktemp)
modprobe nbd max_parts=8 && [ -e /dev/nbd0 ] || mknod /dev/nbd0 b 43 0
cleanup() {
rm $TMP
}
trap cleanup INT TERM EXIT
# We use BIOS here to skip creating partitions
alpine-make-vm-image \
--boot-mode "BIOS" \
--branch "$ALPINE_BRANCH" \
--image-format "$IMAGE_FORMAT" \
--image-size "$IMAGE_SIZE" \
--kernel-flavor "$KERNEL_FLAVOR" \
--serial-console \
--fs-skel-dir "$OVERLAY_DIR" \
--fs-skel-chown root:root \
--script-chroot \
--packages "git curl docker cronie dhclient" \
"$IMAGE_FILE" \
"$CONFIGURE_SH" | tee $TMP
if grep -q "ERROR" $TMP; then
echo "BUILD FAILED"
exit 114514
fi