Blob: scripts/build-image.sh
Raw · Blame
#!/bin/sh
set -eu
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
repo_dir=$(dirname "$script_dir")
cheesed_dir=${CHEESED_DIR:-"$repo_dir/../cheesed"}
build_dir=${MOUSE_BUILD_DIR:-"$repo_dir/build"}
target=${CHEESED_TARGET:-x86_64-unknown-linux-musl}
"$script_dir/fetch-sources.sh"
if [ "${MOUSE_SKIP_KERNEL:-0}" != 1 ]; then
"$script_dir/build-kernel.sh"
fi
"$script_dir/build-static-base.sh"
base_root="$build_dir/static/rootfs"
cheesed_binary=$(CHEESED_TARGET="$target" "$cheesed_dir/scripts/build-static.sh")
staging=$(mktemp -d "${TMPDIR:-/tmp}/mouse-rootfs.XXXXXX")
trap 'rm -rf "$staging"' EXIT HUP INT TERM
install -d -m 0755 \
"$staging/dev" \
"$staging/etc" \
"$staging/home" \
"$staging/media" \
"$staging/mnt" \
"$staging/proc" \
"$staging/root" \
"$staging/run" \
"$staging/sys" \
"$staging/usr/bin" \
"$staging/var"
chmod 0755 "$staging"
chmod 0700 "$staging/root"
install -d -m 1777 "$staging/tmp"
ln -s usr/bin "$staging/bin"
ln -s usr/bin "$staging/sbin"
ln -s bin "$staging/usr/sbin"
cp -R "$base_root/." "$staging/"
install -m 0755 "$cheesed_binary" "$staging/usr/bin/cheesed"
cp -R "$repo_dir/rootfs/." "$staging/"
ln -s mouse-release "$staging/etc/os-release"
"$script_dir/audit-static-base.sh" "$staging"
mkdir -p "$build_dir"
(
cd "$staging"
find . -print |
LC_ALL=C sort |
cpio -o --format newc -R 0:0 2>/dev/null |
gzip -9
) >"$build_dir/mouse-initramfs.cpio.gz"
printf '%s\n' "built $build_dir/vmlinuz-virt"
printf '%s\n' "built $build_dir/mouse-initramfs.cpio.gz"