#!/bin/sh # # Generate an EFI bootable disk image set -e function help() { echo "Usage: ${0} [OPTIONS] " echo echo "where OPTIONS are:" echo " -h Show this help" echo " -b Specify boot file name (e.g. bootx64.efi)" echo " -o FILE Save disk image to file" } BOOT=bootx64.efi while getopts "hb:o:" opt; do case ${opt} in h) help exit 0 ;; b) BOOT="${OPTARG}" ;; o) OUT="${OPTARG}" ;; esac done shift $((OPTIND - 1)) IN=$1 if [ -z "${IN}" ]; then echo "${0}: no input file given" >&2 help exit 1 fi if [ -z "${OUT}" ]; then echo "${0}: no output file given" >&2 help exit 1 fi # Create sparse output file rm -f ${OUT} truncate -s 1440K ${OUT} # Format disk mformat -i ${OUT} -f 1440 :: # Create directory structure mmd -i ${OUT} ::efi mmd -i ${OUT} ::efi/boot # Copy bootable image mcopy -i ${OUT} ${IN} ::efi/boot/${BOOT}