mirror of
https://github.com/hexagonal-sun/moss-kernel.git
synced 2026-04-17 21:58:54 -04:00
58 lines
1.7 KiB
Bash
Executable File
58 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Error if mkfs.ext4 is not installed
|
|
if ! command -v mkfs.ext4 &> /dev/null; then
|
|
echo "mkfs.ext4 could not be found. Please install e2fsprogs."
|
|
exit 1
|
|
fi
|
|
# Error if wget is not installed
|
|
if ! command -v wget &> /dev/null; then
|
|
echo "wget could not be found. Please install wget."
|
|
exit 1
|
|
fi
|
|
# Error if jq is not installed
|
|
if ! command -v jq &> /dev/null; then
|
|
echo "jq could not be found. Please install jq."
|
|
exit 1
|
|
fi
|
|
|
|
base="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )"
|
|
pushd "$base" &>/dev/null || exit 1
|
|
|
|
img="$base/moss.img"
|
|
|
|
if [ -f "$img" ]; then
|
|
rm "$img"
|
|
fi
|
|
|
|
touch "$img"
|
|
mkfs.ext4 "$img" 512M
|
|
|
|
# Download alpine minirootfs to $base/build/ if it doesn't exist
|
|
if [ ! -f "$base/build/alpine-minirootfs.tar.gz" ]; then
|
|
echo "Downloading alpine minirootfs..."
|
|
mkdir -p "$base/build"
|
|
wget -O "$base/build/alpine-minirootfs.tar.gz" https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/aarch64/alpine-minirootfs-3.23.3-aarch64.tar.gz
|
|
fi
|
|
|
|
# Extract to directory $base/build/rootfs
|
|
if [ -d "$base/build/rootfs" ]; then
|
|
rm -rf "$base/build/rootfs"
|
|
fi
|
|
mkdir -p build/rootfs
|
|
tar -xzf "$base/build/alpine-minirootfs.tar.gz" -C "$base/build/rootfs"
|
|
|
|
# Copy any extra binaries in $base/build/extra_bins to $base/build/rootfs/bin
|
|
if [ -d "$base/build/extra_bins" ]; then
|
|
cp "$base/build/extra_bins/"* "$base/build/rootfs/bin/"
|
|
fi
|
|
|
|
# Build and copy over usertest
|
|
cd "$base"/usertest
|
|
usertest_binary="$(cargo build --message-format=json | jq -r 'select(.reason == "compiler-artifact") | .filenames[]' | grep "usertest")"
|
|
cp "$usertest_binary" "$base/build/rootfs/bin/usertest"
|
|
|
|
# make image
|
|
yes | mkfs.ext4 -d "$base/build/rootfs" "$img" || true
|