diff --git a/scripts/dual-boot.sh b/scripts/dual-boot.sh new file mode 100755 index 0000000..38985f1 --- /dev/null +++ b/scripts/dual-boot.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -e + +if [ -n "$1" ] +then + DISK="$1" +else + DISK=/dev/disk/by-partlabel/REDOX_INSTALL +fi + +if [ ! -b "${DISK}" ] +then + echo "$0: '${DISK}' is not a block device" >&2 + exit 1 +fi + +if [ -z "${ARCH}" ] +then + export ARCH=x86_64 +fi + +if [ -z "${CONFIG_NAME}" ] +then + export CONFIG_NAME=demo +fi + +IMAGE="build/${ARCH}/${CONFIG_NAME}/harddrive.img" +set -x +make "${IMAGE}" +sudo popsicle "${IMAGE}" "${DISK}" +set +x + +ESP="$(bootctl --print-esp-path)" +if [ -z "${ESP}" ] +then + echo "$0: no ESP found" >&2 + exit 1 +fi + +BOOTLOADER="cookbook/recipes/bootloader/target/${ARCH}-unknown-redox/stage/boot/bootloader.efi" +set -x +sudo mkdir -pv "${ESP}/EFI" "${ESP}/loader/entries" +sudo cp -v "${BOOTLOADER}" "${ESP}/EFI/redox.efi" +sudo tee "${ESP}/loader/entries/redox.conf" <