image-builder/build/build-image.sh

48 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
set -euxo pipefail
# Clean build dir and remake
rm -rf /build/artifacts/*
mkdir -p /build/artifacts/dist
# Gentoo setup
mkdir -p /var/db/repos/gentoo
rm -f /var/db/repos/gentoo/metadata/timestamp.x
emerge-webrsync --quiet
eselect profile set default/linux/amd64/23.0/musl/hardened/selinux
# SquashFS tools needed for image generation
emerge squashfstools
# Copy in package list
mkdir -p /etc/portage/sets
cp /build/packages.txt /etc/portage/sets/halogenos
# Set install location
export ROOT="/build/artifacts/dist"
# Emerge all packages
emerge -j $(nproc) --quiet @halogenos
# Fix directory locations
mv /build/artifacts/dist/bin /build/artifacts/dist/usr/bin
mv /build/artifacts/dist/lib /build/artifacts/dist/usr/lib
mv /build/artifacts/dist/sbin /build/artifacts/dist/usr/sbin
# Include any additional files
# Make any additional config changes
# Create images dir and img files
mkdir -p /build/artifacts/images
dd if=/dev/zero of=/build/images/usr.img bs=1 count=0 seek=2G
dd if=/dev/zero of=/build/images/verity.img bs=1 count=0 seek=2000M
# Create squashfs
mksquashfs /build/artifacts/dist /build/artifacts/usr.squashfs
# Image squashfs filesystem onto usr img
dd if=/build/artifacts/usr.squashfs of=/build/images/usr.img
# Build verity