mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* consolidate and streamline build * fix workflow syntax * fix workflow syntax * fix workflow syntax * fix workflow syntax * fix build scripts * only build platform-specific system images * fix build script * more build fixes * fix * fix compat build for x86 * wat * checkout * Prevent rebuild of compiled artifacts * Update startos-iso.yaml * Update startos-iso.yaml * fix raspi build * handle missing platform better * reduce arm vcpus * remove arch and platform from fe config, add to patch db --------- Co-authored-by: Matt Hill <mattnine@protonmail.com>
87 lines
2.2 KiB
Bash
Executable File
87 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
function partition_for () {
|
|
if [[ "$1" =~ [0-9]+$ ]]; then
|
|
echo "$1p$2"
|
|
else
|
|
echo "$1$2"
|
|
fi
|
|
}
|
|
|
|
VERSION=$(cat VERSION.txt)
|
|
ENVIRONMENT=$(cat ENVIRONMENT.txt)
|
|
GIT_HASH=$(cat GIT_HASH.txt | head -c 7)
|
|
DATE=$(date +%Y%m%d)
|
|
|
|
ROOT_PART_END=7217792
|
|
|
|
VERSION_FULL="$VERSION-$GIT_HASH"
|
|
|
|
if [ -n "$ENVIRONMENT" ]; then
|
|
VERSION_FULL="$VERSION_FULL~$ENVIRONMENT"
|
|
fi
|
|
|
|
TARGET_NAME=startos-${VERSION_FULL}-${DATE}_raspberrypi.img
|
|
TARGET_SIZE=$[($ROOT_PART_END+1)*512]
|
|
|
|
rm -f $TARGET_NAME
|
|
truncate -s $TARGET_SIZE $TARGET_NAME
|
|
(
|
|
echo o
|
|
echo x
|
|
echo i
|
|
echo "0xcb15ae4d"
|
|
echo r
|
|
echo n
|
|
echo p
|
|
echo 1
|
|
echo 2048
|
|
echo 526335
|
|
echo t
|
|
echo c
|
|
echo n
|
|
echo p
|
|
echo 2
|
|
echo 526336
|
|
echo $ROOT_PART_END
|
|
echo a
|
|
echo 1
|
|
echo w
|
|
) | fdisk $TARGET_NAME
|
|
OUTPUT_DEVICE=$(sudo losetup --show -fP $TARGET_NAME)
|
|
sudo mkfs.ext4 `partition_for ${OUTPUT_DEVICE} 2`
|
|
sudo mkfs.vfat `partition_for ${OUTPUT_DEVICE} 1`
|
|
|
|
TMPDIR=$(mktemp -d)
|
|
|
|
sudo mount `partition_for ${OUTPUT_DEVICE} 2` $TMPDIR
|
|
sudo mkdir $TMPDIR/boot
|
|
sudo mount `partition_for ${OUTPUT_DEVICE} 1` $TMPDIR/boot
|
|
sudo unsquashfs -f -d $TMPDIR startos.raspberrypi.squashfs
|
|
REAL_GIT_HASH=$(cat $TMPDIR/usr/lib/startos/GIT_HASH.txt)
|
|
REAL_VERSION=$(cat $TMPDIR/usr/lib/startos/VERSION.txt)
|
|
REAL_ENVIRONMENT=$(cat $TMPDIR/usr/lib/startos/ENVIRONMENT.txt)
|
|
sudo sed -i 's| boot=embassy| init=/usr/lib/startos/scripts/init_resize\.sh|' $TMPDIR/boot/cmdline.txt
|
|
sudo cp ./build/raspberrypi/fstab $TMPDIR/etc/
|
|
sudo cp ./build/raspberrypi/init_resize.sh $TMPDIR/usr/lib/startos/scripts/init_resize.sh
|
|
sudo umount $TMPDIR/boot
|
|
sudo umount $TMPDIR
|
|
sudo losetup -d $OUTPUT_DEVICE
|
|
|
|
if [ "$ALLOW_VERSION_MISMATCH" != 1 ]; then
|
|
if [ "$(cat GIT_HASH.txt)" != "$REAL_GIT_HASH" ]; then
|
|
>&2 echo "startos.raspberrypi.squashfs GIT_HASH.txt mismatch"
|
|
>&2 echo "expected $REAL_GIT_HASH (dpkg) found $(cat GIT_HASH.txt) (repo)"
|
|
exit 1
|
|
fi
|
|
if [ "$(cat VERSION.txt)" != "$REAL_VERSION" ]; then
|
|
>&2 echo "startos.raspberrypi.squashfs VERSION.txt mismatch"
|
|
exit 1
|
|
fi
|
|
if [ "$(cat ENVIRONMENT.txt)" != "$REAL_ENVIRONMENT" ]; then
|
|
>&2 echo "startos.raspberrypi.squashfs ENVIRONMENT.txt mismatch"
|
|
exit 1
|
|
fi
|
|
fi |