76 lines
1.6 KiB
Bash
Executable File
76 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -z $BANAN_DISK_IMAGE_PATH ]; then
|
|
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $BANAN_SYSROOT ]; then
|
|
echo "You must set the BANAN_SYSROOT environment variable" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $BANAN_UEFI_BOOT ]; then
|
|
echo "You must set the BANAN_UEFI_BOOT environment variable" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $BANAN_BUILD_DIR ]; then
|
|
echo "You must set the BANAN_BUILD_DIR environment variable" >&2
|
|
exit 1
|
|
fi
|
|
|
|
set -u
|
|
|
|
# create mount directory
|
|
MOUNT_DIR="$BANAN_BUILD_DIR/mount"
|
|
mkdir -p $MOUNT_DIR
|
|
|
|
# create empty disk image
|
|
DISK_SIZE=$((500 * 1024 * 1024))
|
|
truncate -s 0 "$BANAN_DISK_IMAGE_PATH"
|
|
truncate -s $DISK_SIZE "$BANAN_DISK_IMAGE_PATH"
|
|
|
|
# create partition table
|
|
if (($BANAN_UEFI_BOOT)); then
|
|
parted --script "$BANAN_DISK_IMAGE_PATH" \
|
|
mklabel gpt \
|
|
mkpart boot 1M 17M \
|
|
set 1 esp on \
|
|
mkpart root ext2 17M 100%
|
|
else
|
|
parted --script "$BANAN_DISK_IMAGE_PATH" \
|
|
mklabel gpt \
|
|
mkpart boot 1M 2M \
|
|
set 1 bios_grub on \
|
|
mkpart root ext2 2M 100%
|
|
fi
|
|
|
|
fdisk "$BANAN_DISK_IMAGE_PATH" >/dev/null << EOF
|
|
x
|
|
u
|
|
2
|
|
$BANAN_ROOT_PART_UUID
|
|
r
|
|
w
|
|
EOF
|
|
|
|
# create loop device
|
|
LOOP_DEV=$(sudo losetup --show -fP "$BANAN_DISK_IMAGE_PATH" || exit 1 )
|
|
PARTITION1=${LOOP_DEV}p1
|
|
PARTITION2=${LOOP_DEV}p2
|
|
if [ ! -b $PARTITION1 ] || [ ! -b $PARTITION2 ]; then
|
|
echo "Failed to probe partitions for banan disk image." >&2
|
|
sudo losetup -d $LOOP_DEV
|
|
exit 1
|
|
fi
|
|
|
|
# create root filesystem
|
|
sudo mkfs.ext2 -q $PARTITION2
|
|
|
|
# delete loop device
|
|
sudo losetup -d $LOOP_DEV
|
|
|
|
# install bootloader
|
|
$BANAN_SCRIPT_DIR/install-bootloader.sh || exit 1
|