david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/util/genefidsk

61 lines
895 B
Bash
Executable File

#!/bin/sh
#
# Generate an EFI bootable disk image
set -e
function help() {
echo "Usage: ${0} [OPTIONS] <ipxe.efi>"
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}