60 lines
1.3 KiB
Bash
60 lines
1.3 KiB
Bash
#! /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
|