#! /bin/bash set -e SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) REPO_ROOT="$SCRIPT_DIR/.." BUILD_DIR="$REPO_ROOT/builddbg" if [[ $# -ne 1 ]]; then echo "Must specify disk image name." fi dd if=/dev/zero of=$1 bs=1M count=200 dev=$(losetup --find --partscan --show $1) if [ -z "$dev" ]; then echo "Couldn't mount loopback device" exit 1; fi echo "Loopback device: ${dev}" EFI_DIR="$BUILD_DIR/efi" SYSROOT="$BUILD_DIR/sysroot" cleanup() { umount $EFI_DIR rm -rf $EFI_DIR umount $SYSROOT rm -rf $SYSROOT losetup -d $dev } trap cleanup EXIT parted -s $dev mklabel gpt mkpart EFI fat32 1MiB 10MiB mkpart ext2 10MiB 100% set 1 esp on mkfs.fat -F 12 "${dev}p1" mke2fs "${dev}p2" limine bios-install "${dev}" mkdir -p $EFI_DIR mount "${dev}p1" $EFI_DIR mkdir -p $EFI_DIR/EFI/BOOT cp /usr/share/limine/BOOTX64.EFI $EFI_DIR/EFI/BOOT cp /usr/share/limine/limine-bios.sys $EFI_DIR cp $REPO_ROOT/zion/boot/limine.conf $EFI_DIR/ cp $BUILD_DIR/zion/zion $EFI_DIR/ mkdir -p $EFI_DIR/sys cp $REPO_ROOT/sysroot/bin/yellowstone $EFI_DIR/sys/yellowstone cp $REPO_ROOT/sysroot/bin/denali $EFI_DIR/sys/denali cp $REPO_ROOT/sysroot/bin/victoriafalls $EFI_DIR/sys/victoriafalls mkdir -p $SYSROOT mount "${dev}p2" $SYSROOT rsync -a "$REPO_ROOT/sysroot" $BUILD_DIR ls $SYSROOT chown drew:drew $1